// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: k8s.io/api/core/v1/generated.proto
// Protobuf Java Version: 4.26.1

package io.kubernetes.client.proto;

public final class V1 {
  private V1() {}
  static {
    com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
      com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
      /* major= */ 4,
      /* minor= */ 26,
      /* patch= */ 1,
      /* suffix= */ "",
      V1.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 AWSElasticBlockStoreVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return Whether the volumeID field is set.
     */
    boolean hasVolumeID();
    /**
     * <pre>
     * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The volumeID.
     */
    java.lang.String getVolumeID();
    /**
     * <pre>
     * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The bytes for volumeID.
     */
    com.google.protobuf.ByteString
        getVolumeIDBytes();

    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * partition is the partition in the volume that you want to mount.
     * If omitted, the default is to mount by volume name.
     * Examples: For volume /dev/sda1, you specify the partition as "1".
     * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
     * +optional
     * </pre>
     *
     * <code>optional int32 partition = 3;</code>
     * @return Whether the partition field is set.
     */
    boolean hasPartition();
    /**
     * <pre>
     * partition is the partition in the volume that you want to mount.
     * If omitted, the default is to mount by volume name.
     * Examples: For volume /dev/sda1, you specify the partition as "1".
     * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
     * +optional
     * </pre>
     *
     * <code>optional int32 partition = 3;</code>
     * @return The partition.
     */
    int getPartition();

    /**
     * <pre>
     * readOnly value true will force the readOnly setting in VolumeMounts.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly value true will force the readOnly setting in VolumeMounts.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * Represents a Persistent Disk resource in AWS.
   *
   * An AWS EBS disk must exist before mounting to a container. The disk
   * must also be in the same AWS zone as the kubelet. An AWS EBS disk
   * can only be mounted as read/write once. AWS EBS volumes support
   * ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource}
   */
  public static final class AWSElasticBlockStoreVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource)
      AWSElasticBlockStoreVolumeSourceOrBuilder {
  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= */ "",
        AWSElasticBlockStoreVolumeSource.class.getName());
    }
    // Use AWSElasticBlockStoreVolumeSource.newBuilder() to construct.
    private AWSElasticBlockStoreVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AWSElasticBlockStoreVolumeSource() {
      volumeID_ = "";
      fsType_ = "";
    }

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

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

    private int bitField0_;
    public static final int VOLUMEID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeID_ = "";
    /**
     * <pre>
     * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return Whether the volumeID field is set.
     */
    @java.lang.Override
    public boolean hasVolumeID() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The volumeID.
     */
    @java.lang.Override
    public java.lang.String getVolumeID() {
      java.lang.Object ref = volumeID_;
      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()) {
          volumeID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The bytes for volumeID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeIDBytes() {
      java.lang.Object ref = volumeID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PARTITION_FIELD_NUMBER = 3;
    private int partition_ = 0;
    /**
     * <pre>
     * partition is the partition in the volume that you want to mount.
     * If omitted, the default is to mount by volume name.
     * Examples: For volume /dev/sda1, you specify the partition as "1".
     * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
     * +optional
     * </pre>
     *
     * <code>optional int32 partition = 3;</code>
     * @return Whether the partition field is set.
     */
    @java.lang.Override
    public boolean hasPartition() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * partition is the partition in the volume that you want to mount.
     * If omitted, the default is to mount by volume name.
     * Examples: For volume /dev/sda1, you specify the partition as "1".
     * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
     * +optional
     * </pre>
     *
     * <code>optional int32 partition = 3;</code>
     * @return The partition.
     */
    @java.lang.Override
    public int getPartition() {
      return partition_;
    }

    public static final int READONLY_FIELD_NUMBER = 4;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly value true will force the readOnly setting in VolumeMounts.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * readOnly value true will force the readOnly setting in VolumeMounts.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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, volumeID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, partition_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, readOnly_);
      }
      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, volumeID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, partition_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, readOnly_);
      }
      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.V1.AWSElasticBlockStoreVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource other = (io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource) obj;

      if (hasVolumeID() != other.hasVolumeID()) return false;
      if (hasVolumeID()) {
        if (!getVolumeID()
            .equals(other.getVolumeID())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasPartition() != other.hasPartition()) return false;
      if (hasPartition()) {
        if (getPartition()
            != other.getPartition()) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (hasVolumeID()) {
        hash = (37 * hash) + VOLUMEID_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeID().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasPartition()) {
        hash = (37 * hash) + PARTITION_FIELD_NUMBER;
        hash = (53 * hash) + getPartition();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource 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.V1.AWSElasticBlockStoreVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource 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.V1.AWSElasticBlockStoreVolumeSource 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>
     * Represents a Persistent Disk resource in AWS.
     *
     * An AWS EBS disk must exist before mounting to a container. The disk
     * must also be in the same AWS zone as the kubelet. An AWS EBS disk
     * can only be mounted as read/write once. AWS EBS volumes support
     * ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource)
        io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_AWSElasticBlockStoreVolumeSource_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        volumeID_ = "";
        fsType_ = "";
        partition_ = 0;
        readOnly_ = false;
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.volumeID_ = volumeID_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.partition_ = partition_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.AWSElasticBlockStoreVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance()) return this;
        if (other.hasVolumeID()) {
          volumeID_ = other.volumeID_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasPartition()) {
          setPartition(other.getPartition());
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        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: {
                volumeID_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                partition_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                readOnly_ = input.readBool();
                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 volumeID_ = "";
      /**
       * <pre>
       * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return Whether the volumeID field is set.
       */
      public boolean hasVolumeID() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return The volumeID.
       */
      public java.lang.String getVolumeID() {
        java.lang.Object ref = volumeID_;
        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()) {
            volumeID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return The bytes for volumeID.
       */
      public com.google.protobuf.ByteString
          getVolumeIDBytes() {
        java.lang.Object ref = volumeID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @param value The volumeID to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeID() {
        volumeID_ = getDefaultInstance().getVolumeID();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @param value The bytes for volumeID to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private int partition_ ;
      /**
       * <pre>
       * partition is the partition in the volume that you want to mount.
       * If omitted, the default is to mount by volume name.
       * Examples: For volume /dev/sda1, you specify the partition as "1".
       * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
       * +optional
       * </pre>
       *
       * <code>optional int32 partition = 3;</code>
       * @return Whether the partition field is set.
       */
      @java.lang.Override
      public boolean hasPartition() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * partition is the partition in the volume that you want to mount.
       * If omitted, the default is to mount by volume name.
       * Examples: For volume /dev/sda1, you specify the partition as "1".
       * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
       * +optional
       * </pre>
       *
       * <code>optional int32 partition = 3;</code>
       * @return The partition.
       */
      @java.lang.Override
      public int getPartition() {
        return partition_;
      }
      /**
       * <pre>
       * partition is the partition in the volume that you want to mount.
       * If omitted, the default is to mount by volume name.
       * Examples: For volume /dev/sda1, you specify the partition as "1".
       * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
       * +optional
       * </pre>
       *
       * <code>optional int32 partition = 3;</code>
       * @param value The partition to set.
       * @return This builder for chaining.
       */
      public Builder setPartition(int value) {

        partition_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * partition is the partition in the volume that you want to mount.
       * If omitted, the default is to mount by volume name.
       * Examples: For volume /dev/sda1, you specify the partition as "1".
       * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
       * +optional
       * </pre>
       *
       * <code>optional int32 partition = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPartition() {
        bitField0_ = (bitField0_ & ~0x00000004);
        partition_ = 0;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly value true will force the readOnly setting in VolumeMounts.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * readOnly value true will force the readOnly setting in VolumeMounts.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly value true will force the readOnly setting in VolumeMounts.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly value true will force the readOnly setting in VolumeMounts.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000008);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface AffinityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Affinity)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Describes node affinity scheduling rules for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
     * @return Whether the nodeAffinity field is set.
     */
    boolean hasNodeAffinity();
    /**
     * <pre>
     * Describes node affinity scheduling rules for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
     * @return The nodeAffinity.
     */
    io.kubernetes.client.proto.V1.NodeAffinity getNodeAffinity();
    /**
     * <pre>
     * Describes node affinity scheduling rules for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
     */
    io.kubernetes.client.proto.V1.NodeAffinityOrBuilder getNodeAffinityOrBuilder();

    /**
     * <pre>
     * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
     * @return Whether the podAffinity field is set.
     */
    boolean hasPodAffinity();
    /**
     * <pre>
     * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
     * @return The podAffinity.
     */
    io.kubernetes.client.proto.V1.PodAffinity getPodAffinity();
    /**
     * <pre>
     * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodAffinityOrBuilder getPodAffinityOrBuilder();

    /**
     * <pre>
     * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
     * @return Whether the podAntiAffinity field is set.
     */
    boolean hasPodAntiAffinity();
    /**
     * <pre>
     * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
     * @return The podAntiAffinity.
     */
    io.kubernetes.client.proto.V1.PodAntiAffinity getPodAntiAffinity();
    /**
     * <pre>
     * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
     */
    io.kubernetes.client.proto.V1.PodAntiAffinityOrBuilder getPodAntiAffinityOrBuilder();
  }
  /**
   * <pre>
   * Affinity is a group of affinity scheduling rules.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Affinity}
   */
  public static final class Affinity extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Affinity)
      AffinityOrBuilder {
  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= */ "",
        Affinity.class.getName());
    }
    // Use Affinity.newBuilder() to construct.
    private Affinity(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Affinity() {
    }

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

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

    private int bitField0_;
    public static final int NODEAFFINITY_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.NodeAffinity nodeAffinity_;
    /**
     * <pre>
     * Describes node affinity scheduling rules for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
     * @return Whether the nodeAffinity field is set.
     */
    @java.lang.Override
    public boolean hasNodeAffinity() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Describes node affinity scheduling rules for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
     * @return The nodeAffinity.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeAffinity getNodeAffinity() {
      return nodeAffinity_ == null ? io.kubernetes.client.proto.V1.NodeAffinity.getDefaultInstance() : nodeAffinity_;
    }
    /**
     * <pre>
     * Describes node affinity scheduling rules for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeAffinityOrBuilder getNodeAffinityOrBuilder() {
      return nodeAffinity_ == null ? io.kubernetes.client.proto.V1.NodeAffinity.getDefaultInstance() : nodeAffinity_;
    }

    public static final int PODAFFINITY_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.PodAffinity podAffinity_;
    /**
     * <pre>
     * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
     * @return Whether the podAffinity field is set.
     */
    @java.lang.Override
    public boolean hasPodAffinity() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
     * @return The podAffinity.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAffinity getPodAffinity() {
      return podAffinity_ == null ? io.kubernetes.client.proto.V1.PodAffinity.getDefaultInstance() : podAffinity_;
    }
    /**
     * <pre>
     * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAffinityOrBuilder getPodAffinityOrBuilder() {
      return podAffinity_ == null ? io.kubernetes.client.proto.V1.PodAffinity.getDefaultInstance() : podAffinity_;
    }

    public static final int PODANTIAFFINITY_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.PodAntiAffinity podAntiAffinity_;
    /**
     * <pre>
     * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
     * @return Whether the podAntiAffinity field is set.
     */
    @java.lang.Override
    public boolean hasPodAntiAffinity() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
     * @return The podAntiAffinity.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAntiAffinity getPodAntiAffinity() {
      return podAntiAffinity_ == null ? io.kubernetes.client.proto.V1.PodAntiAffinity.getDefaultInstance() : podAntiAffinity_;
    }
    /**
     * <pre>
     * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAntiAffinityOrBuilder getPodAntiAffinityOrBuilder() {
      return podAntiAffinity_ == null ? io.kubernetes.client.proto.V1.PodAntiAffinity.getDefaultInstance() : podAntiAffinity_;
    }

    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, getNodeAffinity());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getPodAffinity());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getPodAntiAffinity());
      }
      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, getNodeAffinity());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPodAffinity());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getPodAntiAffinity());
      }
      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.V1.Affinity)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Affinity other = (io.kubernetes.client.proto.V1.Affinity) obj;

      if (hasNodeAffinity() != other.hasNodeAffinity()) return false;
      if (hasNodeAffinity()) {
        if (!getNodeAffinity()
            .equals(other.getNodeAffinity())) return false;
      }
      if (hasPodAffinity() != other.hasPodAffinity()) return false;
      if (hasPodAffinity()) {
        if (!getPodAffinity()
            .equals(other.getPodAffinity())) return false;
      }
      if (hasPodAntiAffinity() != other.hasPodAntiAffinity()) return false;
      if (hasPodAntiAffinity()) {
        if (!getPodAntiAffinity()
            .equals(other.getPodAntiAffinity())) 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 (hasNodeAffinity()) {
        hash = (37 * hash) + NODEAFFINITY_FIELD_NUMBER;
        hash = (53 * hash) + getNodeAffinity().hashCode();
      }
      if (hasPodAffinity()) {
        hash = (37 * hash) + PODAFFINITY_FIELD_NUMBER;
        hash = (53 * hash) + getPodAffinity().hashCode();
      }
      if (hasPodAntiAffinity()) {
        hash = (37 * hash) + PODANTIAFFINITY_FIELD_NUMBER;
        hash = (53 * hash) + getPodAntiAffinity().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.Affinity 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.V1.Affinity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Affinity 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.V1.Affinity 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>
     * Affinity is a group of affinity scheduling rules.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Affinity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Affinity)
        io.kubernetes.client.proto.V1.AffinityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Affinity_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getNodeAffinityFieldBuilder();
          getPodAffinityFieldBuilder();
          getPodAntiAffinityFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        nodeAffinity_ = null;
        if (nodeAffinityBuilder_ != null) {
          nodeAffinityBuilder_.dispose();
          nodeAffinityBuilder_ = null;
        }
        podAffinity_ = null;
        if (podAffinityBuilder_ != null) {
          podAffinityBuilder_.dispose();
          podAffinityBuilder_ = null;
        }
        podAntiAffinity_ = null;
        if (podAntiAffinityBuilder_ != null) {
          podAntiAffinityBuilder_.dispose();
          podAntiAffinityBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.Affinity result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.nodeAffinity_ = nodeAffinityBuilder_ == null
              ? nodeAffinity_
              : nodeAffinityBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.podAffinity_ = podAffinityBuilder_ == null
              ? podAffinity_
              : podAffinityBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.podAntiAffinity_ = podAntiAffinityBuilder_ == null
              ? podAntiAffinity_
              : podAntiAffinityBuilder_.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.V1.Affinity) {
          return mergeFrom((io.kubernetes.client.proto.V1.Affinity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Affinity other) {
        if (other == io.kubernetes.client.proto.V1.Affinity.getDefaultInstance()) return this;
        if (other.hasNodeAffinity()) {
          mergeNodeAffinity(other.getNodeAffinity());
        }
        if (other.hasPodAffinity()) {
          mergePodAffinity(other.getPodAffinity());
        }
        if (other.hasPodAntiAffinity()) {
          mergePodAntiAffinity(other.getPodAntiAffinity());
        }
        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(
                    getNodeAffinityFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getPodAffinityFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getPodAntiAffinityFieldBuilder().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.V1.NodeAffinity nodeAffinity_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeAffinity, io.kubernetes.client.proto.V1.NodeAffinity.Builder, io.kubernetes.client.proto.V1.NodeAffinityOrBuilder> nodeAffinityBuilder_;
      /**
       * <pre>
       * Describes node affinity scheduling rules for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
       * @return Whether the nodeAffinity field is set.
       */
      public boolean hasNodeAffinity() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Describes node affinity scheduling rules for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
       * @return The nodeAffinity.
       */
      public io.kubernetes.client.proto.V1.NodeAffinity getNodeAffinity() {
        if (nodeAffinityBuilder_ == null) {
          return nodeAffinity_ == null ? io.kubernetes.client.proto.V1.NodeAffinity.getDefaultInstance() : nodeAffinity_;
        } else {
          return nodeAffinityBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Describes node affinity scheduling rules for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
       */
      public Builder setNodeAffinity(io.kubernetes.client.proto.V1.NodeAffinity value) {
        if (nodeAffinityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nodeAffinity_ = value;
        } else {
          nodeAffinityBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes node affinity scheduling rules for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
       */
      public Builder setNodeAffinity(
          io.kubernetes.client.proto.V1.NodeAffinity.Builder builderForValue) {
        if (nodeAffinityBuilder_ == null) {
          nodeAffinity_ = builderForValue.build();
        } else {
          nodeAffinityBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes node affinity scheduling rules for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
       */
      public Builder mergeNodeAffinity(io.kubernetes.client.proto.V1.NodeAffinity value) {
        if (nodeAffinityBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            nodeAffinity_ != null &&
            nodeAffinity_ != io.kubernetes.client.proto.V1.NodeAffinity.getDefaultInstance()) {
            getNodeAffinityBuilder().mergeFrom(value);
          } else {
            nodeAffinity_ = value;
          }
        } else {
          nodeAffinityBuilder_.mergeFrom(value);
        }
        if (nodeAffinity_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Describes node affinity scheduling rules for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
       */
      public Builder clearNodeAffinity() {
        bitField0_ = (bitField0_ & ~0x00000001);
        nodeAffinity_ = null;
        if (nodeAffinityBuilder_ != null) {
          nodeAffinityBuilder_.dispose();
          nodeAffinityBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes node affinity scheduling rules for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeAffinity.Builder getNodeAffinityBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getNodeAffinityFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Describes node affinity scheduling rules for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeAffinityOrBuilder getNodeAffinityOrBuilder() {
        if (nodeAffinityBuilder_ != null) {
          return nodeAffinityBuilder_.getMessageOrBuilder();
        } else {
          return nodeAffinity_ == null ?
              io.kubernetes.client.proto.V1.NodeAffinity.getDefaultInstance() : nodeAffinity_;
        }
      }
      /**
       * <pre>
       * Describes node affinity scheduling rules for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeAffinity nodeAffinity = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeAffinity, io.kubernetes.client.proto.V1.NodeAffinity.Builder, io.kubernetes.client.proto.V1.NodeAffinityOrBuilder> 
          getNodeAffinityFieldBuilder() {
        if (nodeAffinityBuilder_ == null) {
          nodeAffinityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeAffinity, io.kubernetes.client.proto.V1.NodeAffinity.Builder, io.kubernetes.client.proto.V1.NodeAffinityOrBuilder>(
                  getNodeAffinity(),
                  getParentForChildren(),
                  isClean());
          nodeAffinity_ = null;
        }
        return nodeAffinityBuilder_;
      }

      private io.kubernetes.client.proto.V1.PodAffinity podAffinity_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodAffinity, io.kubernetes.client.proto.V1.PodAffinity.Builder, io.kubernetes.client.proto.V1.PodAffinityOrBuilder> podAffinityBuilder_;
      /**
       * <pre>
       * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
       * @return Whether the podAffinity field is set.
       */
      public boolean hasPodAffinity() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
       * @return The podAffinity.
       */
      public io.kubernetes.client.proto.V1.PodAffinity getPodAffinity() {
        if (podAffinityBuilder_ == null) {
          return podAffinity_ == null ? io.kubernetes.client.proto.V1.PodAffinity.getDefaultInstance() : podAffinity_;
        } else {
          return podAffinityBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
       */
      public Builder setPodAffinity(io.kubernetes.client.proto.V1.PodAffinity value) {
        if (podAffinityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          podAffinity_ = value;
        } else {
          podAffinityBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
       */
      public Builder setPodAffinity(
          io.kubernetes.client.proto.V1.PodAffinity.Builder builderForValue) {
        if (podAffinityBuilder_ == null) {
          podAffinity_ = builderForValue.build();
        } else {
          podAffinityBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
       */
      public Builder mergePodAffinity(io.kubernetes.client.proto.V1.PodAffinity value) {
        if (podAffinityBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            podAffinity_ != null &&
            podAffinity_ != io.kubernetes.client.proto.V1.PodAffinity.getDefaultInstance()) {
            getPodAffinityBuilder().mergeFrom(value);
          } else {
            podAffinity_ = value;
          }
        } else {
          podAffinityBuilder_.mergeFrom(value);
        }
        if (podAffinity_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
       */
      public Builder clearPodAffinity() {
        bitField0_ = (bitField0_ & ~0x00000002);
        podAffinity_ = null;
        if (podAffinityBuilder_ != null) {
          podAffinityBuilder_.dispose();
          podAffinityBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinity.Builder getPodAffinityBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPodAffinityFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityOrBuilder getPodAffinityOrBuilder() {
        if (podAffinityBuilder_ != null) {
          return podAffinityBuilder_.getMessageOrBuilder();
        } else {
          return podAffinity_ == null ?
              io.kubernetes.client.proto.V1.PodAffinity.getDefaultInstance() : podAffinity_;
        }
      }
      /**
       * <pre>
       * Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinity podAffinity = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodAffinity, io.kubernetes.client.proto.V1.PodAffinity.Builder, io.kubernetes.client.proto.V1.PodAffinityOrBuilder> 
          getPodAffinityFieldBuilder() {
        if (podAffinityBuilder_ == null) {
          podAffinityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodAffinity, io.kubernetes.client.proto.V1.PodAffinity.Builder, io.kubernetes.client.proto.V1.PodAffinityOrBuilder>(
                  getPodAffinity(),
                  getParentForChildren(),
                  isClean());
          podAffinity_ = null;
        }
        return podAffinityBuilder_;
      }

      private io.kubernetes.client.proto.V1.PodAntiAffinity podAntiAffinity_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodAntiAffinity, io.kubernetes.client.proto.V1.PodAntiAffinity.Builder, io.kubernetes.client.proto.V1.PodAntiAffinityOrBuilder> podAntiAffinityBuilder_;
      /**
       * <pre>
       * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
       * @return Whether the podAntiAffinity field is set.
       */
      public boolean hasPodAntiAffinity() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
       * @return The podAntiAffinity.
       */
      public io.kubernetes.client.proto.V1.PodAntiAffinity getPodAntiAffinity() {
        if (podAntiAffinityBuilder_ == null) {
          return podAntiAffinity_ == null ? io.kubernetes.client.proto.V1.PodAntiAffinity.getDefaultInstance() : podAntiAffinity_;
        } else {
          return podAntiAffinityBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
       */
      public Builder setPodAntiAffinity(io.kubernetes.client.proto.V1.PodAntiAffinity value) {
        if (podAntiAffinityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          podAntiAffinity_ = value;
        } else {
          podAntiAffinityBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
       */
      public Builder setPodAntiAffinity(
          io.kubernetes.client.proto.V1.PodAntiAffinity.Builder builderForValue) {
        if (podAntiAffinityBuilder_ == null) {
          podAntiAffinity_ = builderForValue.build();
        } else {
          podAntiAffinityBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
       */
      public Builder mergePodAntiAffinity(io.kubernetes.client.proto.V1.PodAntiAffinity value) {
        if (podAntiAffinityBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            podAntiAffinity_ != null &&
            podAntiAffinity_ != io.kubernetes.client.proto.V1.PodAntiAffinity.getDefaultInstance()) {
            getPodAntiAffinityBuilder().mergeFrom(value);
          } else {
            podAntiAffinity_ = value;
          }
        } else {
          podAntiAffinityBuilder_.mergeFrom(value);
        }
        if (podAntiAffinity_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
       */
      public Builder clearPodAntiAffinity() {
        bitField0_ = (bitField0_ & ~0x00000004);
        podAntiAffinity_ = null;
        if (podAntiAffinityBuilder_ != null) {
          podAntiAffinityBuilder_.dispose();
          podAntiAffinityBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodAntiAffinity.Builder getPodAntiAffinityBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getPodAntiAffinityFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodAntiAffinityOrBuilder getPodAntiAffinityOrBuilder() {
        if (podAntiAffinityBuilder_ != null) {
          return podAntiAffinityBuilder_.getMessageOrBuilder();
        } else {
          return podAntiAffinity_ == null ?
              io.kubernetes.client.proto.V1.PodAntiAffinity.getDefaultInstance() : podAntiAffinity_;
        }
      }
      /**
       * <pre>
       * Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAntiAffinity podAntiAffinity = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodAntiAffinity, io.kubernetes.client.proto.V1.PodAntiAffinity.Builder, io.kubernetes.client.proto.V1.PodAntiAffinityOrBuilder> 
          getPodAntiAffinityFieldBuilder() {
        if (podAntiAffinityBuilder_ == null) {
          podAntiAffinityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodAntiAffinity, io.kubernetes.client.proto.V1.PodAntiAffinity.Builder, io.kubernetes.client.proto.V1.PodAntiAffinityOrBuilder>(
                  getPodAntiAffinity(),
                  getParentForChildren(),
                  isClean());
          podAntiAffinity_ = null;
        }
        return podAntiAffinityBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Affinity)
    }

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

    public static io.kubernetes.client.proto.V1.Affinity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface AppArmorProfileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.AppArmorProfile)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * type indicates which kind of AppArmor profile will be applied.
     * Valid options are:
     * Localhost - a profile pre-loaded on the node.
     * RuntimeDefault - the container runtime's default profile.
     * Unconfined - no AppArmor enforcement.
     * +unionDiscriminator
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * type indicates which kind of AppArmor profile will be applied.
     * Valid options are:
     * Localhost - a profile pre-loaded on the node.
     * RuntimeDefault - the container runtime's default profile.
     * Unconfined - no AppArmor enforcement.
     * +unionDiscriminator
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * type indicates which kind of AppArmor profile will be applied.
     * Valid options are:
     * Localhost - a profile pre-loaded on the node.
     * RuntimeDefault - the container runtime's default profile.
     * Unconfined - no AppArmor enforcement.
     * +unionDiscriminator
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * localhostProfile indicates a profile loaded on the node that should be used.
     * The profile must be preconfigured on the node to work.
     * Must match the loaded name of the profile.
     * Must be set if and only if type is "Localhost".
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return Whether the localhostProfile field is set.
     */
    boolean hasLocalhostProfile();
    /**
     * <pre>
     * localhostProfile indicates a profile loaded on the node that should be used.
     * The profile must be preconfigured on the node to work.
     * Must match the loaded name of the profile.
     * Must be set if and only if type is "Localhost".
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return The localhostProfile.
     */
    java.lang.String getLocalhostProfile();
    /**
     * <pre>
     * localhostProfile indicates a profile loaded on the node that should be used.
     * The profile must be preconfigured on the node to work.
     * Must match the loaded name of the profile.
     * Must be set if and only if type is "Localhost".
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return The bytes for localhostProfile.
     */
    com.google.protobuf.ByteString
        getLocalhostProfileBytes();
  }
  /**
   * <pre>
   * AppArmorProfile defines a pod or container's AppArmor settings.
   * +union
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.AppArmorProfile}
   */
  public static final class AppArmorProfile extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.AppArmorProfile)
      AppArmorProfileOrBuilder {
  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= */ "",
        AppArmorProfile.class.getName());
    }
    // Use AppArmorProfile.newBuilder() to construct.
    private AppArmorProfile(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AppArmorProfile() {
      type_ = "";
      localhostProfile_ = "";
    }

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

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

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * type indicates which kind of AppArmor profile will be applied.
     * Valid options are:
     * Localhost - a profile pre-loaded on the node.
     * RuntimeDefault - the container runtime's default profile.
     * Unconfined - no AppArmor enforcement.
     * +unionDiscriminator
     * </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 indicates which kind of AppArmor profile will be applied.
     * Valid options are:
     * Localhost - a profile pre-loaded on the node.
     * RuntimeDefault - the container runtime's default profile.
     * Unconfined - no AppArmor enforcement.
     * +unionDiscriminator
     * </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 indicates which kind of AppArmor profile will be applied.
     * Valid options are:
     * Localhost - a profile pre-loaded on the node.
     * RuntimeDefault - the container runtime's default profile.
     * Unconfined - no AppArmor enforcement.
     * +unionDiscriminator
     * </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 LOCALHOSTPROFILE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object localhostProfile_ = "";
    /**
     * <pre>
     * localhostProfile indicates a profile loaded on the node that should be used.
     * The profile must be preconfigured on the node to work.
     * Must match the loaded name of the profile.
     * Must be set if and only if type is "Localhost".
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return Whether the localhostProfile field is set.
     */
    @java.lang.Override
    public boolean hasLocalhostProfile() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * localhostProfile indicates a profile loaded on the node that should be used.
     * The profile must be preconfigured on the node to work.
     * Must match the loaded name of the profile.
     * Must be set if and only if type is "Localhost".
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return The localhostProfile.
     */
    @java.lang.Override
    public java.lang.String getLocalhostProfile() {
      java.lang.Object ref = localhostProfile_;
      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()) {
          localhostProfile_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * localhostProfile indicates a profile loaded on the node that should be used.
     * The profile must be preconfigured on the node to work.
     * Must match the loaded name of the profile.
     * Must be set if and only if type is "Localhost".
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return The bytes for localhostProfile.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLocalhostProfileBytes() {
      java.lang.Object ref = localhostProfile_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        localhostProfile_ = 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, localhostProfile_);
      }
      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, localhostProfile_);
      }
      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.V1.AppArmorProfile)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.AppArmorProfile other = (io.kubernetes.client.proto.V1.AppArmorProfile) obj;

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasLocalhostProfile() != other.hasLocalhostProfile()) return false;
      if (hasLocalhostProfile()) {
        if (!getLocalhostProfile()
            .equals(other.getLocalhostProfile())) 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 (hasLocalhostProfile()) {
        hash = (37 * hash) + LOCALHOSTPROFILE_FIELD_NUMBER;
        hash = (53 * hash) + getLocalhostProfile().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.AppArmorProfile 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.V1.AppArmorProfile parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.AppArmorProfile 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.V1.AppArmorProfile 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>
     * AppArmorProfile defines a pod or container's AppArmor settings.
     * +union
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.AppArmorProfile}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.AppArmorProfile)
        io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_AppArmorProfile_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.AppArmorProfile.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.AppArmorProfile 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.localhostProfile_ = localhostProfile_;
          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.V1.AppArmorProfile) {
          return mergeFrom((io.kubernetes.client.proto.V1.AppArmorProfile)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.AppArmorProfile other) {
        if (other == io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance()) return this;
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasLocalhostProfile()) {
          localhostProfile_ = other.localhostProfile_;
          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: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                localhostProfile_ = 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 type_ = "";
      /**
       * <pre>
       * type indicates which kind of AppArmor profile will be applied.
       * Valid options are:
       * Localhost - a profile pre-loaded on the node.
       * RuntimeDefault - the container runtime's default profile.
       * Unconfined - no AppArmor enforcement.
       * +unionDiscriminator
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * type indicates which kind of AppArmor profile will be applied.
       * Valid options are:
       * Localhost - a profile pre-loaded on the node.
       * RuntimeDefault - the container runtime's default profile.
       * Unconfined - no AppArmor enforcement.
       * +unionDiscriminator
       * </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 indicates which kind of AppArmor profile will be applied.
       * Valid options are:
       * Localhost - a profile pre-loaded on the node.
       * RuntimeDefault - the container runtime's default profile.
       * Unconfined - no AppArmor enforcement.
       * +unionDiscriminator
       * </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 indicates which kind of AppArmor profile will be applied.
       * Valid options are:
       * Localhost - a profile pre-loaded on the node.
       * RuntimeDefault - the container runtime's default profile.
       * Unconfined - no AppArmor enforcement.
       * +unionDiscriminator
       * </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 indicates which kind of AppArmor profile will be applied.
       * Valid options are:
       * Localhost - a profile pre-loaded on the node.
       * RuntimeDefault - the container runtime's default profile.
       * Unconfined - no AppArmor enforcement.
       * +unionDiscriminator
       * </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 indicates which kind of AppArmor profile will be applied.
       * Valid options are:
       * Localhost - a profile pre-loaded on the node.
       * RuntimeDefault - the container runtime's default profile.
       * Unconfined - no AppArmor enforcement.
       * +unionDiscriminator
       * </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 localhostProfile_ = "";
      /**
       * <pre>
       * localhostProfile indicates a profile loaded on the node that should be used.
       * The profile must be preconfigured on the node to work.
       * Must match the loaded name of the profile.
       * Must be set if and only if type is "Localhost".
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @return Whether the localhostProfile field is set.
       */
      public boolean hasLocalhostProfile() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * localhostProfile indicates a profile loaded on the node that should be used.
       * The profile must be preconfigured on the node to work.
       * Must match the loaded name of the profile.
       * Must be set if and only if type is "Localhost".
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @return The localhostProfile.
       */
      public java.lang.String getLocalhostProfile() {
        java.lang.Object ref = localhostProfile_;
        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()) {
            localhostProfile_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * localhostProfile indicates a profile loaded on the node that should be used.
       * The profile must be preconfigured on the node to work.
       * Must match the loaded name of the profile.
       * Must be set if and only if type is "Localhost".
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @return The bytes for localhostProfile.
       */
      public com.google.protobuf.ByteString
          getLocalhostProfileBytes() {
        java.lang.Object ref = localhostProfile_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          localhostProfile_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * localhostProfile indicates a profile loaded on the node that should be used.
       * The profile must be preconfigured on the node to work.
       * Must match the loaded name of the profile.
       * Must be set if and only if type is "Localhost".
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @param value The localhostProfile to set.
       * @return This builder for chaining.
       */
      public Builder setLocalhostProfile(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        localhostProfile_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * localhostProfile indicates a profile loaded on the node that should be used.
       * The profile must be preconfigured on the node to work.
       * Must match the loaded name of the profile.
       * Must be set if and only if type is "Localhost".
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLocalhostProfile() {
        localhostProfile_ = getDefaultInstance().getLocalhostProfile();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * localhostProfile indicates a profile loaded on the node that should be used.
       * The profile must be preconfigured on the node to work.
       * Must match the loaded name of the profile.
       * Must be set if and only if type is "Localhost".
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @param value The bytes for localhostProfile to set.
       * @return This builder for chaining.
       */
      public Builder setLocalhostProfileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        localhostProfile_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.AppArmorProfile)
    }

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

    public static io.kubernetes.client.proto.V1.AppArmorProfile getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface AttachedVolumeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.AttachedVolume)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <pre>
     * DevicePath represents the device path where the volume should be available
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return Whether the devicePath field is set.
     */
    boolean hasDevicePath();
    /**
     * <pre>
     * DevicePath represents the device path where the volume should be available
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return The devicePath.
     */
    java.lang.String getDevicePath();
    /**
     * <pre>
     * DevicePath represents the device path where the volume should be available
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return The bytes for devicePath.
     */
    com.google.protobuf.ByteString
        getDevicePathBytes();
  }
  /**
   * <pre>
   * AttachedVolume describes a volume attached to a node
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.AttachedVolume}
   */
  public static final class AttachedVolume extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.AttachedVolume)
      AttachedVolumeOrBuilder {
  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= */ "",
        AttachedVolume.class.getName());
    }
    // Use AttachedVolume.newBuilder() to construct.
    private AttachedVolume(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AttachedVolume() {
      name_ = "";
      devicePath_ = "";
    }

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

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name of the attached volume
     * </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 of the attached volume
     * </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 of the attached volume
     * </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 DEVICEPATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object devicePath_ = "";
    /**
     * <pre>
     * DevicePath represents the device path where the volume should be available
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return Whether the devicePath field is set.
     */
    @java.lang.Override
    public boolean hasDevicePath() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * DevicePath represents the device path where the volume should be available
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return The devicePath.
     */
    @java.lang.Override
    public java.lang.String getDevicePath() {
      java.lang.Object ref = devicePath_;
      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()) {
          devicePath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * DevicePath represents the device path where the volume should be available
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return The bytes for devicePath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDevicePathBytes() {
      java.lang.Object ref = devicePath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        devicePath_ = 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, devicePath_);
      }
      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, devicePath_);
      }
      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.V1.AttachedVolume)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.AttachedVolume other = (io.kubernetes.client.proto.V1.AttachedVolume) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasDevicePath() != other.hasDevicePath()) return false;
      if (hasDevicePath()) {
        if (!getDevicePath()
            .equals(other.getDevicePath())) 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 (hasDevicePath()) {
        hash = (37 * hash) + DEVICEPATH_FIELD_NUMBER;
        hash = (53 * hash) + getDevicePath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.AttachedVolume 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.V1.AttachedVolume parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.AttachedVolume 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.V1.AttachedVolume 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>
     * AttachedVolume describes a volume attached to a node
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.AttachedVolume}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.AttachedVolume)
        io.kubernetes.client.proto.V1.AttachedVolumeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_AttachedVolume_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.AttachedVolume.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.AttachedVolume 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.devicePath_ = devicePath_;
          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.V1.AttachedVolume) {
          return mergeFrom((io.kubernetes.client.proto.V1.AttachedVolume)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.AttachedVolume other) {
        if (other == io.kubernetes.client.proto.V1.AttachedVolume.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasDevicePath()) {
          devicePath_ = other.devicePath_;
          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: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                devicePath_ = 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 name_ = "";
      /**
       * <pre>
       * Name of the attached volume
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name of the attached volume
       * </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 of the attached volume
       * </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 of the attached volume
       * </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 of the attached volume
       * </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 of the attached volume
       * </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 devicePath_ = "";
      /**
       * <pre>
       * DevicePath represents the device path where the volume should be available
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @return Whether the devicePath field is set.
       */
      public boolean hasDevicePath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * DevicePath represents the device path where the volume should be available
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @return The devicePath.
       */
      public java.lang.String getDevicePath() {
        java.lang.Object ref = devicePath_;
        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()) {
            devicePath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * DevicePath represents the device path where the volume should be available
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @return The bytes for devicePath.
       */
      public com.google.protobuf.ByteString
          getDevicePathBytes() {
        java.lang.Object ref = devicePath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          devicePath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * DevicePath represents the device path where the volume should be available
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @param value The devicePath to set.
       * @return This builder for chaining.
       */
      public Builder setDevicePath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        devicePath_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * DevicePath represents the device path where the volume should be available
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDevicePath() {
        devicePath_ = getDefaultInstance().getDevicePath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * DevicePath represents the device path where the volume should be available
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @param value The bytes for devicePath to set.
       * @return This builder for chaining.
       */
      public Builder setDevicePathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        devicePath_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.AttachedVolume)
    }

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

    public static io.kubernetes.client.proto.V1.AttachedVolume getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface AvoidPodsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.AvoidPods)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Bounded-sized list of signatures of pods that should avoid this node, sorted
     * in timestamp order from oldest to newest. Size of the slice is unspecified.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PreferAvoidPodsEntry> 
        getPreferAvoidPodsList();
    /**
     * <pre>
     * Bounded-sized list of signatures of pods that should avoid this node, sorted
     * in timestamp order from oldest to newest. Size of the slice is unspecified.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
     */
    io.kubernetes.client.proto.V1.PreferAvoidPodsEntry getPreferAvoidPods(int index);
    /**
     * <pre>
     * Bounded-sized list of signatures of pods that should avoid this node, sorted
     * in timestamp order from oldest to newest. Size of the slice is unspecified.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
     */
    int getPreferAvoidPodsCount();
    /**
     * <pre>
     * Bounded-sized list of signatures of pods that should avoid this node, sorted
     * in timestamp order from oldest to newest. Size of the slice is unspecified.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PreferAvoidPodsEntryOrBuilder> 
        getPreferAvoidPodsOrBuilderList();
    /**
     * <pre>
     * Bounded-sized list of signatures of pods that should avoid this node, sorted
     * in timestamp order from oldest to newest. Size of the slice is unspecified.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
     */
    io.kubernetes.client.proto.V1.PreferAvoidPodsEntryOrBuilder getPreferAvoidPodsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * AvoidPods describes pods that should avoid this node. This is the value for a
   * Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and
   * will eventually become a field of NodeStatus.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.AvoidPods}
   */
  public static final class AvoidPods extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.AvoidPods)
      AvoidPodsOrBuilder {
  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= */ "",
        AvoidPods.class.getName());
    }
    // Use AvoidPods.newBuilder() to construct.
    private AvoidPods(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AvoidPods() {
      preferAvoidPods_ = java.util.Collections.emptyList();
    }

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

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

    public static final int PREFERAVOIDPODS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PreferAvoidPodsEntry> preferAvoidPods_;
    /**
     * <pre>
     * Bounded-sized list of signatures of pods that should avoid this node, sorted
     * in timestamp order from oldest to newest. Size of the slice is unspecified.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PreferAvoidPodsEntry> getPreferAvoidPodsList() {
      return preferAvoidPods_;
    }
    /**
     * <pre>
     * Bounded-sized list of signatures of pods that should avoid this node, sorted
     * in timestamp order from oldest to newest. Size of the slice is unspecified.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PreferAvoidPodsEntryOrBuilder> 
        getPreferAvoidPodsOrBuilderList() {
      return preferAvoidPods_;
    }
    /**
     * <pre>
     * Bounded-sized list of signatures of pods that should avoid this node, sorted
     * in timestamp order from oldest to newest. Size of the slice is unspecified.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
     */
    @java.lang.Override
    public int getPreferAvoidPodsCount() {
      return preferAvoidPods_.size();
    }
    /**
     * <pre>
     * Bounded-sized list of signatures of pods that should avoid this node, sorted
     * in timestamp order from oldest to newest. Size of the slice is unspecified.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PreferAvoidPodsEntry getPreferAvoidPods(int index) {
      return preferAvoidPods_.get(index);
    }
    /**
     * <pre>
     * Bounded-sized list of signatures of pods that should avoid this node, sorted
     * in timestamp order from oldest to newest. Size of the slice is unspecified.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PreferAvoidPodsEntryOrBuilder getPreferAvoidPodsOrBuilder(
        int index) {
      return preferAvoidPods_.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 {
      for (int i = 0; i < preferAvoidPods_.size(); i++) {
        output.writeMessage(1, preferAvoidPods_.get(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 < preferAvoidPods_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, preferAvoidPods_.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.V1.AvoidPods)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.AvoidPods other = (io.kubernetes.client.proto.V1.AvoidPods) obj;

      if (!getPreferAvoidPodsList()
          .equals(other.getPreferAvoidPodsList())) 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 (getPreferAvoidPodsCount() > 0) {
        hash = (37 * hash) + PREFERAVOIDPODS_FIELD_NUMBER;
        hash = (53 * hash) + getPreferAvoidPodsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.AvoidPods 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.V1.AvoidPods parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.AvoidPods 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.V1.AvoidPods 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>
     * AvoidPods describes pods that should avoid this node. This is the value for a
     * Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and
     * will eventually become a field of NodeStatus.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.AvoidPods}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.AvoidPods)
        io.kubernetes.client.proto.V1.AvoidPodsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_AvoidPods_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.AvoidPods.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (preferAvoidPodsBuilder_ == null) {
          preferAvoidPods_ = java.util.Collections.emptyList();
        } else {
          preferAvoidPods_ = null;
          preferAvoidPodsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.AvoidPods result) {
        if (preferAvoidPodsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            preferAvoidPods_ = java.util.Collections.unmodifiableList(preferAvoidPods_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.preferAvoidPods_ = preferAvoidPods_;
        } else {
          result.preferAvoidPods_ = preferAvoidPodsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.AvoidPods result) {
        int from_bitField0_ = bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.AvoidPods other) {
        if (other == io.kubernetes.client.proto.V1.AvoidPods.getDefaultInstance()) return this;
        if (preferAvoidPodsBuilder_ == null) {
          if (!other.preferAvoidPods_.isEmpty()) {
            if (preferAvoidPods_.isEmpty()) {
              preferAvoidPods_ = other.preferAvoidPods_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePreferAvoidPodsIsMutable();
              preferAvoidPods_.addAll(other.preferAvoidPods_);
            }
            onChanged();
          }
        } else {
          if (!other.preferAvoidPods_.isEmpty()) {
            if (preferAvoidPodsBuilder_.isEmpty()) {
              preferAvoidPodsBuilder_.dispose();
              preferAvoidPodsBuilder_ = null;
              preferAvoidPods_ = other.preferAvoidPods_;
              bitField0_ = (bitField0_ & ~0x00000001);
              preferAvoidPodsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPreferAvoidPodsFieldBuilder() : null;
            } else {
              preferAvoidPodsBuilder_.addAllMessages(other.preferAvoidPods_);
            }
          }
        }
        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.V1.PreferAvoidPodsEntry m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.parser(),
                        extensionRegistry);
                if (preferAvoidPodsBuilder_ == null) {
                  ensurePreferAvoidPodsIsMutable();
                  preferAvoidPods_.add(m);
                } else {
                  preferAvoidPodsBuilder_.addMessage(m);
                }
                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.util.List<io.kubernetes.client.proto.V1.PreferAvoidPodsEntry> preferAvoidPods_ =
        java.util.Collections.emptyList();
      private void ensurePreferAvoidPodsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          preferAvoidPods_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PreferAvoidPodsEntry>(preferAvoidPods_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PreferAvoidPodsEntry, io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder, io.kubernetes.client.proto.V1.PreferAvoidPodsEntryOrBuilder> preferAvoidPodsBuilder_;

      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PreferAvoidPodsEntry> getPreferAvoidPodsList() {
        if (preferAvoidPodsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(preferAvoidPods_);
        } else {
          return preferAvoidPodsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public int getPreferAvoidPodsCount() {
        if (preferAvoidPodsBuilder_ == null) {
          return preferAvoidPods_.size();
        } else {
          return preferAvoidPodsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PreferAvoidPodsEntry getPreferAvoidPods(int index) {
        if (preferAvoidPodsBuilder_ == null) {
          return preferAvoidPods_.get(index);
        } else {
          return preferAvoidPodsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public Builder setPreferAvoidPods(
          int index, io.kubernetes.client.proto.V1.PreferAvoidPodsEntry value) {
        if (preferAvoidPodsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferAvoidPodsIsMutable();
          preferAvoidPods_.set(index, value);
          onChanged();
        } else {
          preferAvoidPodsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public Builder setPreferAvoidPods(
          int index, io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder builderForValue) {
        if (preferAvoidPodsBuilder_ == null) {
          ensurePreferAvoidPodsIsMutable();
          preferAvoidPods_.set(index, builderForValue.build());
          onChanged();
        } else {
          preferAvoidPodsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public Builder addPreferAvoidPods(io.kubernetes.client.proto.V1.PreferAvoidPodsEntry value) {
        if (preferAvoidPodsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferAvoidPodsIsMutable();
          preferAvoidPods_.add(value);
          onChanged();
        } else {
          preferAvoidPodsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public Builder addPreferAvoidPods(
          int index, io.kubernetes.client.proto.V1.PreferAvoidPodsEntry value) {
        if (preferAvoidPodsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferAvoidPodsIsMutable();
          preferAvoidPods_.add(index, value);
          onChanged();
        } else {
          preferAvoidPodsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public Builder addPreferAvoidPods(
          io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder builderForValue) {
        if (preferAvoidPodsBuilder_ == null) {
          ensurePreferAvoidPodsIsMutable();
          preferAvoidPods_.add(builderForValue.build());
          onChanged();
        } else {
          preferAvoidPodsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public Builder addPreferAvoidPods(
          int index, io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder builderForValue) {
        if (preferAvoidPodsBuilder_ == null) {
          ensurePreferAvoidPodsIsMutable();
          preferAvoidPods_.add(index, builderForValue.build());
          onChanged();
        } else {
          preferAvoidPodsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public Builder addAllPreferAvoidPods(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PreferAvoidPodsEntry> values) {
        if (preferAvoidPodsBuilder_ == null) {
          ensurePreferAvoidPodsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, preferAvoidPods_);
          onChanged();
        } else {
          preferAvoidPodsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public Builder clearPreferAvoidPods() {
        if (preferAvoidPodsBuilder_ == null) {
          preferAvoidPods_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          preferAvoidPodsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public Builder removePreferAvoidPods(int index) {
        if (preferAvoidPodsBuilder_ == null) {
          ensurePreferAvoidPodsIsMutable();
          preferAvoidPods_.remove(index);
          onChanged();
        } else {
          preferAvoidPodsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder getPreferAvoidPodsBuilder(
          int index) {
        return getPreferAvoidPodsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PreferAvoidPodsEntryOrBuilder getPreferAvoidPodsOrBuilder(
          int index) {
        if (preferAvoidPodsBuilder_ == null) {
          return preferAvoidPods_.get(index);  } else {
          return preferAvoidPodsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PreferAvoidPodsEntryOrBuilder> 
           getPreferAvoidPodsOrBuilderList() {
        if (preferAvoidPodsBuilder_ != null) {
          return preferAvoidPodsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(preferAvoidPods_);
        }
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder addPreferAvoidPodsBuilder() {
        return getPreferAvoidPodsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder addPreferAvoidPodsBuilder(
          int index) {
        return getPreferAvoidPodsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * Bounded-sized list of signatures of pods that should avoid this node, sorted
       * in timestamp order from oldest to newest. Size of the slice is unspecified.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferAvoidPodsEntry preferAvoidPods = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder> 
           getPreferAvoidPodsBuilderList() {
        return getPreferAvoidPodsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PreferAvoidPodsEntry, io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder, io.kubernetes.client.proto.V1.PreferAvoidPodsEntryOrBuilder> 
          getPreferAvoidPodsFieldBuilder() {
        if (preferAvoidPodsBuilder_ == null) {
          preferAvoidPodsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PreferAvoidPodsEntry, io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder, io.kubernetes.client.proto.V1.PreferAvoidPodsEntryOrBuilder>(
                  preferAvoidPods_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          preferAvoidPods_ = null;
        }
        return preferAvoidPodsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.AvoidPods)
    }

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

    public static io.kubernetes.client.proto.V1.AvoidPods getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface AzureDiskVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.AzureDiskVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * diskName is the Name of the data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskName = 1;</code>
     * @return Whether the diskName field is set.
     */
    boolean hasDiskName();
    /**
     * <pre>
     * diskName is the Name of the data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskName = 1;</code>
     * @return The diskName.
     */
    java.lang.String getDiskName();
    /**
     * <pre>
     * diskName is the Name of the data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskName = 1;</code>
     * @return The bytes for diskName.
     */
    com.google.protobuf.ByteString
        getDiskNameBytes();

    /**
     * <pre>
     * diskURI is the URI of data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskURI = 2;</code>
     * @return Whether the diskURI field is set.
     */
    boolean hasDiskURI();
    /**
     * <pre>
     * diskURI is the URI of data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskURI = 2;</code>
     * @return The diskURI.
     */
    java.lang.String getDiskURI();
    /**
     * <pre>
     * diskURI is the URI of data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskURI = 2;</code>
     * @return The bytes for diskURI.
     */
    com.google.protobuf.ByteString
        getDiskURIBytes();

    /**
     * <pre>
     * cachingMode is the Host Caching mode: None, Read Only, Read Write.
     * +optional
     * </pre>
     *
     * <code>optional string cachingMode = 3;</code>
     * @return Whether the cachingMode field is set.
     */
    boolean hasCachingMode();
    /**
     * <pre>
     * cachingMode is the Host Caching mode: None, Read Only, Read Write.
     * +optional
     * </pre>
     *
     * <code>optional string cachingMode = 3;</code>
     * @return The cachingMode.
     */
    java.lang.String getCachingMode();
    /**
     * <pre>
     * cachingMode is the Host Caching mode: None, Read Only, Read Write.
     * +optional
     * </pre>
     *
     * <code>optional string cachingMode = 3;</code>
     * @return The bytes for cachingMode.
     */
    com.google.protobuf.ByteString
        getCachingModeBytes();

    /**
     * <pre>
     * fsType is Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 5;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 5;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
     * </pre>
     *
     * <code>optional string kind = 6;</code>
     * @return Whether the kind field is set.
     */
    boolean hasKind();
    /**
     * <pre>
     * kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
     * </pre>
     *
     * <code>optional string kind = 6;</code>
     * @return The kind.
     */
    java.lang.String getKind();
    /**
     * <pre>
     * kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
     * </pre>
     *
     * <code>optional string kind = 6;</code>
     * @return The bytes for kind.
     */
    com.google.protobuf.ByteString
        getKindBytes();
  }
  /**
   * <pre>
   * AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.AzureDiskVolumeSource}
   */
  public static final class AzureDiskVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.AzureDiskVolumeSource)
      AzureDiskVolumeSourceOrBuilder {
  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= */ "",
        AzureDiskVolumeSource.class.getName());
    }
    // Use AzureDiskVolumeSource.newBuilder() to construct.
    private AzureDiskVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AzureDiskVolumeSource() {
      diskName_ = "";
      diskURI_ = "";
      cachingMode_ = "";
      fsType_ = "";
      kind_ = "";
    }

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

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

    private int bitField0_;
    public static final int DISKNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object diskName_ = "";
    /**
     * <pre>
     * diskName is the Name of the data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskName = 1;</code>
     * @return Whether the diskName field is set.
     */
    @java.lang.Override
    public boolean hasDiskName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * diskName is the Name of the data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskName = 1;</code>
     * @return The diskName.
     */
    @java.lang.Override
    public java.lang.String getDiskName() {
      java.lang.Object ref = diskName_;
      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()) {
          diskName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * diskName is the Name of the data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskName = 1;</code>
     * @return The bytes for diskName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDiskNameBytes() {
      java.lang.Object ref = diskName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        diskName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DISKURI_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object diskURI_ = "";
    /**
     * <pre>
     * diskURI is the URI of data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskURI = 2;</code>
     * @return Whether the diskURI field is set.
     */
    @java.lang.Override
    public boolean hasDiskURI() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * diskURI is the URI of data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskURI = 2;</code>
     * @return The diskURI.
     */
    @java.lang.Override
    public java.lang.String getDiskURI() {
      java.lang.Object ref = diskURI_;
      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()) {
          diskURI_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * diskURI is the URI of data disk in the blob storage
     * </pre>
     *
     * <code>optional string diskURI = 2;</code>
     * @return The bytes for diskURI.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDiskURIBytes() {
      java.lang.Object ref = diskURI_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        diskURI_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CACHINGMODE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object cachingMode_ = "";
    /**
     * <pre>
     * cachingMode is the Host Caching mode: None, Read Only, Read Write.
     * +optional
     * </pre>
     *
     * <code>optional string cachingMode = 3;</code>
     * @return Whether the cachingMode field is set.
     */
    @java.lang.Override
    public boolean hasCachingMode() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * cachingMode is the Host Caching mode: None, Read Only, Read Write.
     * +optional
     * </pre>
     *
     * <code>optional string cachingMode = 3;</code>
     * @return The cachingMode.
     */
    @java.lang.Override
    public java.lang.String getCachingMode() {
      java.lang.Object ref = cachingMode_;
      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()) {
          cachingMode_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * cachingMode is the Host Caching mode: None, Read Only, Read Write.
     * +optional
     * </pre>
     *
     * <code>optional string cachingMode = 3;</code>
     * @return The bytes for cachingMode.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCachingModeBytes() {
      java.lang.Object ref = cachingMode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cachingMode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * fsType is Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 5;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 5;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * readOnly Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 5;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int KIND_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object kind_ = "";
    /**
     * <pre>
     * kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
     * </pre>
     *
     * <code>optional string kind = 6;</code>
     * @return Whether the kind field is set.
     */
    @java.lang.Override
    public boolean hasKind() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
     * </pre>
     *
     * <code>optional string kind = 6;</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 expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
     * </pre>
     *
     * <code>optional string kind = 6;</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;
      }
    }

    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, diskName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, diskURI_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, cachingMode_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, fsType_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(5, readOnly_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, kind_);
      }
      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, diskName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, diskURI_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, cachingMode_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, fsType_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, readOnly_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, kind_);
      }
      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.V1.AzureDiskVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.AzureDiskVolumeSource other = (io.kubernetes.client.proto.V1.AzureDiskVolumeSource) obj;

      if (hasDiskName() != other.hasDiskName()) return false;
      if (hasDiskName()) {
        if (!getDiskName()
            .equals(other.getDiskName())) return false;
      }
      if (hasDiskURI() != other.hasDiskURI()) return false;
      if (hasDiskURI()) {
        if (!getDiskURI()
            .equals(other.getDiskURI())) return false;
      }
      if (hasCachingMode() != other.hasCachingMode()) return false;
      if (hasCachingMode()) {
        if (!getCachingMode()
            .equals(other.getCachingMode())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasKind() != other.hasKind()) return false;
      if (hasKind()) {
        if (!getKind()
            .equals(other.getKind())) 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 (hasDiskName()) {
        hash = (37 * hash) + DISKNAME_FIELD_NUMBER;
        hash = (53 * hash) + getDiskName().hashCode();
      }
      if (hasDiskURI()) {
        hash = (37 * hash) + DISKURI_FIELD_NUMBER;
        hash = (53 * hash) + getDiskURI().hashCode();
      }
      if (hasCachingMode()) {
        hash = (37 * hash) + CACHINGMODE_FIELD_NUMBER;
        hash = (53 * hash) + getCachingMode().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasKind()) {
        hash = (37 * hash) + KIND_FIELD_NUMBER;
        hash = (53 * hash) + getKind().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.AzureDiskVolumeSource 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.V1.AzureDiskVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.AzureDiskVolumeSource 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.V1.AzureDiskVolumeSource 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>
     * AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.AzureDiskVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.AzureDiskVolumeSource)
        io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_AzureDiskVolumeSource_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.AzureDiskVolumeSource.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        diskName_ = "";
        diskURI_ = "";
        cachingMode_ = "";
        fsType_ = "";
        readOnly_ = false;
        kind_ = "";
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.AzureDiskVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.diskName_ = diskName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.diskURI_ = diskURI_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.cachingMode_ = cachingMode_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.kind_ = kind_;
          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.V1.AzureDiskVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.AzureDiskVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.AzureDiskVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance()) return this;
        if (other.hasDiskName()) {
          diskName_ = other.diskName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasDiskURI()) {
          diskURI_ = other.diskURI_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasCachingMode()) {
          cachingMode_ = other.cachingMode_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasKind()) {
          kind_ = other.kind_;
          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: {
                diskName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                diskURI_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                cachingMode_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 40: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 50: {
                kind_ = 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 diskName_ = "";
      /**
       * <pre>
       * diskName is the Name of the data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskName = 1;</code>
       * @return Whether the diskName field is set.
       */
      public boolean hasDiskName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * diskName is the Name of the data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskName = 1;</code>
       * @return The diskName.
       */
      public java.lang.String getDiskName() {
        java.lang.Object ref = diskName_;
        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()) {
            diskName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * diskName is the Name of the data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskName = 1;</code>
       * @return The bytes for diskName.
       */
      public com.google.protobuf.ByteString
          getDiskNameBytes() {
        java.lang.Object ref = diskName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          diskName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * diskName is the Name of the data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskName = 1;</code>
       * @param value The diskName to set.
       * @return This builder for chaining.
       */
      public Builder setDiskName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        diskName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * diskName is the Name of the data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDiskName() {
        diskName_ = getDefaultInstance().getDiskName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * diskName is the Name of the data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskName = 1;</code>
       * @param value The bytes for diskName to set.
       * @return This builder for chaining.
       */
      public Builder setDiskNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        diskName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object diskURI_ = "";
      /**
       * <pre>
       * diskURI is the URI of data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskURI = 2;</code>
       * @return Whether the diskURI field is set.
       */
      public boolean hasDiskURI() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * diskURI is the URI of data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskURI = 2;</code>
       * @return The diskURI.
       */
      public java.lang.String getDiskURI() {
        java.lang.Object ref = diskURI_;
        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()) {
            diskURI_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * diskURI is the URI of data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskURI = 2;</code>
       * @return The bytes for diskURI.
       */
      public com.google.protobuf.ByteString
          getDiskURIBytes() {
        java.lang.Object ref = diskURI_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          diskURI_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * diskURI is the URI of data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskURI = 2;</code>
       * @param value The diskURI to set.
       * @return This builder for chaining.
       */
      public Builder setDiskURI(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        diskURI_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * diskURI is the URI of data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskURI = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDiskURI() {
        diskURI_ = getDefaultInstance().getDiskURI();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * diskURI is the URI of data disk in the blob storage
       * </pre>
       *
       * <code>optional string diskURI = 2;</code>
       * @param value The bytes for diskURI to set.
       * @return This builder for chaining.
       */
      public Builder setDiskURIBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        diskURI_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object cachingMode_ = "";
      /**
       * <pre>
       * cachingMode is the Host Caching mode: None, Read Only, Read Write.
       * +optional
       * </pre>
       *
       * <code>optional string cachingMode = 3;</code>
       * @return Whether the cachingMode field is set.
       */
      public boolean hasCachingMode() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * cachingMode is the Host Caching mode: None, Read Only, Read Write.
       * +optional
       * </pre>
       *
       * <code>optional string cachingMode = 3;</code>
       * @return The cachingMode.
       */
      public java.lang.String getCachingMode() {
        java.lang.Object ref = cachingMode_;
        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()) {
            cachingMode_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * cachingMode is the Host Caching mode: None, Read Only, Read Write.
       * +optional
       * </pre>
       *
       * <code>optional string cachingMode = 3;</code>
       * @return The bytes for cachingMode.
       */
      public com.google.protobuf.ByteString
          getCachingModeBytes() {
        java.lang.Object ref = cachingMode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cachingMode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * cachingMode is the Host Caching mode: None, Read Only, Read Write.
       * +optional
       * </pre>
       *
       * <code>optional string cachingMode = 3;</code>
       * @param value The cachingMode to set.
       * @return This builder for chaining.
       */
      public Builder setCachingMode(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        cachingMode_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cachingMode is the Host Caching mode: None, Read Only, Read Write.
       * +optional
       * </pre>
       *
       * <code>optional string cachingMode = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCachingMode() {
        cachingMode_ = getDefaultInstance().getCachingMode();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cachingMode is the Host Caching mode: None, Read Only, Read Write.
       * +optional
       * </pre>
       *
       * <code>optional string cachingMode = 3;</code>
       * @param value The bytes for cachingMode to set.
       * @return This builder for chaining.
       */
      public Builder setCachingModeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        cachingMode_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * fsType is Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 5;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * readOnly Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 5;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 5;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000010);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object kind_ = "";
      /**
       * <pre>
       * kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
       * </pre>
       *
       * <code>optional string kind = 6;</code>
       * @return Whether the kind field is set.
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
       * </pre>
       *
       * <code>optional string kind = 6;</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 expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
       * </pre>
       *
       * <code>optional string kind = 6;</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 expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
       * </pre>
       *
       * <code>optional string kind = 6;</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_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
       * </pre>
       *
       * <code>optional string kind = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearKind() {
        kind_ = getDefaultInstance().getKind();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared
       * </pre>
       *
       * <code>optional string kind = 6;</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_ |= 0x00000020;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.AzureDiskVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.AzureDiskVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface AzureFilePersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.AzureFilePersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * secretName is the name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return Whether the secretName field is set.
     */
    boolean hasSecretName();
    /**
     * <pre>
     * secretName is the name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The secretName.
     */
    java.lang.String getSecretName();
    /**
     * <pre>
     * secretName is the name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The bytes for secretName.
     */
    com.google.protobuf.ByteString
        getSecretNameBytes();

    /**
     * <pre>
     * shareName is the azure Share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return Whether the shareName field is set.
     */
    boolean hasShareName();
    /**
     * <pre>
     * shareName is the azure Share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return The shareName.
     */
    java.lang.String getShareName();
    /**
     * <pre>
     * shareName is the azure Share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return The bytes for shareName.
     */
    com.google.protobuf.ByteString
        getShareNameBytes();

    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
     * default is the same as the Pod
     * +optional
     * </pre>
     *
     * <code>optional string secretNamespace = 4;</code>
     * @return Whether the secretNamespace field is set.
     */
    boolean hasSecretNamespace();
    /**
     * <pre>
     * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
     * default is the same as the Pod
     * +optional
     * </pre>
     *
     * <code>optional string secretNamespace = 4;</code>
     * @return The secretNamespace.
     */
    java.lang.String getSecretNamespace();
    /**
     * <pre>
     * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
     * default is the same as the Pod
     * +optional
     * </pre>
     *
     * <code>optional string secretNamespace = 4;</code>
     * @return The bytes for secretNamespace.
     */
    com.google.protobuf.ByteString
        getSecretNamespaceBytes();
  }
  /**
   * <pre>
   * AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.AzureFilePersistentVolumeSource}
   */
  public static final class AzureFilePersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.AzureFilePersistentVolumeSource)
      AzureFilePersistentVolumeSourceOrBuilder {
  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= */ "",
        AzureFilePersistentVolumeSource.class.getName());
    }
    // Use AzureFilePersistentVolumeSource.newBuilder() to construct.
    private AzureFilePersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AzureFilePersistentVolumeSource() {
      secretName_ = "";
      shareName_ = "";
      secretNamespace_ = "";
    }

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

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

    private int bitField0_;
    public static final int SECRETNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object secretName_ = "";
    /**
     * <pre>
     * secretName is the name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return Whether the secretName field is set.
     */
    @java.lang.Override
    public boolean hasSecretName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * secretName is the name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The secretName.
     */
    @java.lang.Override
    public java.lang.String getSecretName() {
      java.lang.Object ref = secretName_;
      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()) {
          secretName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * secretName is the name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The bytes for secretName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSecretNameBytes() {
      java.lang.Object ref = secretName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        secretName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SHARENAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object shareName_ = "";
    /**
     * <pre>
     * shareName is the azure Share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return Whether the shareName field is set.
     */
    @java.lang.Override
    public boolean hasShareName() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * shareName is the azure Share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return The shareName.
     */
    @java.lang.Override
    public java.lang.String getShareName() {
      java.lang.Object ref = shareName_;
      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()) {
          shareName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * shareName is the azure Share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return The bytes for shareName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getShareNameBytes() {
      java.lang.Object ref = shareName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        shareName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int SECRETNAMESPACE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object secretNamespace_ = "";
    /**
     * <pre>
     * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
     * default is the same as the Pod
     * +optional
     * </pre>
     *
     * <code>optional string secretNamespace = 4;</code>
     * @return Whether the secretNamespace field is set.
     */
    @java.lang.Override
    public boolean hasSecretNamespace() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
     * default is the same as the Pod
     * +optional
     * </pre>
     *
     * <code>optional string secretNamespace = 4;</code>
     * @return The secretNamespace.
     */
    @java.lang.Override
    public java.lang.String getSecretNamespace() {
      java.lang.Object ref = secretNamespace_;
      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()) {
          secretNamespace_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
     * default is the same as the Pod
     * +optional
     * </pre>
     *
     * <code>optional string secretNamespace = 4;</code>
     * @return The bytes for secretNamespace.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSecretNamespaceBytes() {
      java.lang.Object ref = secretNamespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        secretNamespace_ = 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, secretName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, shareName_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, secretNamespace_);
      }
      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, secretName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, shareName_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, secretNamespace_);
      }
      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.V1.AzureFilePersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource other = (io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource) obj;

      if (hasSecretName() != other.hasSecretName()) return false;
      if (hasSecretName()) {
        if (!getSecretName()
            .equals(other.getSecretName())) return false;
      }
      if (hasShareName() != other.hasShareName()) return false;
      if (hasShareName()) {
        if (!getShareName()
            .equals(other.getShareName())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasSecretNamespace() != other.hasSecretNamespace()) return false;
      if (hasSecretNamespace()) {
        if (!getSecretNamespace()
            .equals(other.getSecretNamespace())) 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 (hasSecretName()) {
        hash = (37 * hash) + SECRETNAME_FIELD_NUMBER;
        hash = (53 * hash) + getSecretName().hashCode();
      }
      if (hasShareName()) {
        hash = (37 * hash) + SHARENAME_FIELD_NUMBER;
        hash = (53 * hash) + getShareName().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasSecretNamespace()) {
        hash = (37 * hash) + SECRETNAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getSecretNamespace().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource 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.V1.AzureFilePersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource 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.V1.AzureFilePersistentVolumeSource 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>
     * AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.AzureFilePersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.AzureFilePersistentVolumeSource)
        io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_AzureFilePersistentVolumeSource_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        secretName_ = "";
        shareName_ = "";
        readOnly_ = false;
        secretNamespace_ = "";
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.secretName_ = secretName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.shareName_ = shareName_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.secretNamespace_ = secretNamespace_;
          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.V1.AzureFilePersistentVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.getDefaultInstance()) return this;
        if (other.hasSecretName()) {
          secretName_ = other.secretName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasShareName()) {
          shareName_ = other.shareName_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasSecretNamespace()) {
          secretNamespace_ = other.secretNamespace_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object secretName_ = "";
      /**
       * <pre>
       * secretName is the name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return Whether the secretName field is set.
       */
      public boolean hasSecretName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * secretName is the name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return The secretName.
       */
      public java.lang.String getSecretName() {
        java.lang.Object ref = secretName_;
        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()) {
            secretName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * secretName is the name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return The bytes for secretName.
       */
      public com.google.protobuf.ByteString
          getSecretNameBytes() {
        java.lang.Object ref = secretName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          secretName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * secretName is the name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @param value The secretName to set.
       * @return This builder for chaining.
       */
      public Builder setSecretName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        secretName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretName is the name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSecretName() {
        secretName_ = getDefaultInstance().getSecretName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretName is the name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @param value The bytes for secretName to set.
       * @return This builder for chaining.
       */
      public Builder setSecretNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        secretName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object shareName_ = "";
      /**
       * <pre>
       * shareName is the azure Share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @return Whether the shareName field is set.
       */
      public boolean hasShareName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * shareName is the azure Share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @return The shareName.
       */
      public java.lang.String getShareName() {
        java.lang.Object ref = shareName_;
        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()) {
            shareName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * shareName is the azure Share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @return The bytes for shareName.
       */
      public com.google.protobuf.ByteString
          getShareNameBytes() {
        java.lang.Object ref = shareName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          shareName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * shareName is the azure Share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @param value The shareName to set.
       * @return This builder for chaining.
       */
      public Builder setShareName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        shareName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * shareName is the azure Share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearShareName() {
        shareName_ = getDefaultInstance().getShareName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * shareName is the azure Share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @param value The bytes for shareName to set.
       * @return This builder for chaining.
       */
      public Builder setShareNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        shareName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object secretNamespace_ = "";
      /**
       * <pre>
       * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
       * default is the same as the Pod
       * +optional
       * </pre>
       *
       * <code>optional string secretNamespace = 4;</code>
       * @return Whether the secretNamespace field is set.
       */
      public boolean hasSecretNamespace() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
       * default is the same as the Pod
       * +optional
       * </pre>
       *
       * <code>optional string secretNamespace = 4;</code>
       * @return The secretNamespace.
       */
      public java.lang.String getSecretNamespace() {
        java.lang.Object ref = secretNamespace_;
        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()) {
            secretNamespace_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
       * default is the same as the Pod
       * +optional
       * </pre>
       *
       * <code>optional string secretNamespace = 4;</code>
       * @return The bytes for secretNamespace.
       */
      public com.google.protobuf.ByteString
          getSecretNamespaceBytes() {
        java.lang.Object ref = secretNamespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          secretNamespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
       * default is the same as the Pod
       * +optional
       * </pre>
       *
       * <code>optional string secretNamespace = 4;</code>
       * @param value The secretNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setSecretNamespace(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        secretNamespace_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
       * default is the same as the Pod
       * +optional
       * </pre>
       *
       * <code>optional string secretNamespace = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSecretNamespace() {
        secretNamespace_ = getDefaultInstance().getSecretNamespace();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key
       * default is the same as the Pod
       * +optional
       * </pre>
       *
       * <code>optional string secretNamespace = 4;</code>
       * @param value The bytes for secretNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setSecretNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        secretNamespace_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.AzureFilePersistentVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface AzureFileVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.AzureFileVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * secretName is the  name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return Whether the secretName field is set.
     */
    boolean hasSecretName();
    /**
     * <pre>
     * secretName is the  name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The secretName.
     */
    java.lang.String getSecretName();
    /**
     * <pre>
     * secretName is the  name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The bytes for secretName.
     */
    com.google.protobuf.ByteString
        getSecretNameBytes();

    /**
     * <pre>
     * shareName is the azure share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return Whether the shareName field is set.
     */
    boolean hasShareName();
    /**
     * <pre>
     * shareName is the azure share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return The shareName.
     */
    java.lang.String getShareName();
    /**
     * <pre>
     * shareName is the azure share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return The bytes for shareName.
     */
    com.google.protobuf.ByteString
        getShareNameBytes();

    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.AzureFileVolumeSource}
   */
  public static final class AzureFileVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.AzureFileVolumeSource)
      AzureFileVolumeSourceOrBuilder {
  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= */ "",
        AzureFileVolumeSource.class.getName());
    }
    // Use AzureFileVolumeSource.newBuilder() to construct.
    private AzureFileVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AzureFileVolumeSource() {
      secretName_ = "";
      shareName_ = "";
    }

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

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

    private int bitField0_;
    public static final int SECRETNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object secretName_ = "";
    /**
     * <pre>
     * secretName is the  name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return Whether the secretName field is set.
     */
    @java.lang.Override
    public boolean hasSecretName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * secretName is the  name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The secretName.
     */
    @java.lang.Override
    public java.lang.String getSecretName() {
      java.lang.Object ref = secretName_;
      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()) {
          secretName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * secretName is the  name of secret that contains Azure Storage Account Name and Key
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The bytes for secretName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSecretNameBytes() {
      java.lang.Object ref = secretName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        secretName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SHARENAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object shareName_ = "";
    /**
     * <pre>
     * shareName is the azure share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return Whether the shareName field is set.
     */
    @java.lang.Override
    public boolean hasShareName() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * shareName is the azure share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return The shareName.
     */
    @java.lang.Override
    public java.lang.String getShareName() {
      java.lang.Object ref = shareName_;
      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()) {
          shareName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * shareName is the azure share Name
     * </pre>
     *
     * <code>optional string shareName = 2;</code>
     * @return The bytes for shareName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getShareNameBytes() {
      java.lang.Object ref = shareName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        shareName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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, secretName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, shareName_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      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, secretName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, shareName_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      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.V1.AzureFileVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.AzureFileVolumeSource other = (io.kubernetes.client.proto.V1.AzureFileVolumeSource) obj;

      if (hasSecretName() != other.hasSecretName()) return false;
      if (hasSecretName()) {
        if (!getSecretName()
            .equals(other.getSecretName())) return false;
      }
      if (hasShareName() != other.hasShareName()) return false;
      if (hasShareName()) {
        if (!getShareName()
            .equals(other.getShareName())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (hasSecretName()) {
        hash = (37 * hash) + SECRETNAME_FIELD_NUMBER;
        hash = (53 * hash) + getSecretName().hashCode();
      }
      if (hasShareName()) {
        hash = (37 * hash) + SHARENAME_FIELD_NUMBER;
        hash = (53 * hash) + getShareName().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.AzureFileVolumeSource 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.V1.AzureFileVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.AzureFileVolumeSource 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.V1.AzureFileVolumeSource 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>
     * AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.AzureFileVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.AzureFileVolumeSource)
        io.kubernetes.client.proto.V1.AzureFileVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_AzureFileVolumeSource_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.AzureFileVolumeSource.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.AzureFileVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.secretName_ = secretName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.shareName_ = shareName_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.AzureFileVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.AzureFileVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.AzureFileVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.AzureFileVolumeSource.getDefaultInstance()) return this;
        if (other.hasSecretName()) {
          secretName_ = other.secretName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasShareName()) {
          shareName_ = other.shareName_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        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: {
                secretName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                shareName_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object secretName_ = "";
      /**
       * <pre>
       * secretName is the  name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return Whether the secretName field is set.
       */
      public boolean hasSecretName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * secretName is the  name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return The secretName.
       */
      public java.lang.String getSecretName() {
        java.lang.Object ref = secretName_;
        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()) {
            secretName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * secretName is the  name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return The bytes for secretName.
       */
      public com.google.protobuf.ByteString
          getSecretNameBytes() {
        java.lang.Object ref = secretName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          secretName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * secretName is the  name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @param value The secretName to set.
       * @return This builder for chaining.
       */
      public Builder setSecretName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        secretName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretName is the  name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSecretName() {
        secretName_ = getDefaultInstance().getSecretName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretName is the  name of secret that contains Azure Storage Account Name and Key
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @param value The bytes for secretName to set.
       * @return This builder for chaining.
       */
      public Builder setSecretNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        secretName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object shareName_ = "";
      /**
       * <pre>
       * shareName is the azure share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @return Whether the shareName field is set.
       */
      public boolean hasShareName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * shareName is the azure share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @return The shareName.
       */
      public java.lang.String getShareName() {
        java.lang.Object ref = shareName_;
        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()) {
            shareName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * shareName is the azure share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @return The bytes for shareName.
       */
      public com.google.protobuf.ByteString
          getShareNameBytes() {
        java.lang.Object ref = shareName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          shareName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * shareName is the azure share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @param value The shareName to set.
       * @return This builder for chaining.
       */
      public Builder setShareName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        shareName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * shareName is the azure share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearShareName() {
        shareName_ = getDefaultInstance().getShareName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * shareName is the azure share Name
       * </pre>
       *
       * <code>optional string shareName = 2;</code>
       * @param value The bytes for shareName to set.
       * @return This builder for chaining.
       */
      public Builder setShareNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        shareName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.AzureFileVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.AzureFileVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface BindingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Binding)
      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>
     * The target object that you want to bind to the standard object.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
     * @return Whether the target field is set.
     */
    boolean hasTarget();
    /**
     * <pre>
     * The target object that you want to bind to the standard object.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
     * @return The target.
     */
    io.kubernetes.client.proto.V1.ObjectReference getTarget();
    /**
     * <pre>
     * The target object that you want to bind to the standard object.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getTargetOrBuilder();
  }
  /**
   * <pre>
   * Binding ties one object to another; for example, a pod is bound to a node by a scheduler.
   * Deprecated in 1.7, please use the bindings subresource of pods instead.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Binding}
   */
  public static final class Binding extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Binding)
      BindingOrBuilder {
  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= */ "",
        Binding.class.getName());
    }
    // Use Binding.newBuilder() to construct.
    private Binding(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Binding() {
    }

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

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Binding_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Binding.class, io.kubernetes.client.proto.V1.Binding.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 TARGET_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.ObjectReference target_;
    /**
     * <pre>
     * The target object that you want to bind to the standard object.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
     * @return Whether the target field is set.
     */
    @java.lang.Override
    public boolean hasTarget() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The target object that you want to bind to the standard object.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
     * @return The target.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReference getTarget() {
      return target_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : target_;
    }
    /**
     * <pre>
     * The target object that you want to bind to the standard object.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getTargetOrBuilder() {
      return target_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : target_;
    }

    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, getTarget());
      }
      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, getTarget());
      }
      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.V1.Binding)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Binding other = (io.kubernetes.client.proto.V1.Binding) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (hasTarget() != other.hasTarget()) return false;
      if (hasTarget()) {
        if (!getTarget()
            .equals(other.getTarget())) 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 (hasTarget()) {
        hash = (37 * hash) + TARGET_FIELD_NUMBER;
        hash = (53 * hash) + getTarget().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.Binding 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.V1.Binding parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Binding 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.V1.Binding 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>
     * Binding ties one object to another; for example, a pod is bound to a node by a scheduler.
     * Deprecated in 1.7, please use the bindings subresource of pods instead.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Binding}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Binding)
        io.kubernetes.client.proto.V1.BindingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Binding_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.Binding.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();
          getTargetFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        target_ = null;
        if (targetBuilder_ != null) {
          targetBuilder_.dispose();
          targetBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.Binding 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.target_ = targetBuilder_ == null
              ? target_
              : targetBuilder_.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.V1.Binding) {
          return mergeFrom((io.kubernetes.client.proto.V1.Binding)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Binding other) {
        if (other == io.kubernetes.client.proto.V1.Binding.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasTarget()) {
          mergeTarget(other.getTarget());
        }
        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(
                    getTargetFieldBuilder().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.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.V1.ObjectReference target_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> targetBuilder_;
      /**
       * <pre>
       * The target object that you want to bind to the standard object.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
       * @return Whether the target field is set.
       */
      public boolean hasTarget() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The target object that you want to bind to the standard object.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
       * @return The target.
       */
      public io.kubernetes.client.proto.V1.ObjectReference getTarget() {
        if (targetBuilder_ == null) {
          return target_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : target_;
        } else {
          return targetBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The target object that you want to bind to the standard object.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
       */
      public Builder setTarget(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (targetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          target_ = value;
        } else {
          targetBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The target object that you want to bind to the standard object.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
       */
      public Builder setTarget(
          io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (targetBuilder_ == null) {
          target_ = builderForValue.build();
        } else {
          targetBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The target object that you want to bind to the standard object.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
       */
      public Builder mergeTarget(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (targetBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            target_ != null &&
            target_ != io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance()) {
            getTargetBuilder().mergeFrom(value);
          } else {
            target_ = value;
          }
        } else {
          targetBuilder_.mergeFrom(value);
        }
        if (target_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The target object that you want to bind to the standard object.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
       */
      public Builder clearTarget() {
        bitField0_ = (bitField0_ & ~0x00000002);
        target_ = null;
        if (targetBuilder_ != null) {
          targetBuilder_.dispose();
          targetBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The target object that you want to bind to the standard object.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder getTargetBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTargetFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The target object that you want to bind to the standard object.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getTargetOrBuilder() {
        if (targetBuilder_ != null) {
          return targetBuilder_.getMessageOrBuilder();
        } else {
          return target_ == null ?
              io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : target_;
        }
      }
      /**
       * <pre>
       * The target object that you want to bind to the standard object.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference target = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
          getTargetFieldBuilder() {
        if (targetBuilder_ == null) {
          targetBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder>(
                  getTarget(),
                  getParentForChildren(),
                  isClean());
          target_ = null;
        }
        return targetBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Binding)
    }

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

    public static io.kubernetes.client.proto.V1.Binding getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface CSIPersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.CSIPersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * Required.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return Whether the driver field is set.
     */
    boolean hasDriver();
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * Required.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The driver.
     */
    java.lang.String getDriver();
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * Required.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The bytes for driver.
     */
    com.google.protobuf.ByteString
        getDriverBytes();

    /**
     * <pre>
     * volumeHandle is the unique volume name returned by the CSI volume
     * plugin’s CreateVolume to refer to the volume on all subsequent calls.
     * Required.
     * </pre>
     *
     * <code>optional string volumeHandle = 2;</code>
     * @return Whether the volumeHandle field is set.
     */
    boolean hasVolumeHandle();
    /**
     * <pre>
     * volumeHandle is the unique volume name returned by the CSI volume
     * plugin’s CreateVolume to refer to the volume on all subsequent calls.
     * Required.
     * </pre>
     *
     * <code>optional string volumeHandle = 2;</code>
     * @return The volumeHandle.
     */
    java.lang.String getVolumeHandle();
    /**
     * <pre>
     * volumeHandle is the unique volume name returned by the CSI volume
     * plugin’s CreateVolume to refer to the volume on all subsequent calls.
     * Required.
     * </pre>
     *
     * <code>optional string volumeHandle = 2;</code>
     * @return The bytes for volumeHandle.
     */
    com.google.protobuf.ByteString
        getVolumeHandleBytes();

    /**
     * <pre>
     * readOnly value to pass to ControllerPublishVolumeRequest.
     * Defaults to false (read/write).
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly value to pass to ControllerPublishVolumeRequest.
     * Defaults to false (read/write).
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * fsType to mount. Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType to mount. Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType to mount. Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * volumeAttributes of the volume to publish.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
     */
    int getVolumeAttributesCount();
    /**
     * <pre>
     * volumeAttributes of the volume to publish.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
     */
    boolean containsVolumeAttributes(
        java.lang.String key);
    /**
     * Use {@link #getVolumeAttributesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getVolumeAttributes();
    /**
     * <pre>
     * volumeAttributes of the volume to publish.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getVolumeAttributesMap();
    /**
     * <pre>
     * volumeAttributes of the volume to publish.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
     */
    /* nullable */
java.lang.String getVolumeAttributesOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * volumeAttributes of the volume to publish.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
     */
    java.lang.String getVolumeAttributesOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * controllerPublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerPublishVolume and ControllerUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
     * @return Whether the controllerPublishSecretRef field is set.
     */
    boolean hasControllerPublishSecretRef();
    /**
     * <pre>
     * controllerPublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerPublishVolume and ControllerUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
     * @return The controllerPublishSecretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getControllerPublishSecretRef();
    /**
     * <pre>
     * controllerPublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerPublishVolume and ControllerUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getControllerPublishSecretRefOrBuilder();

    /**
     * <pre>
     * nodeStageSecretRef is a reference to the secret object containing sensitive
     * information to pass to the CSI driver to complete the CSI NodeStageVolume
     * and NodeStageVolume and NodeUnstageVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
     * @return Whether the nodeStageSecretRef field is set.
     */
    boolean hasNodeStageSecretRef();
    /**
     * <pre>
     * nodeStageSecretRef is a reference to the secret object containing sensitive
     * information to pass to the CSI driver to complete the CSI NodeStageVolume
     * and NodeStageVolume and NodeUnstageVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
     * @return The nodeStageSecretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getNodeStageSecretRef();
    /**
     * <pre>
     * nodeStageSecretRef is a reference to the secret object containing sensitive
     * information to pass to the CSI driver to complete the CSI NodeStageVolume
     * and NodeStageVolume and NodeUnstageVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getNodeStageSecretRefOrBuilder();

    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
     * @return Whether the nodePublishSecretRef field is set.
     */
    boolean hasNodePublishSecretRef();
    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
     * @return The nodePublishSecretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getNodePublishSecretRef();
    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getNodePublishSecretRefOrBuilder();

    /**
     * <pre>
     * controllerExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerExpandVolume call.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
     * @return Whether the controllerExpandSecretRef field is set.
     */
    boolean hasControllerExpandSecretRef();
    /**
     * <pre>
     * controllerExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerExpandVolume call.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
     * @return The controllerExpandSecretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getControllerExpandSecretRef();
    /**
     * <pre>
     * controllerExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerExpandVolume call.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getControllerExpandSecretRefOrBuilder();

    /**
     * <pre>
     * nodeExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodeExpandVolume call.
     * This field is optional, may be omitted if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
     * @return Whether the nodeExpandSecretRef field is set.
     */
    boolean hasNodeExpandSecretRef();
    /**
     * <pre>
     * nodeExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodeExpandVolume call.
     * This field is optional, may be omitted if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
     * @return The nodeExpandSecretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getNodeExpandSecretRef();
    /**
     * <pre>
     * nodeExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodeExpandVolume call.
     * This field is optional, may be omitted if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getNodeExpandSecretRefOrBuilder();
  }
  /**
   * <pre>
   * Represents storage that is managed by an external CSI volume driver (Beta feature)
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.CSIPersistentVolumeSource}
   */
  public static final class CSIPersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.CSIPersistentVolumeSource)
      CSIPersistentVolumeSourceOrBuilder {
  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= */ "",
        CSIPersistentVolumeSource.class.getName());
    }
    // Use CSIPersistentVolumeSource.newBuilder() to construct.
    private CSIPersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CSIPersistentVolumeSource() {
      driver_ = "";
      volumeHandle_ = "";
      fsType_ = "";
    }

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

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 5:
          return internalGetVolumeAttributes();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.class, io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int DRIVER_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object driver_ = "";
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * Required.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return Whether the driver field is set.
     */
    @java.lang.Override
    public boolean hasDriver() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * Required.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The driver.
     */
    @java.lang.Override
    public java.lang.String getDriver() {
      java.lang.Object ref = driver_;
      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()) {
          driver_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * Required.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The bytes for driver.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDriverBytes() {
      java.lang.Object ref = driver_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        driver_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUMEHANDLE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeHandle_ = "";
    /**
     * <pre>
     * volumeHandle is the unique volume name returned by the CSI volume
     * plugin’s CreateVolume to refer to the volume on all subsequent calls.
     * Required.
     * </pre>
     *
     * <code>optional string volumeHandle = 2;</code>
     * @return Whether the volumeHandle field is set.
     */
    @java.lang.Override
    public boolean hasVolumeHandle() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * volumeHandle is the unique volume name returned by the CSI volume
     * plugin’s CreateVolume to refer to the volume on all subsequent calls.
     * Required.
     * </pre>
     *
     * <code>optional string volumeHandle = 2;</code>
     * @return The volumeHandle.
     */
    @java.lang.Override
    public java.lang.String getVolumeHandle() {
      java.lang.Object ref = volumeHandle_;
      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()) {
          volumeHandle_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeHandle is the unique volume name returned by the CSI volume
     * plugin’s CreateVolume to refer to the volume on all subsequent calls.
     * Required.
     * </pre>
     *
     * <code>optional string volumeHandle = 2;</code>
     * @return The bytes for volumeHandle.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeHandleBytes() {
      java.lang.Object ref = volumeHandle_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeHandle_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly value to pass to ControllerPublishVolumeRequest.
     * Defaults to false (read/write).
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly value to pass to ControllerPublishVolumeRequest.
     * Defaults to false (read/write).
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int FSTYPE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType to mount. Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * fsType to mount. Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType to mount. Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 4;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUMEATTRIBUTES_FIELD_NUMBER = 5;
    private static final class VolumeAttributesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_VolumeAttributesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> volumeAttributes_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetVolumeAttributes() {
      if (volumeAttributes_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            VolumeAttributesDefaultEntryHolder.defaultEntry);
      }
      return volumeAttributes_;
    }
    public int getVolumeAttributesCount() {
      return internalGetVolumeAttributes().getMap().size();
    }
    /**
     * <pre>
     * volumeAttributes of the volume to publish.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
     */
    @java.lang.Override
    public boolean containsVolumeAttributes(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetVolumeAttributes().getMap().containsKey(key);
    }
    /**
     * Use {@link #getVolumeAttributesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getVolumeAttributes() {
      return getVolumeAttributesMap();
    }
    /**
     * <pre>
     * volumeAttributes of the volume to publish.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getVolumeAttributesMap() {
      return internalGetVolumeAttributes().getMap();
    }
    /**
     * <pre>
     * volumeAttributes of the volume to publish.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getVolumeAttributesOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetVolumeAttributes().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * volumeAttributes of the volume to publish.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
     */
    @java.lang.Override
    public java.lang.String getVolumeAttributesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetVolumeAttributes().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int CONTROLLERPUBLISHSECRETREF_FIELD_NUMBER = 6;
    private io.kubernetes.client.proto.V1.SecretReference controllerPublishSecretRef_;
    /**
     * <pre>
     * controllerPublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerPublishVolume and ControllerUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
     * @return Whether the controllerPublishSecretRef field is set.
     */
    @java.lang.Override
    public boolean hasControllerPublishSecretRef() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * controllerPublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerPublishVolume and ControllerUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
     * @return The controllerPublishSecretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getControllerPublishSecretRef() {
      return controllerPublishSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : controllerPublishSecretRef_;
    }
    /**
     * <pre>
     * controllerPublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerPublishVolume and ControllerUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getControllerPublishSecretRefOrBuilder() {
      return controllerPublishSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : controllerPublishSecretRef_;
    }

    public static final int NODESTAGESECRETREF_FIELD_NUMBER = 7;
    private io.kubernetes.client.proto.V1.SecretReference nodeStageSecretRef_;
    /**
     * <pre>
     * nodeStageSecretRef is a reference to the secret object containing sensitive
     * information to pass to the CSI driver to complete the CSI NodeStageVolume
     * and NodeStageVolume and NodeUnstageVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
     * @return Whether the nodeStageSecretRef field is set.
     */
    @java.lang.Override
    public boolean hasNodeStageSecretRef() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * nodeStageSecretRef is a reference to the secret object containing sensitive
     * information to pass to the CSI driver to complete the CSI NodeStageVolume
     * and NodeStageVolume and NodeUnstageVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
     * @return The nodeStageSecretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getNodeStageSecretRef() {
      return nodeStageSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodeStageSecretRef_;
    }
    /**
     * <pre>
     * nodeStageSecretRef is a reference to the secret object containing sensitive
     * information to pass to the CSI driver to complete the CSI NodeStageVolume
     * and NodeStageVolume and NodeUnstageVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getNodeStageSecretRefOrBuilder() {
      return nodeStageSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodeStageSecretRef_;
    }

    public static final int NODEPUBLISHSECRETREF_FIELD_NUMBER = 8;
    private io.kubernetes.client.proto.V1.SecretReference nodePublishSecretRef_;
    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
     * @return Whether the nodePublishSecretRef field is set.
     */
    @java.lang.Override
    public boolean hasNodePublishSecretRef() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
     * @return The nodePublishSecretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getNodePublishSecretRef() {
      return nodePublishSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodePublishSecretRef_;
    }
    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getNodePublishSecretRefOrBuilder() {
      return nodePublishSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodePublishSecretRef_;
    }

    public static final int CONTROLLEREXPANDSECRETREF_FIELD_NUMBER = 9;
    private io.kubernetes.client.proto.V1.SecretReference controllerExpandSecretRef_;
    /**
     * <pre>
     * controllerExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerExpandVolume call.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
     * @return Whether the controllerExpandSecretRef field is set.
     */
    @java.lang.Override
    public boolean hasControllerExpandSecretRef() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * controllerExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerExpandVolume call.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
     * @return The controllerExpandSecretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getControllerExpandSecretRef() {
      return controllerExpandSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : controllerExpandSecretRef_;
    }
    /**
     * <pre>
     * controllerExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * ControllerExpandVolume call.
     * This field is optional, and may be empty if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getControllerExpandSecretRefOrBuilder() {
      return controllerExpandSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : controllerExpandSecretRef_;
    }

    public static final int NODEEXPANDSECRETREF_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.V1.SecretReference nodeExpandSecretRef_;
    /**
     * <pre>
     * nodeExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodeExpandVolume call.
     * This field is optional, may be omitted if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
     * @return Whether the nodeExpandSecretRef field is set.
     */
    @java.lang.Override
    public boolean hasNodeExpandSecretRef() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * nodeExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodeExpandVolume call.
     * This field is optional, may be omitted if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
     * @return The nodeExpandSecretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getNodeExpandSecretRef() {
      return nodeExpandSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodeExpandSecretRef_;
    }
    /**
     * <pre>
     * nodeExpandSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodeExpandVolume call.
     * This field is optional, may be omitted if no secret is required. If the
     * secret object contains more than one secret, all secrets are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getNodeExpandSecretRefOrBuilder() {
      return nodeExpandSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodeExpandSecretRef_;
    }

    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, driver_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, volumeHandle_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, fsType_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetVolumeAttributes(),
          VolumeAttributesDefaultEntryHolder.defaultEntry,
          5);
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(6, getControllerPublishSecretRef());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(7, getNodeStageSecretRef());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(8, getNodePublishSecretRef());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(9, getControllerExpandSecretRef());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeMessage(10, getNodeExpandSecretRef());
      }
      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, driver_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, volumeHandle_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, fsType_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetVolumeAttributes().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        volumeAttributes__ = VolumeAttributesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, volumeAttributes__);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getControllerPublishSecretRef());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getNodeStageSecretRef());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getNodePublishSecretRef());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getControllerExpandSecretRef());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getNodeExpandSecretRef());
      }
      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.V1.CSIPersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.CSIPersistentVolumeSource other = (io.kubernetes.client.proto.V1.CSIPersistentVolumeSource) obj;

      if (hasDriver() != other.hasDriver()) return false;
      if (hasDriver()) {
        if (!getDriver()
            .equals(other.getDriver())) return false;
      }
      if (hasVolumeHandle() != other.hasVolumeHandle()) return false;
      if (hasVolumeHandle()) {
        if (!getVolumeHandle()
            .equals(other.getVolumeHandle())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (!internalGetVolumeAttributes().equals(
          other.internalGetVolumeAttributes())) return false;
      if (hasControllerPublishSecretRef() != other.hasControllerPublishSecretRef()) return false;
      if (hasControllerPublishSecretRef()) {
        if (!getControllerPublishSecretRef()
            .equals(other.getControllerPublishSecretRef())) return false;
      }
      if (hasNodeStageSecretRef() != other.hasNodeStageSecretRef()) return false;
      if (hasNodeStageSecretRef()) {
        if (!getNodeStageSecretRef()
            .equals(other.getNodeStageSecretRef())) return false;
      }
      if (hasNodePublishSecretRef() != other.hasNodePublishSecretRef()) return false;
      if (hasNodePublishSecretRef()) {
        if (!getNodePublishSecretRef()
            .equals(other.getNodePublishSecretRef())) return false;
      }
      if (hasControllerExpandSecretRef() != other.hasControllerExpandSecretRef()) return false;
      if (hasControllerExpandSecretRef()) {
        if (!getControllerExpandSecretRef()
            .equals(other.getControllerExpandSecretRef())) return false;
      }
      if (hasNodeExpandSecretRef() != other.hasNodeExpandSecretRef()) return false;
      if (hasNodeExpandSecretRef()) {
        if (!getNodeExpandSecretRef()
            .equals(other.getNodeExpandSecretRef())) 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 (hasDriver()) {
        hash = (37 * hash) + DRIVER_FIELD_NUMBER;
        hash = (53 * hash) + getDriver().hashCode();
      }
      if (hasVolumeHandle()) {
        hash = (37 * hash) + VOLUMEHANDLE_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeHandle().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (!internalGetVolumeAttributes().getMap().isEmpty()) {
        hash = (37 * hash) + VOLUMEATTRIBUTES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetVolumeAttributes().hashCode();
      }
      if (hasControllerPublishSecretRef()) {
        hash = (37 * hash) + CONTROLLERPUBLISHSECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getControllerPublishSecretRef().hashCode();
      }
      if (hasNodeStageSecretRef()) {
        hash = (37 * hash) + NODESTAGESECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getNodeStageSecretRef().hashCode();
      }
      if (hasNodePublishSecretRef()) {
        hash = (37 * hash) + NODEPUBLISHSECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getNodePublishSecretRef().hashCode();
      }
      if (hasControllerExpandSecretRef()) {
        hash = (37 * hash) + CONTROLLEREXPANDSECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getControllerExpandSecretRef().hashCode();
      }
      if (hasNodeExpandSecretRef()) {
        hash = (37 * hash) + NODEEXPANDSECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getNodeExpandSecretRef().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.CSIPersistentVolumeSource 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.V1.CSIPersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.CSIPersistentVolumeSource 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.V1.CSIPersistentVolumeSource 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>
     * Represents storage that is managed by an external CSI volume driver (Beta feature)
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.CSIPersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.CSIPersistentVolumeSource)
        io.kubernetes.client.proto.V1.CSIPersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 5:
            return internalGetVolumeAttributes();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 5:
            return internalGetMutableVolumeAttributes();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.class, io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getControllerPublishSecretRefFieldBuilder();
          getNodeStageSecretRefFieldBuilder();
          getNodePublishSecretRefFieldBuilder();
          getControllerExpandSecretRefFieldBuilder();
          getNodeExpandSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        driver_ = "";
        volumeHandle_ = "";
        readOnly_ = false;
        fsType_ = "";
        internalGetMutableVolumeAttributes().clear();
        controllerPublishSecretRef_ = null;
        if (controllerPublishSecretRefBuilder_ != null) {
          controllerPublishSecretRefBuilder_.dispose();
          controllerPublishSecretRefBuilder_ = null;
        }
        nodeStageSecretRef_ = null;
        if (nodeStageSecretRefBuilder_ != null) {
          nodeStageSecretRefBuilder_.dispose();
          nodeStageSecretRefBuilder_ = null;
        }
        nodePublishSecretRef_ = null;
        if (nodePublishSecretRefBuilder_ != null) {
          nodePublishSecretRefBuilder_.dispose();
          nodePublishSecretRefBuilder_ = null;
        }
        controllerExpandSecretRef_ = null;
        if (controllerExpandSecretRefBuilder_ != null) {
          controllerExpandSecretRefBuilder_.dispose();
          controllerExpandSecretRefBuilder_ = null;
        }
        nodeExpandSecretRef_ = null;
        if (nodeExpandSecretRefBuilder_ != null) {
          nodeExpandSecretRefBuilder_.dispose();
          nodeExpandSecretRefBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.CSIPersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.driver_ = driver_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.volumeHandle_ = volumeHandle_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.volumeAttributes_ = internalGetVolumeAttributes();
          result.volumeAttributes_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.controllerPublishSecretRef_ = controllerPublishSecretRefBuilder_ == null
              ? controllerPublishSecretRef_
              : controllerPublishSecretRefBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.nodeStageSecretRef_ = nodeStageSecretRefBuilder_ == null
              ? nodeStageSecretRef_
              : nodeStageSecretRefBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.nodePublishSecretRef_ = nodePublishSecretRefBuilder_ == null
              ? nodePublishSecretRef_
              : nodePublishSecretRefBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.controllerExpandSecretRef_ = controllerExpandSecretRefBuilder_ == null
              ? controllerExpandSecretRef_
              : controllerExpandSecretRefBuilder_.build();
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.nodeExpandSecretRef_ = nodeExpandSecretRefBuilder_ == null
              ? nodeExpandSecretRef_
              : nodeExpandSecretRefBuilder_.build();
          to_bitField0_ |= 0x00000100;
        }
        result.bitField0_ |= to_bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.CSIPersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.getDefaultInstance()) return this;
        if (other.hasDriver()) {
          driver_ = other.driver_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasVolumeHandle()) {
          volumeHandle_ = other.volumeHandle_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        internalGetMutableVolumeAttributes().mergeFrom(
            other.internalGetVolumeAttributes());
        bitField0_ |= 0x00000010;
        if (other.hasControllerPublishSecretRef()) {
          mergeControllerPublishSecretRef(other.getControllerPublishSecretRef());
        }
        if (other.hasNodeStageSecretRef()) {
          mergeNodeStageSecretRef(other.getNodeStageSecretRef());
        }
        if (other.hasNodePublishSecretRef()) {
          mergeNodePublishSecretRef(other.getNodePublishSecretRef());
        }
        if (other.hasControllerExpandSecretRef()) {
          mergeControllerExpandSecretRef(other.getControllerExpandSecretRef());
        }
        if (other.hasNodeExpandSecretRef()) {
          mergeNodeExpandSecretRef(other.getNodeExpandSecretRef());
        }
        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: {
                driver_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                volumeHandle_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                volumeAttributes__ = input.readMessage(
                    VolumeAttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableVolumeAttributes().getMutableMap().put(
                    volumeAttributes__.getKey(), volumeAttributes__.getValue());
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getControllerPublishSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getNodeStageSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getNodePublishSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getControllerExpandSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getNodeExpandSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              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 driver_ = "";
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * Required.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return Whether the driver field is set.
       */
      public boolean hasDriver() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * Required.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return The driver.
       */
      public java.lang.String getDriver() {
        java.lang.Object ref = driver_;
        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()) {
            driver_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * Required.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return The bytes for driver.
       */
      public com.google.protobuf.ByteString
          getDriverBytes() {
        java.lang.Object ref = driver_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          driver_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * Required.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @param value The driver to set.
       * @return This builder for chaining.
       */
      public Builder setDriver(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        driver_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * Required.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDriver() {
        driver_ = getDefaultInstance().getDriver();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * Required.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @param value The bytes for driver to set.
       * @return This builder for chaining.
       */
      public Builder setDriverBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        driver_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object volumeHandle_ = "";
      /**
       * <pre>
       * volumeHandle is the unique volume name returned by the CSI volume
       * plugin’s CreateVolume to refer to the volume on all subsequent calls.
       * Required.
       * </pre>
       *
       * <code>optional string volumeHandle = 2;</code>
       * @return Whether the volumeHandle field is set.
       */
      public boolean hasVolumeHandle() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * volumeHandle is the unique volume name returned by the CSI volume
       * plugin’s CreateVolume to refer to the volume on all subsequent calls.
       * Required.
       * </pre>
       *
       * <code>optional string volumeHandle = 2;</code>
       * @return The volumeHandle.
       */
      public java.lang.String getVolumeHandle() {
        java.lang.Object ref = volumeHandle_;
        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()) {
            volumeHandle_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeHandle is the unique volume name returned by the CSI volume
       * plugin’s CreateVolume to refer to the volume on all subsequent calls.
       * Required.
       * </pre>
       *
       * <code>optional string volumeHandle = 2;</code>
       * @return The bytes for volumeHandle.
       */
      public com.google.protobuf.ByteString
          getVolumeHandleBytes() {
        java.lang.Object ref = volumeHandle_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeHandle_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeHandle is the unique volume name returned by the CSI volume
       * plugin’s CreateVolume to refer to the volume on all subsequent calls.
       * Required.
       * </pre>
       *
       * <code>optional string volumeHandle = 2;</code>
       * @param value The volumeHandle to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeHandle(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeHandle_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeHandle is the unique volume name returned by the CSI volume
       * plugin’s CreateVolume to refer to the volume on all subsequent calls.
       * Required.
       * </pre>
       *
       * <code>optional string volumeHandle = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeHandle() {
        volumeHandle_ = getDefaultInstance().getVolumeHandle();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeHandle is the unique volume name returned by the CSI volume
       * plugin’s CreateVolume to refer to the volume on all subsequent calls.
       * Required.
       * </pre>
       *
       * <code>optional string volumeHandle = 2;</code>
       * @param value The bytes for volumeHandle to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeHandleBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeHandle_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly value to pass to ControllerPublishVolumeRequest.
       * Defaults to false (read/write).
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * readOnly value to pass to ControllerPublishVolumeRequest.
       * Defaults to false (read/write).
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly value to pass to ControllerPublishVolumeRequest.
       * Defaults to false (read/write).
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly value to pass to ControllerPublishVolumeRequest.
       * Defaults to false (read/write).
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType to mount. Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * fsType to mount. Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType to mount. Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType to mount. Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType to mount. Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType to mount. Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 4;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> volumeAttributes_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetVolumeAttributes() {
        if (volumeAttributes_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              VolumeAttributesDefaultEntryHolder.defaultEntry);
        }
        return volumeAttributes_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableVolumeAttributes() {
        if (volumeAttributes_ == null) {
          volumeAttributes_ = com.google.protobuf.MapField.newMapField(
              VolumeAttributesDefaultEntryHolder.defaultEntry);
        }
        if (!volumeAttributes_.isMutable()) {
          volumeAttributes_ = volumeAttributes_.copy();
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return volumeAttributes_;
      }
      public int getVolumeAttributesCount() {
        return internalGetVolumeAttributes().getMap().size();
      }
      /**
       * <pre>
       * volumeAttributes of the volume to publish.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
       */
      @java.lang.Override
      public boolean containsVolumeAttributes(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetVolumeAttributes().getMap().containsKey(key);
      }
      /**
       * Use {@link #getVolumeAttributesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getVolumeAttributes() {
        return getVolumeAttributesMap();
      }
      /**
       * <pre>
       * volumeAttributes of the volume to publish.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getVolumeAttributesMap() {
        return internalGetVolumeAttributes().getMap();
      }
      /**
       * <pre>
       * volumeAttributes of the volume to publish.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getVolumeAttributesOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetVolumeAttributes().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * volumeAttributes of the volume to publish.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
       */
      @java.lang.Override
      public java.lang.String getVolumeAttributesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetVolumeAttributes().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearVolumeAttributes() {
        bitField0_ = (bitField0_ & ~0x00000010);
        internalGetMutableVolumeAttributes().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * volumeAttributes of the volume to publish.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
       */
      public Builder removeVolumeAttributes(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableVolumeAttributes().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableVolumeAttributes() {
        bitField0_ |= 0x00000010;
        return internalGetMutableVolumeAttributes().getMutableMap();
      }
      /**
       * <pre>
       * volumeAttributes of the volume to publish.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
       */
      public Builder putVolumeAttributes(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableVolumeAttributes().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * volumeAttributes of the volume to publish.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 5;</code>
       */
      public Builder putAllVolumeAttributes(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableVolumeAttributes().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000010;
        return this;
      }

      private io.kubernetes.client.proto.V1.SecretReference controllerPublishSecretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> controllerPublishSecretRefBuilder_;
      /**
       * <pre>
       * controllerPublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerPublishVolume and ControllerUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
       * @return Whether the controllerPublishSecretRef field is set.
       */
      public boolean hasControllerPublishSecretRef() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * controllerPublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerPublishVolume and ControllerUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
       * @return The controllerPublishSecretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getControllerPublishSecretRef() {
        if (controllerPublishSecretRefBuilder_ == null) {
          return controllerPublishSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : controllerPublishSecretRef_;
        } else {
          return controllerPublishSecretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * controllerPublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerPublishVolume and ControllerUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
       */
      public Builder setControllerPublishSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (controllerPublishSecretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          controllerPublishSecretRef_ = value;
        } else {
          controllerPublishSecretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * controllerPublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerPublishVolume and ControllerUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
       */
      public Builder setControllerPublishSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (controllerPublishSecretRefBuilder_ == null) {
          controllerPublishSecretRef_ = builderForValue.build();
        } else {
          controllerPublishSecretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * controllerPublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerPublishVolume and ControllerUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
       */
      public Builder mergeControllerPublishSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (controllerPublishSecretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            controllerPublishSecretRef_ != null &&
            controllerPublishSecretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getControllerPublishSecretRefBuilder().mergeFrom(value);
          } else {
            controllerPublishSecretRef_ = value;
          }
        } else {
          controllerPublishSecretRefBuilder_.mergeFrom(value);
        }
        if (controllerPublishSecretRef_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * controllerPublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerPublishVolume and ControllerUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
       */
      public Builder clearControllerPublishSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000020);
        controllerPublishSecretRef_ = null;
        if (controllerPublishSecretRefBuilder_ != null) {
          controllerPublishSecretRefBuilder_.dispose();
          controllerPublishSecretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * controllerPublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerPublishVolume and ControllerUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getControllerPublishSecretRefBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getControllerPublishSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * controllerPublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerPublishVolume and ControllerUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getControllerPublishSecretRefOrBuilder() {
        if (controllerPublishSecretRefBuilder_ != null) {
          return controllerPublishSecretRefBuilder_.getMessageOrBuilder();
        } else {
          return controllerPublishSecretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : controllerPublishSecretRef_;
        }
      }
      /**
       * <pre>
       * controllerPublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerPublishVolume and ControllerUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerPublishSecretRef = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getControllerPublishSecretRefFieldBuilder() {
        if (controllerPublishSecretRefBuilder_ == null) {
          controllerPublishSecretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getControllerPublishSecretRef(),
                  getParentForChildren(),
                  isClean());
          controllerPublishSecretRef_ = null;
        }
        return controllerPublishSecretRefBuilder_;
      }

      private io.kubernetes.client.proto.V1.SecretReference nodeStageSecretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> nodeStageSecretRefBuilder_;
      /**
       * <pre>
       * nodeStageSecretRef is a reference to the secret object containing sensitive
       * information to pass to the CSI driver to complete the CSI NodeStageVolume
       * and NodeStageVolume and NodeUnstageVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
       * @return Whether the nodeStageSecretRef field is set.
       */
      public boolean hasNodeStageSecretRef() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * nodeStageSecretRef is a reference to the secret object containing sensitive
       * information to pass to the CSI driver to complete the CSI NodeStageVolume
       * and NodeStageVolume and NodeUnstageVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
       * @return The nodeStageSecretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getNodeStageSecretRef() {
        if (nodeStageSecretRefBuilder_ == null) {
          return nodeStageSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodeStageSecretRef_;
        } else {
          return nodeStageSecretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * nodeStageSecretRef is a reference to the secret object containing sensitive
       * information to pass to the CSI driver to complete the CSI NodeStageVolume
       * and NodeStageVolume and NodeUnstageVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
       */
      public Builder setNodeStageSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (nodeStageSecretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nodeStageSecretRef_ = value;
        } else {
          nodeStageSecretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodeStageSecretRef is a reference to the secret object containing sensitive
       * information to pass to the CSI driver to complete the CSI NodeStageVolume
       * and NodeStageVolume and NodeUnstageVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
       */
      public Builder setNodeStageSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (nodeStageSecretRefBuilder_ == null) {
          nodeStageSecretRef_ = builderForValue.build();
        } else {
          nodeStageSecretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodeStageSecretRef is a reference to the secret object containing sensitive
       * information to pass to the CSI driver to complete the CSI NodeStageVolume
       * and NodeStageVolume and NodeUnstageVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
       */
      public Builder mergeNodeStageSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (nodeStageSecretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            nodeStageSecretRef_ != null &&
            nodeStageSecretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getNodeStageSecretRefBuilder().mergeFrom(value);
          } else {
            nodeStageSecretRef_ = value;
          }
        } else {
          nodeStageSecretRefBuilder_.mergeFrom(value);
        }
        if (nodeStageSecretRef_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * nodeStageSecretRef is a reference to the secret object containing sensitive
       * information to pass to the CSI driver to complete the CSI NodeStageVolume
       * and NodeStageVolume and NodeUnstageVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
       */
      public Builder clearNodeStageSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000040);
        nodeStageSecretRef_ = null;
        if (nodeStageSecretRefBuilder_ != null) {
          nodeStageSecretRefBuilder_.dispose();
          nodeStageSecretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodeStageSecretRef is a reference to the secret object containing sensitive
       * information to pass to the CSI driver to complete the CSI NodeStageVolume
       * and NodeStageVolume and NodeUnstageVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getNodeStageSecretRefBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getNodeStageSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * nodeStageSecretRef is a reference to the secret object containing sensitive
       * information to pass to the CSI driver to complete the CSI NodeStageVolume
       * and NodeStageVolume and NodeUnstageVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getNodeStageSecretRefOrBuilder() {
        if (nodeStageSecretRefBuilder_ != null) {
          return nodeStageSecretRefBuilder_.getMessageOrBuilder();
        } else {
          return nodeStageSecretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodeStageSecretRef_;
        }
      }
      /**
       * <pre>
       * nodeStageSecretRef is a reference to the secret object containing sensitive
       * information to pass to the CSI driver to complete the CSI NodeStageVolume
       * and NodeStageVolume and NodeUnstageVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeStageSecretRef = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getNodeStageSecretRefFieldBuilder() {
        if (nodeStageSecretRefBuilder_ == null) {
          nodeStageSecretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getNodeStageSecretRef(),
                  getParentForChildren(),
                  isClean());
          nodeStageSecretRef_ = null;
        }
        return nodeStageSecretRefBuilder_;
      }

      private io.kubernetes.client.proto.V1.SecretReference nodePublishSecretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> nodePublishSecretRefBuilder_;
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
       * @return Whether the nodePublishSecretRef field is set.
       */
      public boolean hasNodePublishSecretRef() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
       * @return The nodePublishSecretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getNodePublishSecretRef() {
        if (nodePublishSecretRefBuilder_ == null) {
          return nodePublishSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodePublishSecretRef_;
        } else {
          return nodePublishSecretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
       */
      public Builder setNodePublishSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (nodePublishSecretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nodePublishSecretRef_ = value;
        } else {
          nodePublishSecretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
       */
      public Builder setNodePublishSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (nodePublishSecretRefBuilder_ == null) {
          nodePublishSecretRef_ = builderForValue.build();
        } else {
          nodePublishSecretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
       */
      public Builder mergeNodePublishSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (nodePublishSecretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
            nodePublishSecretRef_ != null &&
            nodePublishSecretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getNodePublishSecretRefBuilder().mergeFrom(value);
          } else {
            nodePublishSecretRef_ = value;
          }
        } else {
          nodePublishSecretRefBuilder_.mergeFrom(value);
        }
        if (nodePublishSecretRef_ != null) {
          bitField0_ |= 0x00000080;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
       */
      public Builder clearNodePublishSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000080);
        nodePublishSecretRef_ = null;
        if (nodePublishSecretRefBuilder_ != null) {
          nodePublishSecretRefBuilder_.dispose();
          nodePublishSecretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getNodePublishSecretRefBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getNodePublishSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getNodePublishSecretRefOrBuilder() {
        if (nodePublishSecretRefBuilder_ != null) {
          return nodePublishSecretRefBuilder_.getMessageOrBuilder();
        } else {
          return nodePublishSecretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodePublishSecretRef_;
        }
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodePublishSecretRef = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getNodePublishSecretRefFieldBuilder() {
        if (nodePublishSecretRefBuilder_ == null) {
          nodePublishSecretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getNodePublishSecretRef(),
                  getParentForChildren(),
                  isClean());
          nodePublishSecretRef_ = null;
        }
        return nodePublishSecretRefBuilder_;
      }

      private io.kubernetes.client.proto.V1.SecretReference controllerExpandSecretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> controllerExpandSecretRefBuilder_;
      /**
       * <pre>
       * controllerExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerExpandVolume call.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
       * @return Whether the controllerExpandSecretRef field is set.
       */
      public boolean hasControllerExpandSecretRef() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * controllerExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerExpandVolume call.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
       * @return The controllerExpandSecretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getControllerExpandSecretRef() {
        if (controllerExpandSecretRefBuilder_ == null) {
          return controllerExpandSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : controllerExpandSecretRef_;
        } else {
          return controllerExpandSecretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * controllerExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerExpandVolume call.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
       */
      public Builder setControllerExpandSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (controllerExpandSecretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          controllerExpandSecretRef_ = value;
        } else {
          controllerExpandSecretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * controllerExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerExpandVolume call.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
       */
      public Builder setControllerExpandSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (controllerExpandSecretRefBuilder_ == null) {
          controllerExpandSecretRef_ = builderForValue.build();
        } else {
          controllerExpandSecretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * controllerExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerExpandVolume call.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
       */
      public Builder mergeControllerExpandSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (controllerExpandSecretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
            controllerExpandSecretRef_ != null &&
            controllerExpandSecretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getControllerExpandSecretRefBuilder().mergeFrom(value);
          } else {
            controllerExpandSecretRef_ = value;
          }
        } else {
          controllerExpandSecretRefBuilder_.mergeFrom(value);
        }
        if (controllerExpandSecretRef_ != null) {
          bitField0_ |= 0x00000100;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * controllerExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerExpandVolume call.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
       */
      public Builder clearControllerExpandSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000100);
        controllerExpandSecretRef_ = null;
        if (controllerExpandSecretRefBuilder_ != null) {
          controllerExpandSecretRefBuilder_.dispose();
          controllerExpandSecretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * controllerExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerExpandVolume call.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getControllerExpandSecretRefBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getControllerExpandSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * controllerExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerExpandVolume call.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getControllerExpandSecretRefOrBuilder() {
        if (controllerExpandSecretRefBuilder_ != null) {
          return controllerExpandSecretRefBuilder_.getMessageOrBuilder();
        } else {
          return controllerExpandSecretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : controllerExpandSecretRef_;
        }
      }
      /**
       * <pre>
       * controllerExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * ControllerExpandVolume call.
       * This field is optional, and may be empty if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference controllerExpandSecretRef = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getControllerExpandSecretRefFieldBuilder() {
        if (controllerExpandSecretRefBuilder_ == null) {
          controllerExpandSecretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getControllerExpandSecretRef(),
                  getParentForChildren(),
                  isClean());
          controllerExpandSecretRef_ = null;
        }
        return controllerExpandSecretRefBuilder_;
      }

      private io.kubernetes.client.proto.V1.SecretReference nodeExpandSecretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> nodeExpandSecretRefBuilder_;
      /**
       * <pre>
       * nodeExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodeExpandVolume call.
       * This field is optional, may be omitted if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
       * @return Whether the nodeExpandSecretRef field is set.
       */
      public boolean hasNodeExpandSecretRef() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * nodeExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodeExpandVolume call.
       * This field is optional, may be omitted if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
       * @return The nodeExpandSecretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getNodeExpandSecretRef() {
        if (nodeExpandSecretRefBuilder_ == null) {
          return nodeExpandSecretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodeExpandSecretRef_;
        } else {
          return nodeExpandSecretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * nodeExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodeExpandVolume call.
       * This field is optional, may be omitted if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
       */
      public Builder setNodeExpandSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (nodeExpandSecretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nodeExpandSecretRef_ = value;
        } else {
          nodeExpandSecretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodeExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodeExpandVolume call.
       * This field is optional, may be omitted if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
       */
      public Builder setNodeExpandSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (nodeExpandSecretRefBuilder_ == null) {
          nodeExpandSecretRef_ = builderForValue.build();
        } else {
          nodeExpandSecretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodeExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodeExpandVolume call.
       * This field is optional, may be omitted if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
       */
      public Builder mergeNodeExpandSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (nodeExpandSecretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            nodeExpandSecretRef_ != null &&
            nodeExpandSecretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getNodeExpandSecretRefBuilder().mergeFrom(value);
          } else {
            nodeExpandSecretRef_ = value;
          }
        } else {
          nodeExpandSecretRefBuilder_.mergeFrom(value);
        }
        if (nodeExpandSecretRef_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * nodeExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodeExpandVolume call.
       * This field is optional, may be omitted if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
       */
      public Builder clearNodeExpandSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000200);
        nodeExpandSecretRef_ = null;
        if (nodeExpandSecretRefBuilder_ != null) {
          nodeExpandSecretRefBuilder_.dispose();
          nodeExpandSecretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodeExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodeExpandVolume call.
       * This field is optional, may be omitted if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getNodeExpandSecretRefBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getNodeExpandSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * nodeExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodeExpandVolume call.
       * This field is optional, may be omitted if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getNodeExpandSecretRefOrBuilder() {
        if (nodeExpandSecretRefBuilder_ != null) {
          return nodeExpandSecretRefBuilder_.getMessageOrBuilder();
        } else {
          return nodeExpandSecretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : nodeExpandSecretRef_;
        }
      }
      /**
       * <pre>
       * nodeExpandSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodeExpandVolume call.
       * This field is optional, may be omitted if no secret is required. If the
       * secret object contains more than one secret, all secrets are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference nodeExpandSecretRef = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getNodeExpandSecretRefFieldBuilder() {
        if (nodeExpandSecretRefBuilder_ == null) {
          nodeExpandSecretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getNodeExpandSecretRef(),
                  getParentForChildren(),
                  isClean());
          nodeExpandSecretRef_ = null;
        }
        return nodeExpandSecretRefBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.CSIPersistentVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.CSIPersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface CSIVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.CSIVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * driver is the name of the CSI driver that handles this volume.
     * Consult with your admin for the correct name as registered in the cluster.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return Whether the driver field is set.
     */
    boolean hasDriver();
    /**
     * <pre>
     * driver is the name of the CSI driver that handles this volume.
     * Consult with your admin for the correct name as registered in the cluster.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The driver.
     */
    java.lang.String getDriver();
    /**
     * <pre>
     * driver is the name of the CSI driver that handles this volume.
     * Consult with your admin for the correct name as registered in the cluster.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The bytes for driver.
     */
    com.google.protobuf.ByteString
        getDriverBytes();

    /**
     * <pre>
     * readOnly specifies a read-only configuration for the volume.
     * Defaults to false (read/write).
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly specifies a read-only configuration for the volume.
     * Defaults to false (read/write).
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * fsType to mount. Ex. "ext4", "xfs", "ntfs".
     * If not provided, the empty value is passed to the associated CSI driver
     * which will determine the default filesystem to apply.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType to mount. Ex. "ext4", "xfs", "ntfs".
     * If not provided, the empty value is passed to the associated CSI driver
     * which will determine the default filesystem to apply.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType to mount. Ex. "ext4", "xfs", "ntfs".
     * If not provided, the empty value is passed to the associated CSI driver
     * which will determine the default filesystem to apply.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * volumeAttributes stores driver-specific properties that are passed to the CSI
     * driver. Consult your driver's documentation for supported values.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
     */
    int getVolumeAttributesCount();
    /**
     * <pre>
     * volumeAttributes stores driver-specific properties that are passed to the CSI
     * driver. Consult your driver's documentation for supported values.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
     */
    boolean containsVolumeAttributes(
        java.lang.String key);
    /**
     * Use {@link #getVolumeAttributesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getVolumeAttributes();
    /**
     * <pre>
     * volumeAttributes stores driver-specific properties that are passed to the CSI
     * driver. Consult your driver's documentation for supported values.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getVolumeAttributesMap();
    /**
     * <pre>
     * volumeAttributes stores driver-specific properties that are passed to the CSI
     * driver. Consult your driver's documentation for supported values.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
     */
    /* nullable */
java.lang.String getVolumeAttributesOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * volumeAttributes stores driver-specific properties that are passed to the CSI
     * driver. Consult your driver's documentation for supported values.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
     */
    java.lang.String getVolumeAttributesOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and  may be empty if no secret is required. If the
     * secret object contains more than one secret, all secret references are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
     * @return Whether the nodePublishSecretRef field is set.
     */
    boolean hasNodePublishSecretRef();
    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and  may be empty if no secret is required. If the
     * secret object contains more than one secret, all secret references are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
     * @return The nodePublishSecretRef.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getNodePublishSecretRef();
    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and  may be empty if no secret is required. If the
     * secret object contains more than one secret, all secret references are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getNodePublishSecretRefOrBuilder();
  }
  /**
   * <pre>
   * Represents a source location of a volume to mount, managed by an external CSI driver
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.CSIVolumeSource}
   */
  public static final class CSIVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.CSIVolumeSource)
      CSIVolumeSourceOrBuilder {
  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= */ "",
        CSIVolumeSource.class.getName());
    }
    // Use CSIVolumeSource.newBuilder() to construct.
    private CSIVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CSIVolumeSource() {
      driver_ = "";
      fsType_ = "";
    }

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

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 4:
          return internalGetVolumeAttributes();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CSIVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.CSIVolumeSource.class, io.kubernetes.client.proto.V1.CSIVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int DRIVER_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object driver_ = "";
    /**
     * <pre>
     * driver is the name of the CSI driver that handles this volume.
     * Consult with your admin for the correct name as registered in the cluster.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return Whether the driver field is set.
     */
    @java.lang.Override
    public boolean hasDriver() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * driver is the name of the CSI driver that handles this volume.
     * Consult with your admin for the correct name as registered in the cluster.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The driver.
     */
    @java.lang.Override
    public java.lang.String getDriver() {
      java.lang.Object ref = driver_;
      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()) {
          driver_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * driver is the name of the CSI driver that handles this volume.
     * Consult with your admin for the correct name as registered in the cluster.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The bytes for driver.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDriverBytes() {
      java.lang.Object ref = driver_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        driver_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 2;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly specifies a read-only configuration for the volume.
     * Defaults to false (read/write).
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * readOnly specifies a read-only configuration for the volume.
     * Defaults to false (read/write).
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int FSTYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType to mount. Ex. "ext4", "xfs", "ntfs".
     * If not provided, the empty value is passed to the associated CSI driver
     * which will determine the default filesystem to apply.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * fsType to mount. Ex. "ext4", "xfs", "ntfs".
     * If not provided, the empty value is passed to the associated CSI driver
     * which will determine the default filesystem to apply.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType to mount. Ex. "ext4", "xfs", "ntfs".
     * If not provided, the empty value is passed to the associated CSI driver
     * which will determine the default filesystem to apply.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUMEATTRIBUTES_FIELD_NUMBER = 4;
    private static final class VolumeAttributesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CSIVolumeSource_VolumeAttributesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> volumeAttributes_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetVolumeAttributes() {
      if (volumeAttributes_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            VolumeAttributesDefaultEntryHolder.defaultEntry);
      }
      return volumeAttributes_;
    }
    public int getVolumeAttributesCount() {
      return internalGetVolumeAttributes().getMap().size();
    }
    /**
     * <pre>
     * volumeAttributes stores driver-specific properties that are passed to the CSI
     * driver. Consult your driver's documentation for supported values.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
     */
    @java.lang.Override
    public boolean containsVolumeAttributes(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetVolumeAttributes().getMap().containsKey(key);
    }
    /**
     * Use {@link #getVolumeAttributesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getVolumeAttributes() {
      return getVolumeAttributesMap();
    }
    /**
     * <pre>
     * volumeAttributes stores driver-specific properties that are passed to the CSI
     * driver. Consult your driver's documentation for supported values.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getVolumeAttributesMap() {
      return internalGetVolumeAttributes().getMap();
    }
    /**
     * <pre>
     * volumeAttributes stores driver-specific properties that are passed to the CSI
     * driver. Consult your driver's documentation for supported values.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getVolumeAttributesOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetVolumeAttributes().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * volumeAttributes stores driver-specific properties that are passed to the CSI
     * driver. Consult your driver's documentation for supported values.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
     */
    @java.lang.Override
    public java.lang.String getVolumeAttributesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetVolumeAttributes().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int NODEPUBLISHSECRETREF_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1.LocalObjectReference nodePublishSecretRef_;
    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and  may be empty if no secret is required. If the
     * secret object contains more than one secret, all secret references are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
     * @return Whether the nodePublishSecretRef field is set.
     */
    @java.lang.Override
    public boolean hasNodePublishSecretRef() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and  may be empty if no secret is required. If the
     * secret object contains more than one secret, all secret references are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
     * @return The nodePublishSecretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getNodePublishSecretRef() {
      return nodePublishSecretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : nodePublishSecretRef_;
    }
    /**
     * <pre>
     * nodePublishSecretRef is a reference to the secret object containing
     * sensitive information to pass to the CSI driver to complete the CSI
     * NodePublishVolume and NodeUnpublishVolume calls.
     * This field is optional, and  may be empty if no secret is required. If the
     * secret object contains more than one secret, all secret references are passed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getNodePublishSecretRefOrBuilder() {
      return nodePublishSecretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : nodePublishSecretRef_;
    }

    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, driver_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, readOnly_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, fsType_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetVolumeAttributes(),
          VolumeAttributesDefaultEntryHolder.defaultEntry,
          4);
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(5, getNodePublishSecretRef());
      }
      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, driver_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, readOnly_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, fsType_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetVolumeAttributes().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        volumeAttributes__ = VolumeAttributesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, volumeAttributes__);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getNodePublishSecretRef());
      }
      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.V1.CSIVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.CSIVolumeSource other = (io.kubernetes.client.proto.V1.CSIVolumeSource) obj;

      if (hasDriver() != other.hasDriver()) return false;
      if (hasDriver()) {
        if (!getDriver()
            .equals(other.getDriver())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (!internalGetVolumeAttributes().equals(
          other.internalGetVolumeAttributes())) return false;
      if (hasNodePublishSecretRef() != other.hasNodePublishSecretRef()) return false;
      if (hasNodePublishSecretRef()) {
        if (!getNodePublishSecretRef()
            .equals(other.getNodePublishSecretRef())) 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 (hasDriver()) {
        hash = (37 * hash) + DRIVER_FIELD_NUMBER;
        hash = (53 * hash) + getDriver().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (!internalGetVolumeAttributes().getMap().isEmpty()) {
        hash = (37 * hash) + VOLUMEATTRIBUTES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetVolumeAttributes().hashCode();
      }
      if (hasNodePublishSecretRef()) {
        hash = (37 * hash) + NODEPUBLISHSECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getNodePublishSecretRef().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.CSIVolumeSource 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.V1.CSIVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.CSIVolumeSource 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.V1.CSIVolumeSource 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>
     * Represents a source location of a volume to mount, managed by an external CSI driver
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.CSIVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.CSIVolumeSource)
        io.kubernetes.client.proto.V1.CSIVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CSIVolumeSource_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 4:
            return internalGetVolumeAttributes();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 4:
            return internalGetMutableVolumeAttributes();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CSIVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.CSIVolumeSource.class, io.kubernetes.client.proto.V1.CSIVolumeSource.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getNodePublishSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        driver_ = "";
        readOnly_ = false;
        fsType_ = "";
        internalGetMutableVolumeAttributes().clear();
        nodePublishSecretRef_ = null;
        if (nodePublishSecretRefBuilder_ != null) {
          nodePublishSecretRefBuilder_.dispose();
          nodePublishSecretRefBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.CSIVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.driver_ = driver_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.volumeAttributes_ = internalGetVolumeAttributes();
          result.volumeAttributes_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.nodePublishSecretRef_ = nodePublishSecretRefBuilder_ == null
              ? nodePublishSecretRef_
              : nodePublishSecretRefBuilder_.build();
          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.V1.CSIVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.CSIVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.CSIVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.CSIVolumeSource.getDefaultInstance()) return this;
        if (other.hasDriver()) {
          driver_ = other.driver_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        internalGetMutableVolumeAttributes().mergeFrom(
            other.internalGetVolumeAttributes());
        bitField0_ |= 0x00000008;
        if (other.hasNodePublishSecretRef()) {
          mergeNodePublishSecretRef(other.getNodePublishSecretRef());
        }
        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: {
                driver_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                volumeAttributes__ = input.readMessage(
                    VolumeAttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableVolumeAttributes().getMutableMap().put(
                    volumeAttributes__.getKey(), volumeAttributes__.getValue());
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getNodePublishSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object driver_ = "";
      /**
       * <pre>
       * driver is the name of the CSI driver that handles this volume.
       * Consult with your admin for the correct name as registered in the cluster.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return Whether the driver field is set.
       */
      public boolean hasDriver() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * driver is the name of the CSI driver that handles this volume.
       * Consult with your admin for the correct name as registered in the cluster.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return The driver.
       */
      public java.lang.String getDriver() {
        java.lang.Object ref = driver_;
        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()) {
            driver_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * driver is the name of the CSI driver that handles this volume.
       * Consult with your admin for the correct name as registered in the cluster.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return The bytes for driver.
       */
      public com.google.protobuf.ByteString
          getDriverBytes() {
        java.lang.Object ref = driver_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          driver_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * driver is the name of the CSI driver that handles this volume.
       * Consult with your admin for the correct name as registered in the cluster.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @param value The driver to set.
       * @return This builder for chaining.
       */
      public Builder setDriver(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        driver_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * driver is the name of the CSI driver that handles this volume.
       * Consult with your admin for the correct name as registered in the cluster.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDriver() {
        driver_ = getDefaultInstance().getDriver();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * driver is the name of the CSI driver that handles this volume.
       * Consult with your admin for the correct name as registered in the cluster.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @param value The bytes for driver to set.
       * @return This builder for chaining.
       */
      public Builder setDriverBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        driver_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly specifies a read-only configuration for the volume.
       * Defaults to false (read/write).
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * readOnly specifies a read-only configuration for the volume.
       * Defaults to false (read/write).
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly specifies a read-only configuration for the volume.
       * Defaults to false (read/write).
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly specifies a read-only configuration for the volume.
       * Defaults to false (read/write).
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000002);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType to mount. Ex. "ext4", "xfs", "ntfs".
       * If not provided, the empty value is passed to the associated CSI driver
       * which will determine the default filesystem to apply.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * fsType to mount. Ex. "ext4", "xfs", "ntfs".
       * If not provided, the empty value is passed to the associated CSI driver
       * which will determine the default filesystem to apply.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType to mount. Ex. "ext4", "xfs", "ntfs".
       * If not provided, the empty value is passed to the associated CSI driver
       * which will determine the default filesystem to apply.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType to mount. Ex. "ext4", "xfs", "ntfs".
       * If not provided, the empty value is passed to the associated CSI driver
       * which will determine the default filesystem to apply.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType to mount. Ex. "ext4", "xfs", "ntfs".
       * If not provided, the empty value is passed to the associated CSI driver
       * which will determine the default filesystem to apply.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType to mount. Ex. "ext4", "xfs", "ntfs".
       * If not provided, the empty value is passed to the associated CSI driver
       * which will determine the default filesystem to apply.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> volumeAttributes_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetVolumeAttributes() {
        if (volumeAttributes_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              VolumeAttributesDefaultEntryHolder.defaultEntry);
        }
        return volumeAttributes_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableVolumeAttributes() {
        if (volumeAttributes_ == null) {
          volumeAttributes_ = com.google.protobuf.MapField.newMapField(
              VolumeAttributesDefaultEntryHolder.defaultEntry);
        }
        if (!volumeAttributes_.isMutable()) {
          volumeAttributes_ = volumeAttributes_.copy();
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return volumeAttributes_;
      }
      public int getVolumeAttributesCount() {
        return internalGetVolumeAttributes().getMap().size();
      }
      /**
       * <pre>
       * volumeAttributes stores driver-specific properties that are passed to the CSI
       * driver. Consult your driver's documentation for supported values.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
       */
      @java.lang.Override
      public boolean containsVolumeAttributes(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetVolumeAttributes().getMap().containsKey(key);
      }
      /**
       * Use {@link #getVolumeAttributesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getVolumeAttributes() {
        return getVolumeAttributesMap();
      }
      /**
       * <pre>
       * volumeAttributes stores driver-specific properties that are passed to the CSI
       * driver. Consult your driver's documentation for supported values.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getVolumeAttributesMap() {
        return internalGetVolumeAttributes().getMap();
      }
      /**
       * <pre>
       * volumeAttributes stores driver-specific properties that are passed to the CSI
       * driver. Consult your driver's documentation for supported values.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getVolumeAttributesOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetVolumeAttributes().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * volumeAttributes stores driver-specific properties that are passed to the CSI
       * driver. Consult your driver's documentation for supported values.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
       */
      @java.lang.Override
      public java.lang.String getVolumeAttributesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetVolumeAttributes().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearVolumeAttributes() {
        bitField0_ = (bitField0_ & ~0x00000008);
        internalGetMutableVolumeAttributes().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * volumeAttributes stores driver-specific properties that are passed to the CSI
       * driver. Consult your driver's documentation for supported values.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
       */
      public Builder removeVolumeAttributes(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableVolumeAttributes().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableVolumeAttributes() {
        bitField0_ |= 0x00000008;
        return internalGetMutableVolumeAttributes().getMutableMap();
      }
      /**
       * <pre>
       * volumeAttributes stores driver-specific properties that are passed to the CSI
       * driver. Consult your driver's documentation for supported values.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
       */
      public Builder putVolumeAttributes(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableVolumeAttributes().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * volumeAttributes stores driver-specific properties that are passed to the CSI
       * driver. Consult your driver's documentation for supported values.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; volumeAttributes = 4;</code>
       */
      public Builder putAllVolumeAttributes(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableVolumeAttributes().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000008;
        return this;
      }

      private io.kubernetes.client.proto.V1.LocalObjectReference nodePublishSecretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> nodePublishSecretRefBuilder_;
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and  may be empty if no secret is required. If the
       * secret object contains more than one secret, all secret references are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
       * @return Whether the nodePublishSecretRef field is set.
       */
      public boolean hasNodePublishSecretRef() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and  may be empty if no secret is required. If the
       * secret object contains more than one secret, all secret references are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
       * @return The nodePublishSecretRef.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getNodePublishSecretRef() {
        if (nodePublishSecretRefBuilder_ == null) {
          return nodePublishSecretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : nodePublishSecretRef_;
        } else {
          return nodePublishSecretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and  may be empty if no secret is required. If the
       * secret object contains more than one secret, all secret references are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
       */
      public Builder setNodePublishSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (nodePublishSecretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nodePublishSecretRef_ = value;
        } else {
          nodePublishSecretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and  may be empty if no secret is required. If the
       * secret object contains more than one secret, all secret references are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
       */
      public Builder setNodePublishSecretRef(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (nodePublishSecretRefBuilder_ == null) {
          nodePublishSecretRef_ = builderForValue.build();
        } else {
          nodePublishSecretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and  may be empty if no secret is required. If the
       * secret object contains more than one secret, all secret references are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
       */
      public Builder mergeNodePublishSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (nodePublishSecretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            nodePublishSecretRef_ != null &&
            nodePublishSecretRef_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getNodePublishSecretRefBuilder().mergeFrom(value);
          } else {
            nodePublishSecretRef_ = value;
          }
        } else {
          nodePublishSecretRefBuilder_.mergeFrom(value);
        }
        if (nodePublishSecretRef_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and  may be empty if no secret is required. If the
       * secret object contains more than one secret, all secret references are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
       */
      public Builder clearNodePublishSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000010);
        nodePublishSecretRef_ = null;
        if (nodePublishSecretRefBuilder_ != null) {
          nodePublishSecretRefBuilder_.dispose();
          nodePublishSecretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and  may be empty if no secret is required. If the
       * secret object contains more than one secret, all secret references are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getNodePublishSecretRefBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getNodePublishSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and  may be empty if no secret is required. If the
       * secret object contains more than one secret, all secret references are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getNodePublishSecretRefOrBuilder() {
        if (nodePublishSecretRefBuilder_ != null) {
          return nodePublishSecretRefBuilder_.getMessageOrBuilder();
        } else {
          return nodePublishSecretRef_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : nodePublishSecretRef_;
        }
      }
      /**
       * <pre>
       * nodePublishSecretRef is a reference to the secret object containing
       * sensitive information to pass to the CSI driver to complete the CSI
       * NodePublishVolume and NodeUnpublishVolume calls.
       * This field is optional, and  may be empty if no secret is required. If the
       * secret object contains more than one secret, all secret references are passed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference nodePublishSecretRef = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getNodePublishSecretRefFieldBuilder() {
        if (nodePublishSecretRefBuilder_ == null) {
          nodePublishSecretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getNodePublishSecretRef(),
                  getParentForChildren(),
                  isClean());
          nodePublishSecretRef_ = null;
        }
        return nodePublishSecretRefBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.CSIVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.CSIVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface CapabilitiesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Capabilities)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Added capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string add = 1;</code>
     * @return A list containing the add.
     */
    java.util.List<java.lang.String>
        getAddList();
    /**
     * <pre>
     * Added capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string add = 1;</code>
     * @return The count of add.
     */
    int getAddCount();
    /**
     * <pre>
     * Added capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string add = 1;</code>
     * @param index The index of the element to return.
     * @return The add at the given index.
     */
    java.lang.String getAdd(int index);
    /**
     * <pre>
     * Added capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string add = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the add at the given index.
     */
    com.google.protobuf.ByteString
        getAddBytes(int index);

    /**
     * <pre>
     * Removed capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string drop = 2;</code>
     * @return A list containing the drop.
     */
    java.util.List<java.lang.String>
        getDropList();
    /**
     * <pre>
     * Removed capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string drop = 2;</code>
     * @return The count of drop.
     */
    int getDropCount();
    /**
     * <pre>
     * Removed capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string drop = 2;</code>
     * @param index The index of the element to return.
     * @return The drop at the given index.
     */
    java.lang.String getDrop(int index);
    /**
     * <pre>
     * Removed capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string drop = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the drop at the given index.
     */
    com.google.protobuf.ByteString
        getDropBytes(int index);
  }
  /**
   * <pre>
   * Adds and removes POSIX capabilities from running containers.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Capabilities}
   */
  public static final class Capabilities extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Capabilities)
      CapabilitiesOrBuilder {
  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= */ "",
        Capabilities.class.getName());
    }
    // Use Capabilities.newBuilder() to construct.
    private Capabilities(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Capabilities() {
      add_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      drop_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

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

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

    public static final int ADD_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList add_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Added capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string add = 1;</code>
     * @return A list containing the add.
     */
    public com.google.protobuf.ProtocolStringList
        getAddList() {
      return add_;
    }
    /**
     * <pre>
     * Added capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string add = 1;</code>
     * @return The count of add.
     */
    public int getAddCount() {
      return add_.size();
    }
    /**
     * <pre>
     * Added capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string add = 1;</code>
     * @param index The index of the element to return.
     * @return The add at the given index.
     */
    public java.lang.String getAdd(int index) {
      return add_.get(index);
    }
    /**
     * <pre>
     * Added capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string add = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the add at the given index.
     */
    public com.google.protobuf.ByteString
        getAddBytes(int index) {
      return add_.getByteString(index);
    }

    public static final int DROP_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList drop_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Removed capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string drop = 2;</code>
     * @return A list containing the drop.
     */
    public com.google.protobuf.ProtocolStringList
        getDropList() {
      return drop_;
    }
    /**
     * <pre>
     * Removed capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string drop = 2;</code>
     * @return The count of drop.
     */
    public int getDropCount() {
      return drop_.size();
    }
    /**
     * <pre>
     * Removed capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string drop = 2;</code>
     * @param index The index of the element to return.
     * @return The drop at the given index.
     */
    public java.lang.String getDrop(int index) {
      return drop_.get(index);
    }
    /**
     * <pre>
     * Removed capabilities
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string drop = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the drop at the given index.
     */
    public com.google.protobuf.ByteString
        getDropBytes(int index) {
      return drop_.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 < add_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, add_.getRaw(i));
      }
      for (int i = 0; i < drop_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, drop_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < add_.size(); i++) {
          dataSize += computeStringSizeNoTag(add_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAddList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < drop_.size(); i++) {
          dataSize += computeStringSizeNoTag(drop_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDropList().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.V1.Capabilities)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Capabilities other = (io.kubernetes.client.proto.V1.Capabilities) obj;

      if (!getAddList()
          .equals(other.getAddList())) return false;
      if (!getDropList()
          .equals(other.getDropList())) 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 (getAddCount() > 0) {
        hash = (37 * hash) + ADD_FIELD_NUMBER;
        hash = (53 * hash) + getAddList().hashCode();
      }
      if (getDropCount() > 0) {
        hash = (37 * hash) + DROP_FIELD_NUMBER;
        hash = (53 * hash) + getDropList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.Capabilities 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.V1.Capabilities parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Capabilities 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.V1.Capabilities 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>
     * Adds and removes POSIX capabilities from running containers.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Capabilities}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Capabilities)
        io.kubernetes.client.proto.V1.CapabilitiesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Capabilities_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.Capabilities.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        add_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        drop_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.Capabilities result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          add_.makeImmutable();
          result.add_ = add_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          drop_.makeImmutable();
          result.drop_ = drop_;
        }
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Capabilities other) {
        if (other == io.kubernetes.client.proto.V1.Capabilities.getDefaultInstance()) return this;
        if (!other.add_.isEmpty()) {
          if (add_.isEmpty()) {
            add_ = other.add_;
            bitField0_ |= 0x00000001;
          } else {
            ensureAddIsMutable();
            add_.addAll(other.add_);
          }
          onChanged();
        }
        if (!other.drop_.isEmpty()) {
          if (drop_.isEmpty()) {
            drop_ = other.drop_;
            bitField0_ |= 0x00000002;
          } else {
            ensureDropIsMutable();
            drop_.addAll(other.drop_);
          }
          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: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureAddIsMutable();
                add_.add(bs);
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureDropIsMutable();
                drop_.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 com.google.protobuf.LazyStringArrayList add_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureAddIsMutable() {
        if (!add_.isModifiable()) {
          add_ = new com.google.protobuf.LazyStringArrayList(add_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * Added capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string add = 1;</code>
       * @return A list containing the add.
       */
      public com.google.protobuf.ProtocolStringList
          getAddList() {
        add_.makeImmutable();
        return add_;
      }
      /**
       * <pre>
       * Added capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string add = 1;</code>
       * @return The count of add.
       */
      public int getAddCount() {
        return add_.size();
      }
      /**
       * <pre>
       * Added capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string add = 1;</code>
       * @param index The index of the element to return.
       * @return The add at the given index.
       */
      public java.lang.String getAdd(int index) {
        return add_.get(index);
      }
      /**
       * <pre>
       * Added capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string add = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the add at the given index.
       */
      public com.google.protobuf.ByteString
          getAddBytes(int index) {
        return add_.getByteString(index);
      }
      /**
       * <pre>
       * Added capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string add = 1;</code>
       * @param index The index to set the value at.
       * @param value The add to set.
       * @return This builder for chaining.
       */
      public Builder setAdd(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAddIsMutable();
        add_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Added capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string add = 1;</code>
       * @param value The add to add.
       * @return This builder for chaining.
       */
      public Builder addAdd(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAddIsMutable();
        add_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Added capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string add = 1;</code>
       * @param values The add to add.
       * @return This builder for chaining.
       */
      public Builder addAllAdd(
          java.lang.Iterable<java.lang.String> values) {
        ensureAddIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, add_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Added capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string add = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAdd() {
        add_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Added capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string add = 1;</code>
       * @param value The bytes of the add to add.
       * @return This builder for chaining.
       */
      public Builder addAddBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAddIsMutable();
        add_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList drop_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureDropIsMutable() {
        if (!drop_.isModifiable()) {
          drop_ = new com.google.protobuf.LazyStringArrayList(drop_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * Removed capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string drop = 2;</code>
       * @return A list containing the drop.
       */
      public com.google.protobuf.ProtocolStringList
          getDropList() {
        drop_.makeImmutable();
        return drop_;
      }
      /**
       * <pre>
       * Removed capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string drop = 2;</code>
       * @return The count of drop.
       */
      public int getDropCount() {
        return drop_.size();
      }
      /**
       * <pre>
       * Removed capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string drop = 2;</code>
       * @param index The index of the element to return.
       * @return The drop at the given index.
       */
      public java.lang.String getDrop(int index) {
        return drop_.get(index);
      }
      /**
       * <pre>
       * Removed capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string drop = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the drop at the given index.
       */
      public com.google.protobuf.ByteString
          getDropBytes(int index) {
        return drop_.getByteString(index);
      }
      /**
       * <pre>
       * Removed capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string drop = 2;</code>
       * @param index The index to set the value at.
       * @param value The drop to set.
       * @return This builder for chaining.
       */
      public Builder setDrop(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureDropIsMutable();
        drop_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Removed capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string drop = 2;</code>
       * @param value The drop to add.
       * @return This builder for chaining.
       */
      public Builder addDrop(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureDropIsMutable();
        drop_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Removed capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string drop = 2;</code>
       * @param values The drop to add.
       * @return This builder for chaining.
       */
      public Builder addAllDrop(
          java.lang.Iterable<java.lang.String> values) {
        ensureDropIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, drop_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Removed capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string drop = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDrop() {
        drop_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Removed capabilities
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string drop = 2;</code>
       * @param value The bytes of the drop to add.
       * @return This builder for chaining.
       */
      public Builder addDropBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureDropIsMutable();
        drop_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Capabilities)
    }

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

    public static io.kubernetes.client.proto.V1.Capabilities getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface CephFSPersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.CephFSPersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return A list containing the monitors.
     */
    java.util.List<java.lang.String>
        getMonitorsList();
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return The count of monitors.
     */
    int getMonitorsCount();
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the element to return.
     * @return The monitors at the given index.
     */
    java.lang.String getMonitors(int index);
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the monitors at the given index.
     */
    com.google.protobuf.ByteString
        getMonitorsBytes(int index);

    /**
     * <pre>
     * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * user is Optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return Whether the user field is set.
     */
    boolean hasUser();
    /**
     * <pre>
     * user is Optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return The user.
     */
    java.lang.String getUser();
    /**
     * <pre>
     * user is Optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return The bytes for user.
     */
    com.google.protobuf.ByteString
        getUserBytes();

    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return Whether the secretFile field is set.
     */
    boolean hasSecretFile();
    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return The secretFile.
     */
    java.lang.String getSecretFile();
    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return The bytes for secretFile.
     */
    com.google.protobuf.ByteString
        getSecretFileBytes();

    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getSecretRef();
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder();

    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * Represents a Ceph Filesystem mount that lasts the lifetime of a pod
   * Cephfs volumes do not support ownership management or SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.CephFSPersistentVolumeSource}
   */
  public static final class CephFSPersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.CephFSPersistentVolumeSource)
      CephFSPersistentVolumeSourceOrBuilder {
  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= */ "",
        CephFSPersistentVolumeSource.class.getName());
    }
    // Use CephFSPersistentVolumeSource.newBuilder() to construct.
    private CephFSPersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CephFSPersistentVolumeSource() {
      monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      path_ = "";
      user_ = "";
      secretFile_ = "";
    }

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

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

    private int bitField0_;
    public static final int MONITORS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList monitors_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return A list containing the monitors.
     */
    public com.google.protobuf.ProtocolStringList
        getMonitorsList() {
      return monitors_;
    }
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return The count of monitors.
     */
    public int getMonitorsCount() {
      return monitors_.size();
    }
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the element to return.
     * @return The monitors at the given index.
     */
    public java.lang.String getMonitors(int index) {
      return monitors_.get(index);
    }
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the monitors at the given index.
     */
    public com.google.protobuf.ByteString
        getMonitorsBytes(int index) {
      return monitors_.getByteString(index);
    }

    public static final int PATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</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 Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</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 USER_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object user_ = "";
    /**
     * <pre>
     * user is Optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return Whether the user field is set.
     */
    @java.lang.Override
    public boolean hasUser() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * user is Optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return The user.
     */
    @java.lang.Override
    public java.lang.String getUser() {
      java.lang.Object ref = user_;
      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()) {
          user_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * user is Optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return The bytes for user.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserBytes() {
      java.lang.Object ref = user_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        user_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECRETFILE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object secretFile_ = "";
    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return Whether the secretFile field is set.
     */
    @java.lang.Override
    public boolean hasSecretFile() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return The secretFile.
     */
    @java.lang.Override
    public java.lang.String getSecretFile() {
      java.lang.Object ref = secretFile_;
      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()) {
          secretFile_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return The bytes for secretFile.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSecretFileBytes() {
      java.lang.Object ref = secretFile_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        secretFile_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECRETREF_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1.SecretReference secretRef_;
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }

    public static final int READONLY_FIELD_NUMBER = 6;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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 < monitors_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, monitors_.getRaw(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, user_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, secretFile_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(5, getSecretRef());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(6, readOnly_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < monitors_.size(); i++) {
          dataSize += computeStringSizeNoTag(monitors_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getMonitorsList().size();
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, user_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, secretFile_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSecretRef());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, readOnly_);
      }
      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.V1.CephFSPersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource other = (io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource) obj;

      if (!getMonitorsList()
          .equals(other.getMonitorsList())) return false;
      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (hasUser() != other.hasUser()) return false;
      if (hasUser()) {
        if (!getUser()
            .equals(other.getUser())) return false;
      }
      if (hasSecretFile() != other.hasSecretFile()) return false;
      if (hasSecretFile()) {
        if (!getSecretFile()
            .equals(other.getSecretFile())) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (getMonitorsCount() > 0) {
        hash = (37 * hash) + MONITORS_FIELD_NUMBER;
        hash = (53 * hash) + getMonitorsList().hashCode();
      }
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasUser()) {
        hash = (37 * hash) + USER_FIELD_NUMBER;
        hash = (53 * hash) + getUser().hashCode();
      }
      if (hasSecretFile()) {
        hash = (37 * hash) + SECRETFILE_FIELD_NUMBER;
        hash = (53 * hash) + getSecretFile().hashCode();
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource 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.V1.CephFSPersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource 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.V1.CephFSPersistentVolumeSource 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>
     * Represents a Ceph Filesystem mount that lasts the lifetime of a pod
     * Cephfs volumes do not support ownership management or SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.CephFSPersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.CephFSPersistentVolumeSource)
        io.kubernetes.client.proto.V1.CephFSPersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CephFSPersistentVolumeSource_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        monitors_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        path_ = "";
        user_ = "";
        secretFile_ = "";
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        readOnly_ = false;
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          monitors_.makeImmutable();
          result.monitors_ = monitors_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.user_ = user_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.secretFile_ = secretFile_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.CephFSPersistentVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.getDefaultInstance()) return this;
        if (!other.monitors_.isEmpty()) {
          if (monitors_.isEmpty()) {
            monitors_ = other.monitors_;
            bitField0_ |= 0x00000001;
          } else {
            ensureMonitorsIsMutable();
            monitors_.addAll(other.monitors_);
          }
          onChanged();
        }
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasUser()) {
          user_ = other.user_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasSecretFile()) {
          secretFile_ = other.secretFile_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureMonitorsIsMutable();
                monitors_.add(bs);
                break;
              } // case 10
              case 18: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                user_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                secretFile_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                readOnly_ = 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 com.google.protobuf.LazyStringArrayList monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureMonitorsIsMutable() {
        if (!monitors_.isModifiable()) {
          monitors_ = new com.google.protobuf.LazyStringArrayList(monitors_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return A list containing the monitors.
       */
      public com.google.protobuf.ProtocolStringList
          getMonitorsList() {
        monitors_.makeImmutable();
        return monitors_;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return The count of monitors.
       */
      public int getMonitorsCount() {
        return monitors_.size();
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index of the element to return.
       * @return The monitors at the given index.
       */
      public java.lang.String getMonitors(int index) {
        return monitors_.get(index);
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the monitors at the given index.
       */
      public com.google.protobuf.ByteString
          getMonitorsBytes(int index) {
        return monitors_.getByteString(index);
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index to set the value at.
       * @param value The monitors to set.
       * @return This builder for chaining.
       */
      public Builder setMonitors(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param value The monitors to add.
       * @return This builder for chaining.
       */
      public Builder addMonitors(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param values The monitors to add.
       * @return This builder for chaining.
       */
      public Builder addAllMonitors(
          java.lang.Iterable<java.lang.String> values) {
        ensureMonitorsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, monitors_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMonitors() {
        monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param value The bytes of the monitors to add.
       * @return This builder for chaining.
       */
      public Builder addMonitorsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</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 Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</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 Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object user_ = "";
      /**
       * <pre>
       * user is Optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @return Whether the user field is set.
       */
      public boolean hasUser() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * user is Optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @return The user.
       */
      public java.lang.String getUser() {
        java.lang.Object ref = user_;
        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()) {
            user_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * user is Optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @return The bytes for user.
       */
      public com.google.protobuf.ByteString
          getUserBytes() {
        java.lang.Object ref = user_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          user_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * user is Optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @param value The user to set.
       * @return This builder for chaining.
       */
      public Builder setUser(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * user is Optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUser() {
        user_ = getDefaultInstance().getUser();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * user is Optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @param value The bytes for user to set.
       * @return This builder for chaining.
       */
      public Builder setUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object secretFile_ = "";
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @return Whether the secretFile field is set.
       */
      public boolean hasSecretFile() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @return The secretFile.
       */
      public java.lang.String getSecretFile() {
        java.lang.Object ref = secretFile_;
        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()) {
            secretFile_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @return The bytes for secretFile.
       */
      public com.google.protobuf.ByteString
          getSecretFileBytes() {
        java.lang.Object ref = secretFile_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          secretFile_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @param value The secretFile to set.
       * @return This builder for chaining.
       */
      public Builder setSecretFile(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        secretFile_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSecretFile() {
        secretFile_ = getDefaultInstance().getSecretFile();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @param value The bytes for secretFile to set.
       * @return This builder for chaining.
       */
      public Builder setSecretFileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        secretFile_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SecretReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000010);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000020);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.CephFSPersistentVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface CephFSVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.CephFSVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return A list containing the monitors.
     */
    java.util.List<java.lang.String>
        getMonitorsList();
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return The count of monitors.
     */
    int getMonitorsCount();
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the element to return.
     * @return The monitors at the given index.
     */
    java.lang.String getMonitors(int index);
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the monitors at the given index.
     */
    com.google.protobuf.ByteString
        getMonitorsBytes(int index);

    /**
     * <pre>
     * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * user is optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return Whether the user field is set.
     */
    boolean hasUser();
    /**
     * <pre>
     * user is optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return The user.
     */
    java.lang.String getUser();
    /**
     * <pre>
     * user is optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return The bytes for user.
     */
    com.google.protobuf.ByteString
        getUserBytes();

    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return Whether the secretFile field is set.
     */
    boolean hasSecretFile();
    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return The secretFile.
     */
    java.lang.String getSecretFile();
    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return The bytes for secretFile.
     */
    com.google.protobuf.ByteString
        getSecretFileBytes();

    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef();
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder();

    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * Represents a Ceph Filesystem mount that lasts the lifetime of a pod
   * Cephfs volumes do not support ownership management or SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.CephFSVolumeSource}
   */
  public static final class CephFSVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.CephFSVolumeSource)
      CephFSVolumeSourceOrBuilder {
  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= */ "",
        CephFSVolumeSource.class.getName());
    }
    // Use CephFSVolumeSource.newBuilder() to construct.
    private CephFSVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CephFSVolumeSource() {
      monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      path_ = "";
      user_ = "";
      secretFile_ = "";
    }

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

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

    private int bitField0_;
    public static final int MONITORS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList monitors_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return A list containing the monitors.
     */
    public com.google.protobuf.ProtocolStringList
        getMonitorsList() {
      return monitors_;
    }
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return The count of monitors.
     */
    public int getMonitorsCount() {
      return monitors_.size();
    }
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the element to return.
     * @return The monitors at the given index.
     */
    public java.lang.String getMonitors(int index) {
      return monitors_.get(index);
    }
    /**
     * <pre>
     * monitors is Required: Monitors is a collection of Ceph monitors
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the monitors at the given index.
     */
    public com.google.protobuf.ByteString
        getMonitorsBytes(int index) {
      return monitors_.getByteString(index);
    }

    public static final int PATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</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 Optional: Used as the mounted root, rather than the full Ceph tree, default is /
     * +optional
     * </pre>
     *
     * <code>optional string path = 2;</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 USER_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object user_ = "";
    /**
     * <pre>
     * user is optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return Whether the user field is set.
     */
    @java.lang.Override
    public boolean hasUser() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * user is optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return The user.
     */
    @java.lang.Override
    public java.lang.String getUser() {
      java.lang.Object ref = user_;
      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()) {
          user_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * user is optional: User is the rados user name, default is admin
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 3;</code>
     * @return The bytes for user.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserBytes() {
      java.lang.Object ref = user_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        user_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECRETFILE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object secretFile_ = "";
    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return Whether the secretFile field is set.
     */
    @java.lang.Override
    public boolean hasSecretFile() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return The secretFile.
     */
    @java.lang.Override
    public java.lang.String getSecretFile() {
      java.lang.Object ref = secretFile_;
      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()) {
          secretFile_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string secretFile = 4;</code>
     * @return The bytes for secretFile.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSecretFileBytes() {
      java.lang.Object ref = secretFile_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        secretFile_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECRETREF_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }

    public static final int READONLY_FIELD_NUMBER = 6;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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 < monitors_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, monitors_.getRaw(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, user_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, secretFile_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(5, getSecretRef());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(6, readOnly_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < monitors_.size(); i++) {
          dataSize += computeStringSizeNoTag(monitors_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getMonitorsList().size();
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, user_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, secretFile_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSecretRef());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, readOnly_);
      }
      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.V1.CephFSVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.CephFSVolumeSource other = (io.kubernetes.client.proto.V1.CephFSVolumeSource) obj;

      if (!getMonitorsList()
          .equals(other.getMonitorsList())) return false;
      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (hasUser() != other.hasUser()) return false;
      if (hasUser()) {
        if (!getUser()
            .equals(other.getUser())) return false;
      }
      if (hasSecretFile() != other.hasSecretFile()) return false;
      if (hasSecretFile()) {
        if (!getSecretFile()
            .equals(other.getSecretFile())) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (getMonitorsCount() > 0) {
        hash = (37 * hash) + MONITORS_FIELD_NUMBER;
        hash = (53 * hash) + getMonitorsList().hashCode();
      }
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasUser()) {
        hash = (37 * hash) + USER_FIELD_NUMBER;
        hash = (53 * hash) + getUser().hashCode();
      }
      if (hasSecretFile()) {
        hash = (37 * hash) + SECRETFILE_FIELD_NUMBER;
        hash = (53 * hash) + getSecretFile().hashCode();
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.CephFSVolumeSource 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.V1.CephFSVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.CephFSVolumeSource 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.V1.CephFSVolumeSource 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>
     * Represents a Ceph Filesystem mount that lasts the lifetime of a pod
     * Cephfs volumes do not support ownership management or SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.CephFSVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.CephFSVolumeSource)
        io.kubernetes.client.proto.V1.CephFSVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CephFSVolumeSource_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        monitors_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        path_ = "";
        user_ = "";
        secretFile_ = "";
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        readOnly_ = false;
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.CephFSVolumeSource result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          monitors_.makeImmutable();
          result.monitors_ = monitors_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.user_ = user_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.secretFile_ = secretFile_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.CephFSVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.CephFSVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.CephFSVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.CephFSVolumeSource.getDefaultInstance()) return this;
        if (!other.monitors_.isEmpty()) {
          if (monitors_.isEmpty()) {
            monitors_ = other.monitors_;
            bitField0_ |= 0x00000001;
          } else {
            ensureMonitorsIsMutable();
            monitors_.addAll(other.monitors_);
          }
          onChanged();
        }
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasUser()) {
          user_ = other.user_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasSecretFile()) {
          secretFile_ = other.secretFile_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureMonitorsIsMutable();
                monitors_.add(bs);
                break;
              } // case 10
              case 18: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                user_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                secretFile_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                readOnly_ = 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 com.google.protobuf.LazyStringArrayList monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureMonitorsIsMutable() {
        if (!monitors_.isModifiable()) {
          monitors_ = new com.google.protobuf.LazyStringArrayList(monitors_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return A list containing the monitors.
       */
      public com.google.protobuf.ProtocolStringList
          getMonitorsList() {
        monitors_.makeImmutable();
        return monitors_;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return The count of monitors.
       */
      public int getMonitorsCount() {
        return monitors_.size();
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index of the element to return.
       * @return The monitors at the given index.
       */
      public java.lang.String getMonitors(int index) {
        return monitors_.get(index);
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the monitors at the given index.
       */
      public com.google.protobuf.ByteString
          getMonitorsBytes(int index) {
        return monitors_.getByteString(index);
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index to set the value at.
       * @param value The monitors to set.
       * @return This builder for chaining.
       */
      public Builder setMonitors(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param value The monitors to add.
       * @return This builder for chaining.
       */
      public Builder addMonitors(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param values The monitors to add.
       * @return This builder for chaining.
       */
      public Builder addAllMonitors(
          java.lang.Iterable<java.lang.String> values) {
        ensureMonitorsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, monitors_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMonitors() {
        monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is Required: Monitors is a collection of Ceph monitors
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param value The bytes of the monitors to add.
       * @return This builder for chaining.
       */
      public Builder addMonitorsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</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 Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</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 Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /
       * +optional
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object user_ = "";
      /**
       * <pre>
       * user is optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @return Whether the user field is set.
       */
      public boolean hasUser() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * user is optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @return The user.
       */
      public java.lang.String getUser() {
        java.lang.Object ref = user_;
        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()) {
            user_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * user is optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @return The bytes for user.
       */
      public com.google.protobuf.ByteString
          getUserBytes() {
        java.lang.Object ref = user_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          user_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * user is optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @param value The user to set.
       * @return This builder for chaining.
       */
      public Builder setUser(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * user is optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUser() {
        user_ = getDefaultInstance().getUser();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * user is optional: User is the rados user name, default is admin
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 3;</code>
       * @param value The bytes for user to set.
       * @return This builder for chaining.
       */
      public Builder setUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object secretFile_ = "";
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @return Whether the secretFile field is set.
       */
      public boolean hasSecretFile() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @return The secretFile.
       */
      public java.lang.String getSecretFile() {
        java.lang.Object ref = secretFile_;
        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()) {
            secretFile_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @return The bytes for secretFile.
       */
      public com.google.protobuf.ByteString
          getSecretFileBytes() {
        java.lang.Object ref = secretFile_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          secretFile_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @param value The secretFile to set.
       * @return This builder for chaining.
       */
      public Builder setSecretFile(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        secretFile_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSecretFile() {
        secretFile_ = getDefaultInstance().getSecretFile();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string secretFile = 4;</code>
       * @param value The bytes for secretFile to set.
       * @return This builder for chaining.
       */
      public Builder setSecretFileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        secretFile_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000010);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000020);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.CephFSVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.CephFSVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface CinderPersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.CinderPersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return Whether the volumeID field is set.
     */
    boolean hasVolumeID();
    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The volumeID.
     */
    java.lang.String getVolumeID();
    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The bytes for volumeID.
     */
    com.google.protobuf.ByteString
        getVolumeIDBytes();

    /**
     * <pre>
     * fsType Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * secretRef is Optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef is Optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getSecretRef();
    /**
     * <pre>
     * secretRef is Optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder();
  }
  /**
   * <pre>
   * Represents a cinder volume resource in Openstack.
   * A Cinder volume must exist before mounting to a container.
   * The volume must also be in the same region as the kubelet.
   * Cinder volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.CinderPersistentVolumeSource}
   */
  public static final class CinderPersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.CinderPersistentVolumeSource)
      CinderPersistentVolumeSourceOrBuilder {
  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= */ "",
        CinderPersistentVolumeSource.class.getName());
    }
    // Use CinderPersistentVolumeSource.newBuilder() to construct.
    private CinderPersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CinderPersistentVolumeSource() {
      volumeID_ = "";
      fsType_ = "";
    }

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

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

    private int bitField0_;
    public static final int VOLUMEID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeID_ = "";
    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return Whether the volumeID field is set.
     */
    @java.lang.Override
    public boolean hasVolumeID() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The volumeID.
     */
    @java.lang.Override
    public java.lang.String getVolumeID() {
      java.lang.Object ref = volumeID_;
      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()) {
          volumeID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The bytes for volumeID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeIDBytes() {
      java.lang.Object ref = volumeID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int SECRETREF_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.V1.SecretReference secretRef_;
    /**
     * <pre>
     * secretRef is Optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * secretRef is Optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef is Optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }

    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, volumeID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getSecretRef());
      }
      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, volumeID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getSecretRef());
      }
      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.V1.CinderPersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.CinderPersistentVolumeSource other = (io.kubernetes.client.proto.V1.CinderPersistentVolumeSource) obj;

      if (hasVolumeID() != other.hasVolumeID()) return false;
      if (hasVolumeID()) {
        if (!getVolumeID()
            .equals(other.getVolumeID())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) 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 (hasVolumeID()) {
        hash = (37 * hash) + VOLUMEID_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeID().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.CinderPersistentVolumeSource 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.V1.CinderPersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.CinderPersistentVolumeSource 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.V1.CinderPersistentVolumeSource 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>
     * Represents a cinder volume resource in Openstack.
     * A Cinder volume must exist before mounting to a container.
     * The volume must also be in the same region as the kubelet.
     * Cinder volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.CinderPersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.CinderPersistentVolumeSource)
        io.kubernetes.client.proto.V1.CinderPersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CinderPersistentVolumeSource_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        volumeID_ = "";
        fsType_ = "";
        readOnly_ = false;
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.CinderPersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.volumeID_ = volumeID_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          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.V1.CinderPersistentVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.CinderPersistentVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.CinderPersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.getDefaultInstance()) return this;
        if (other.hasVolumeID()) {
          volumeID_ = other.volumeID_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        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: {
                volumeID_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object volumeID_ = "";
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return Whether the volumeID field is set.
       */
      public boolean hasVolumeID() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return The volumeID.
       */
      public java.lang.String getVolumeID() {
        java.lang.Object ref = volumeID_;
        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()) {
            volumeID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return The bytes for volumeID.
       */
      public com.google.protobuf.ByteString
          getVolumeIDBytes() {
        java.lang.Object ref = volumeID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @param value The volumeID to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeID() {
        volumeID_ = getDefaultInstance().getVolumeID();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @param value The bytes for volumeID to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * fsType Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SecretReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef is Optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * secretRef is Optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef is Optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000008);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef is Optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef is Optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.CinderPersistentVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.CinderPersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface CinderVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.CinderVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return Whether the volumeID field is set.
     */
    boolean hasVolumeID();
    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The volumeID.
     */
    java.lang.String getVolumeID();
    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The bytes for volumeID.
     */
    com.google.protobuf.ByteString
        getVolumeIDBytes();

    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * secretRef is optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef is optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef();
    /**
     * <pre>
     * secretRef is optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder();
  }
  /**
   * <pre>
   * Represents a cinder volume resource in Openstack.
   * A Cinder volume must exist before mounting to a container.
   * The volume must also be in the same region as the kubelet.
   * Cinder volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.CinderVolumeSource}
   */
  public static final class CinderVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.CinderVolumeSource)
      CinderVolumeSourceOrBuilder {
  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= */ "",
        CinderVolumeSource.class.getName());
    }
    // Use CinderVolumeSource.newBuilder() to construct.
    private CinderVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CinderVolumeSource() {
      volumeID_ = "";
      fsType_ = "";
    }

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

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

    private int bitField0_;
    public static final int VOLUMEID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeID_ = "";
    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return Whether the volumeID field is set.
     */
    @java.lang.Override
    public boolean hasVolumeID() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The volumeID.
     */
    @java.lang.Override
    public java.lang.String getVolumeID() {
      java.lang.Object ref = volumeID_;
      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()) {
          volumeID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeID used to identify the volume in cinder.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The bytes for volumeID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeIDBytes() {
      java.lang.Object ref = volumeID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int SECRETREF_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
    /**
     * <pre>
     * secretRef is optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * secretRef is optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef is optional: points to a secret object containing parameters used to connect
     * to OpenStack.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }

    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, volumeID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getSecretRef());
      }
      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, volumeID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getSecretRef());
      }
      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.V1.CinderVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.CinderVolumeSource other = (io.kubernetes.client.proto.V1.CinderVolumeSource) obj;

      if (hasVolumeID() != other.hasVolumeID()) return false;
      if (hasVolumeID()) {
        if (!getVolumeID()
            .equals(other.getVolumeID())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) 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 (hasVolumeID()) {
        hash = (37 * hash) + VOLUMEID_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeID().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.CinderVolumeSource 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.V1.CinderVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.CinderVolumeSource 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.V1.CinderVolumeSource 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>
     * Represents a cinder volume resource in Openstack.
     * A Cinder volume must exist before mounting to a container.
     * The volume must also be in the same region as the kubelet.
     * Cinder volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.CinderVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.CinderVolumeSource)
        io.kubernetes.client.proto.V1.CinderVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_CinderVolumeSource_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        volumeID_ = "";
        fsType_ = "";
        readOnly_ = false;
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.CinderVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.volumeID_ = volumeID_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          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.V1.CinderVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.CinderVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.CinderVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.CinderVolumeSource.getDefaultInstance()) return this;
        if (other.hasVolumeID()) {
          volumeID_ = other.volumeID_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        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: {
                volumeID_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object volumeID_ = "";
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return Whether the volumeID field is set.
       */
      public boolean hasVolumeID() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return The volumeID.
       */
      public java.lang.String getVolumeID() {
        java.lang.Object ref = volumeID_;
        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()) {
            volumeID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return The bytes for volumeID.
       */
      public com.google.protobuf.ByteString
          getVolumeIDBytes() {
        java.lang.Object ref = volumeID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @param value The volumeID to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeID() {
        volumeID_ = getDefaultInstance().getVolumeID();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeID used to identify the volume in cinder.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @param value The bytes for volumeID to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef is optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * secretRef is optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef is optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef is optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000008);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef is optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef is optional: points to a secret object containing parameters used to connect
       * to OpenStack.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.CinderVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.CinderVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ClaimSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ClaimSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * ResourceClaimName is the name of a ResourceClaim object in the same
     * namespace as this pod.
     * </pre>
     *
     * <code>optional string resourceClaimName = 1;</code>
     * @return Whether the resourceClaimName field is set.
     */
    boolean hasResourceClaimName();
    /**
     * <pre>
     * ResourceClaimName is the name of a ResourceClaim object in the same
     * namespace as this pod.
     * </pre>
     *
     * <code>optional string resourceClaimName = 1;</code>
     * @return The resourceClaimName.
     */
    java.lang.String getResourceClaimName();
    /**
     * <pre>
     * ResourceClaimName is the name of a ResourceClaim object in the same
     * namespace as this pod.
     * </pre>
     *
     * <code>optional string resourceClaimName = 1;</code>
     * @return The bytes for resourceClaimName.
     */
    com.google.protobuf.ByteString
        getResourceClaimNameBytes();

    /**
     * <pre>
     * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
     * object in the same namespace as this pod.
     *
     * The template will be used to create a new ResourceClaim, which will
     * be bound to this pod. When this pod is deleted, the ResourceClaim
     * will also be deleted. The pod name and resource name, along with a
     * generated component, will be used to form a unique name for the
     * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
     *
     * This field is immutable and no changes will be made to the
     * corresponding ResourceClaim by the control plane after creating the
     * ResourceClaim.
     * </pre>
     *
     * <code>optional string resourceClaimTemplateName = 2;</code>
     * @return Whether the resourceClaimTemplateName field is set.
     */
    boolean hasResourceClaimTemplateName();
    /**
     * <pre>
     * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
     * object in the same namespace as this pod.
     *
     * The template will be used to create a new ResourceClaim, which will
     * be bound to this pod. When this pod is deleted, the ResourceClaim
     * will also be deleted. The pod name and resource name, along with a
     * generated component, will be used to form a unique name for the
     * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
     *
     * This field is immutable and no changes will be made to the
     * corresponding ResourceClaim by the control plane after creating the
     * ResourceClaim.
     * </pre>
     *
     * <code>optional string resourceClaimTemplateName = 2;</code>
     * @return The resourceClaimTemplateName.
     */
    java.lang.String getResourceClaimTemplateName();
    /**
     * <pre>
     * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
     * object in the same namespace as this pod.
     *
     * The template will be used to create a new ResourceClaim, which will
     * be bound to this pod. When this pod is deleted, the ResourceClaim
     * will also be deleted. The pod name and resource name, along with a
     * generated component, will be used to form a unique name for the
     * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
     *
     * This field is immutable and no changes will be made to the
     * corresponding ResourceClaim by the control plane after creating the
     * ResourceClaim.
     * </pre>
     *
     * <code>optional string resourceClaimTemplateName = 2;</code>
     * @return The bytes for resourceClaimTemplateName.
     */
    com.google.protobuf.ByteString
        getResourceClaimTemplateNameBytes();
  }
  /**
   * <pre>
   * ClaimSource describes a reference to a ResourceClaim.
   *
   * Exactly one of these fields should be set.  Consumers of this type must
   * treat an empty object as if it has an unknown value.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ClaimSource}
   */
  public static final class ClaimSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ClaimSource)
      ClaimSourceOrBuilder {
  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= */ "",
        ClaimSource.class.getName());
    }
    // Use ClaimSource.newBuilder() to construct.
    private ClaimSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ClaimSource() {
      resourceClaimName_ = "";
      resourceClaimTemplateName_ = "";
    }

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

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

    private int bitField0_;
    public static final int RESOURCECLAIMNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object resourceClaimName_ = "";
    /**
     * <pre>
     * ResourceClaimName is the name of a ResourceClaim object in the same
     * namespace as this pod.
     * </pre>
     *
     * <code>optional string resourceClaimName = 1;</code>
     * @return Whether the resourceClaimName field is set.
     */
    @java.lang.Override
    public boolean hasResourceClaimName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * ResourceClaimName is the name of a ResourceClaim object in the same
     * namespace as this pod.
     * </pre>
     *
     * <code>optional string resourceClaimName = 1;</code>
     * @return The resourceClaimName.
     */
    @java.lang.Override
    public java.lang.String getResourceClaimName() {
      java.lang.Object ref = resourceClaimName_;
      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()) {
          resourceClaimName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ResourceClaimName is the name of a ResourceClaim object in the same
     * namespace as this pod.
     * </pre>
     *
     * <code>optional string resourceClaimName = 1;</code>
     * @return The bytes for resourceClaimName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResourceClaimNameBytes() {
      java.lang.Object ref = resourceClaimName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resourceClaimName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESOURCECLAIMTEMPLATENAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object resourceClaimTemplateName_ = "";
    /**
     * <pre>
     * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
     * object in the same namespace as this pod.
     *
     * The template will be used to create a new ResourceClaim, which will
     * be bound to this pod. When this pod is deleted, the ResourceClaim
     * will also be deleted. The pod name and resource name, along with a
     * generated component, will be used to form a unique name for the
     * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
     *
     * This field is immutable and no changes will be made to the
     * corresponding ResourceClaim by the control plane after creating the
     * ResourceClaim.
     * </pre>
     *
     * <code>optional string resourceClaimTemplateName = 2;</code>
     * @return Whether the resourceClaimTemplateName field is set.
     */
    @java.lang.Override
    public boolean hasResourceClaimTemplateName() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
     * object in the same namespace as this pod.
     *
     * The template will be used to create a new ResourceClaim, which will
     * be bound to this pod. When this pod is deleted, the ResourceClaim
     * will also be deleted. The pod name and resource name, along with a
     * generated component, will be used to form a unique name for the
     * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
     *
     * This field is immutable and no changes will be made to the
     * corresponding ResourceClaim by the control plane after creating the
     * ResourceClaim.
     * </pre>
     *
     * <code>optional string resourceClaimTemplateName = 2;</code>
     * @return The resourceClaimTemplateName.
     */
    @java.lang.Override
    public java.lang.String getResourceClaimTemplateName() {
      java.lang.Object ref = resourceClaimTemplateName_;
      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()) {
          resourceClaimTemplateName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
     * object in the same namespace as this pod.
     *
     * The template will be used to create a new ResourceClaim, which will
     * be bound to this pod. When this pod is deleted, the ResourceClaim
     * will also be deleted. The pod name and resource name, along with a
     * generated component, will be used to form a unique name for the
     * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
     *
     * This field is immutable and no changes will be made to the
     * corresponding ResourceClaim by the control plane after creating the
     * ResourceClaim.
     * </pre>
     *
     * <code>optional string resourceClaimTemplateName = 2;</code>
     * @return The bytes for resourceClaimTemplateName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResourceClaimTemplateNameBytes() {
      java.lang.Object ref = resourceClaimTemplateName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resourceClaimTemplateName_ = 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, resourceClaimName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, resourceClaimTemplateName_);
      }
      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, resourceClaimName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, resourceClaimTemplateName_);
      }
      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.V1.ClaimSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ClaimSource other = (io.kubernetes.client.proto.V1.ClaimSource) obj;

      if (hasResourceClaimName() != other.hasResourceClaimName()) return false;
      if (hasResourceClaimName()) {
        if (!getResourceClaimName()
            .equals(other.getResourceClaimName())) return false;
      }
      if (hasResourceClaimTemplateName() != other.hasResourceClaimTemplateName()) return false;
      if (hasResourceClaimTemplateName()) {
        if (!getResourceClaimTemplateName()
            .equals(other.getResourceClaimTemplateName())) 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 (hasResourceClaimName()) {
        hash = (37 * hash) + RESOURCECLAIMNAME_FIELD_NUMBER;
        hash = (53 * hash) + getResourceClaimName().hashCode();
      }
      if (hasResourceClaimTemplateName()) {
        hash = (37 * hash) + RESOURCECLAIMTEMPLATENAME_FIELD_NUMBER;
        hash = (53 * hash) + getResourceClaimTemplateName().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ClaimSource 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.V1.ClaimSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ClaimSource 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.V1.ClaimSource 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>
     * ClaimSource describes a reference to a ResourceClaim.
     *
     * Exactly one of these fields should be set.  Consumers of this type must
     * treat an empty object as if it has an unknown value.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ClaimSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ClaimSource)
        io.kubernetes.client.proto.V1.ClaimSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ClaimSource_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ClaimSource.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ClaimSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.resourceClaimName_ = resourceClaimName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.resourceClaimTemplateName_ = resourceClaimTemplateName_;
          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.V1.ClaimSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.ClaimSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ClaimSource other) {
        if (other == io.kubernetes.client.proto.V1.ClaimSource.getDefaultInstance()) return this;
        if (other.hasResourceClaimName()) {
          resourceClaimName_ = other.resourceClaimName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasResourceClaimTemplateName()) {
          resourceClaimTemplateName_ = other.resourceClaimTemplateName_;
          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: {
                resourceClaimName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                resourceClaimTemplateName_ = 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 resourceClaimName_ = "";
      /**
       * <pre>
       * ResourceClaimName is the name of a ResourceClaim object in the same
       * namespace as this pod.
       * </pre>
       *
       * <code>optional string resourceClaimName = 1;</code>
       * @return Whether the resourceClaimName field is set.
       */
      public boolean hasResourceClaimName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * ResourceClaimName is the name of a ResourceClaim object in the same
       * namespace as this pod.
       * </pre>
       *
       * <code>optional string resourceClaimName = 1;</code>
       * @return The resourceClaimName.
       */
      public java.lang.String getResourceClaimName() {
        java.lang.Object ref = resourceClaimName_;
        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()) {
            resourceClaimName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ResourceClaimName is the name of a ResourceClaim object in the same
       * namespace as this pod.
       * </pre>
       *
       * <code>optional string resourceClaimName = 1;</code>
       * @return The bytes for resourceClaimName.
       */
      public com.google.protobuf.ByteString
          getResourceClaimNameBytes() {
        java.lang.Object ref = resourceClaimName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resourceClaimName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ResourceClaimName is the name of a ResourceClaim object in the same
       * namespace as this pod.
       * </pre>
       *
       * <code>optional string resourceClaimName = 1;</code>
       * @param value The resourceClaimName to set.
       * @return This builder for chaining.
       */
      public Builder setResourceClaimName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        resourceClaimName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceClaimName is the name of a ResourceClaim object in the same
       * namespace as this pod.
       * </pre>
       *
       * <code>optional string resourceClaimName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearResourceClaimName() {
        resourceClaimName_ = getDefaultInstance().getResourceClaimName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceClaimName is the name of a ResourceClaim object in the same
       * namespace as this pod.
       * </pre>
       *
       * <code>optional string resourceClaimName = 1;</code>
       * @param value The bytes for resourceClaimName to set.
       * @return This builder for chaining.
       */
      public Builder setResourceClaimNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        resourceClaimName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object resourceClaimTemplateName_ = "";
      /**
       * <pre>
       * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
       * object in the same namespace as this pod.
       *
       * The template will be used to create a new ResourceClaim, which will
       * be bound to this pod. When this pod is deleted, the ResourceClaim
       * will also be deleted. The pod name and resource name, along with a
       * generated component, will be used to form a unique name for the
       * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
       *
       * This field is immutable and no changes will be made to the
       * corresponding ResourceClaim by the control plane after creating the
       * ResourceClaim.
       * </pre>
       *
       * <code>optional string resourceClaimTemplateName = 2;</code>
       * @return Whether the resourceClaimTemplateName field is set.
       */
      public boolean hasResourceClaimTemplateName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
       * object in the same namespace as this pod.
       *
       * The template will be used to create a new ResourceClaim, which will
       * be bound to this pod. When this pod is deleted, the ResourceClaim
       * will also be deleted. The pod name and resource name, along with a
       * generated component, will be used to form a unique name for the
       * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
       *
       * This field is immutable and no changes will be made to the
       * corresponding ResourceClaim by the control plane after creating the
       * ResourceClaim.
       * </pre>
       *
       * <code>optional string resourceClaimTemplateName = 2;</code>
       * @return The resourceClaimTemplateName.
       */
      public java.lang.String getResourceClaimTemplateName() {
        java.lang.Object ref = resourceClaimTemplateName_;
        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()) {
            resourceClaimTemplateName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
       * object in the same namespace as this pod.
       *
       * The template will be used to create a new ResourceClaim, which will
       * be bound to this pod. When this pod is deleted, the ResourceClaim
       * will also be deleted. The pod name and resource name, along with a
       * generated component, will be used to form a unique name for the
       * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
       *
       * This field is immutable and no changes will be made to the
       * corresponding ResourceClaim by the control plane after creating the
       * ResourceClaim.
       * </pre>
       *
       * <code>optional string resourceClaimTemplateName = 2;</code>
       * @return The bytes for resourceClaimTemplateName.
       */
      public com.google.protobuf.ByteString
          getResourceClaimTemplateNameBytes() {
        java.lang.Object ref = resourceClaimTemplateName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resourceClaimTemplateName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
       * object in the same namespace as this pod.
       *
       * The template will be used to create a new ResourceClaim, which will
       * be bound to this pod. When this pod is deleted, the ResourceClaim
       * will also be deleted. The pod name and resource name, along with a
       * generated component, will be used to form a unique name for the
       * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
       *
       * This field is immutable and no changes will be made to the
       * corresponding ResourceClaim by the control plane after creating the
       * ResourceClaim.
       * </pre>
       *
       * <code>optional string resourceClaimTemplateName = 2;</code>
       * @param value The resourceClaimTemplateName to set.
       * @return This builder for chaining.
       */
      public Builder setResourceClaimTemplateName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        resourceClaimTemplateName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
       * object in the same namespace as this pod.
       *
       * The template will be used to create a new ResourceClaim, which will
       * be bound to this pod. When this pod is deleted, the ResourceClaim
       * will also be deleted. The pod name and resource name, along with a
       * generated component, will be used to form a unique name for the
       * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
       *
       * This field is immutable and no changes will be made to the
       * corresponding ResourceClaim by the control plane after creating the
       * ResourceClaim.
       * </pre>
       *
       * <code>optional string resourceClaimTemplateName = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResourceClaimTemplateName() {
        resourceClaimTemplateName_ = getDefaultInstance().getResourceClaimTemplateName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceClaimTemplateName is the name of a ResourceClaimTemplate
       * object in the same namespace as this pod.
       *
       * The template will be used to create a new ResourceClaim, which will
       * be bound to this pod. When this pod is deleted, the ResourceClaim
       * will also be deleted. The pod name and resource name, along with a
       * generated component, will be used to form a unique name for the
       * ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.
       *
       * This field is immutable and no changes will be made to the
       * corresponding ResourceClaim by the control plane after creating the
       * ResourceClaim.
       * </pre>
       *
       * <code>optional string resourceClaimTemplateName = 2;</code>
       * @param value The bytes for resourceClaimTemplateName to set.
       * @return This builder for chaining.
       */
      public Builder setResourceClaimTemplateNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        resourceClaimTemplateName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ClaimSource)
    }

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

    public static io.kubernetes.client.proto.V1.ClaimSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ClientIPConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ClientIPConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * timeoutSeconds specifies the seconds of ClientIP type session sticky time.
     * The value must be &gt;0 &amp;&amp; &lt;=86400(for 1 day) if ServiceAffinity == "ClientIP".
     * Default value is 10800(for 3 hours).
     * +optional
     * </pre>
     *
     * <code>optional int32 timeoutSeconds = 1;</code>
     * @return Whether the timeoutSeconds field is set.
     */
    boolean hasTimeoutSeconds();
    /**
     * <pre>
     * timeoutSeconds specifies the seconds of ClientIP type session sticky time.
     * The value must be &gt;0 &amp;&amp; &lt;=86400(for 1 day) if ServiceAffinity == "ClientIP".
     * Default value is 10800(for 3 hours).
     * +optional
     * </pre>
     *
     * <code>optional int32 timeoutSeconds = 1;</code>
     * @return The timeoutSeconds.
     */
    int getTimeoutSeconds();
  }
  /**
   * <pre>
   * ClientIPConfig represents the configurations of Client IP based session affinity.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ClientIPConfig}
   */
  public static final class ClientIPConfig extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ClientIPConfig)
      ClientIPConfigOrBuilder {
  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= */ "",
        ClientIPConfig.class.getName());
    }
    // Use ClientIPConfig.newBuilder() to construct.
    private ClientIPConfig(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ClientIPConfig() {
    }

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

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

    private int bitField0_;
    public static final int TIMEOUTSECONDS_FIELD_NUMBER = 1;
    private int timeoutSeconds_ = 0;
    /**
     * <pre>
     * timeoutSeconds specifies the seconds of ClientIP type session sticky time.
     * The value must be &gt;0 &amp;&amp; &lt;=86400(for 1 day) if ServiceAffinity == "ClientIP".
     * Default value is 10800(for 3 hours).
     * +optional
     * </pre>
     *
     * <code>optional int32 timeoutSeconds = 1;</code>
     * @return Whether the timeoutSeconds field is set.
     */
    @java.lang.Override
    public boolean hasTimeoutSeconds() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * timeoutSeconds specifies the seconds of ClientIP type session sticky time.
     * The value must be &gt;0 &amp;&amp; &lt;=86400(for 1 day) if ServiceAffinity == "ClientIP".
     * Default value is 10800(for 3 hours).
     * +optional
     * </pre>
     *
     * <code>optional int32 timeoutSeconds = 1;</code>
     * @return The timeoutSeconds.
     */
    @java.lang.Override
    public int getTimeoutSeconds() {
      return timeoutSeconds_;
    }

    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.writeInt32(1, timeoutSeconds_);
      }
      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
          .computeInt32Size(1, timeoutSeconds_);
      }
      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.V1.ClientIPConfig)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ClientIPConfig other = (io.kubernetes.client.proto.V1.ClientIPConfig) obj;

      if (hasTimeoutSeconds() != other.hasTimeoutSeconds()) return false;
      if (hasTimeoutSeconds()) {
        if (getTimeoutSeconds()
            != other.getTimeoutSeconds()) 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 (hasTimeoutSeconds()) {
        hash = (37 * hash) + TIMEOUTSECONDS_FIELD_NUMBER;
        hash = (53 * hash) + getTimeoutSeconds();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ClientIPConfig 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.V1.ClientIPConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ClientIPConfig 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.V1.ClientIPConfig 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>
     * ClientIPConfig represents the configurations of Client IP based session affinity.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ClientIPConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ClientIPConfig)
        io.kubernetes.client.proto.V1.ClientIPConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ClientIPConfig_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ClientIPConfig.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ClientIPConfig result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.timeoutSeconds_ = timeoutSeconds_;
          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.V1.ClientIPConfig) {
          return mergeFrom((io.kubernetes.client.proto.V1.ClientIPConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ClientIPConfig other) {
        if (other == io.kubernetes.client.proto.V1.ClientIPConfig.getDefaultInstance()) return this;
        if (other.hasTimeoutSeconds()) {
          setTimeoutSeconds(other.getTimeoutSeconds());
        }
        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: {
                timeoutSeconds_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int timeoutSeconds_ ;
      /**
       * <pre>
       * timeoutSeconds specifies the seconds of ClientIP type session sticky time.
       * The value must be &gt;0 &amp;&amp; &lt;=86400(for 1 day) if ServiceAffinity == "ClientIP".
       * Default value is 10800(for 3 hours).
       * +optional
       * </pre>
       *
       * <code>optional int32 timeoutSeconds = 1;</code>
       * @return Whether the timeoutSeconds field is set.
       */
      @java.lang.Override
      public boolean hasTimeoutSeconds() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * timeoutSeconds specifies the seconds of ClientIP type session sticky time.
       * The value must be &gt;0 &amp;&amp; &lt;=86400(for 1 day) if ServiceAffinity == "ClientIP".
       * Default value is 10800(for 3 hours).
       * +optional
       * </pre>
       *
       * <code>optional int32 timeoutSeconds = 1;</code>
       * @return The timeoutSeconds.
       */
      @java.lang.Override
      public int getTimeoutSeconds() {
        return timeoutSeconds_;
      }
      /**
       * <pre>
       * timeoutSeconds specifies the seconds of ClientIP type session sticky time.
       * The value must be &gt;0 &amp;&amp; &lt;=86400(for 1 day) if ServiceAffinity == "ClientIP".
       * Default value is 10800(for 3 hours).
       * +optional
       * </pre>
       *
       * <code>optional int32 timeoutSeconds = 1;</code>
       * @param value The timeoutSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setTimeoutSeconds(int value) {

        timeoutSeconds_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * timeoutSeconds specifies the seconds of ClientIP type session sticky time.
       * The value must be &gt;0 &amp;&amp; &lt;=86400(for 1 day) if ServiceAffinity == "ClientIP".
       * Default value is 10800(for 3 hours).
       * +optional
       * </pre>
       *
       * <code>optional int32 timeoutSeconds = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimeoutSeconds() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timeoutSeconds_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ClientIPConfig)
    }

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

    public static io.kubernetes.client.proto.V1.ClientIPConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ClusterTrustBundleProjectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ClusterTrustBundleProjection)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
     * with signerName and labelSelector.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
     * with signerName and labelSelector.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
     * with signerName and labelSelector.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Select all ClusterTrustBundles that match this signer name.
     * Mutually-exclusive with name.  The contents of all selected
     * ClusterTrustBundles will be unified and deduplicated.
     * +optional
     * </pre>
     *
     * <code>optional string signerName = 2;</code>
     * @return Whether the signerName field is set.
     */
    boolean hasSignerName();
    /**
     * <pre>
     * Select all ClusterTrustBundles that match this signer name.
     * Mutually-exclusive with name.  The contents of all selected
     * ClusterTrustBundles will be unified and deduplicated.
     * +optional
     * </pre>
     *
     * <code>optional string signerName = 2;</code>
     * @return The signerName.
     */
    java.lang.String getSignerName();
    /**
     * <pre>
     * Select all ClusterTrustBundles that match this signer name.
     * Mutually-exclusive with name.  The contents of all selected
     * ClusterTrustBundles will be unified and deduplicated.
     * +optional
     * </pre>
     *
     * <code>optional string signerName = 2;</code>
     * @return The bytes for signerName.
     */
    com.google.protobuf.ByteString
        getSignerNameBytes();

    /**
     * <pre>
     * Select all ClusterTrustBundles that match this label selector.  Only has
     * effect if signerName is set.  Mutually-exclusive with name.  If unset,
     * interpreted as "match nothing".  If set but empty, interpreted as "match
     * everything".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
     * @return Whether the labelSelector field is set.
     */
    boolean hasLabelSelector();
    /**
     * <pre>
     * Select all ClusterTrustBundles that match this label selector.  Only has
     * effect if signerName is set.  Mutually-exclusive with name.  If unset,
     * interpreted as "match nothing".  If set but empty, interpreted as "match
     * everything".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
     * @return The labelSelector.
     */
    io.kubernetes.client.proto.Meta.LabelSelector getLabelSelector();
    /**
     * <pre>
     * Select all ClusterTrustBundles that match this label selector.  Only has
     * effect if signerName is set.  Mutually-exclusive with name.  If unset,
     * interpreted as "match nothing".  If set but empty, interpreted as "match
     * everything".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
     */
    io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getLabelSelectorOrBuilder();

    /**
     * <pre>
     * If true, don't block pod startup if the referenced ClusterTrustBundle(s)
     * aren't available.  If using name, then the named ClusterTrustBundle is
     * allowed not to exist.  If using signerName, then the combination of
     * signerName and labelSelector is allowed to match zero
     * ClusterTrustBundles.
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 5;</code>
     * @return Whether the optional field is set.
     */
    boolean hasOptional();
    /**
     * <pre>
     * If true, don't block pod startup if the referenced ClusterTrustBundle(s)
     * aren't available.  If using name, then the named ClusterTrustBundle is
     * allowed not to exist.  If using signerName, then the combination of
     * signerName and labelSelector is allowed to match zero
     * ClusterTrustBundles.
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 5;</code>
     * @return The optional.
     */
    boolean getOptional();

    /**
     * <pre>
     * Relative path from the volume root to write the bundle.
     * </pre>
     *
     * <code>optional string path = 4;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * Relative path from the volume root to write the bundle.
     * </pre>
     *
     * <code>optional string path = 4;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Relative path from the volume root to write the bundle.
     * </pre>
     *
     * <code>optional string path = 4;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();
  }
  /**
   * <pre>
   * ClusterTrustBundleProjection describes how to select a set of
   * ClusterTrustBundle objects and project their contents into the pod
   * filesystem.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ClusterTrustBundleProjection}
   */
  public static final class ClusterTrustBundleProjection extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ClusterTrustBundleProjection)
      ClusterTrustBundleProjectionOrBuilder {
  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= */ "",
        ClusterTrustBundleProjection.class.getName());
    }
    // Use ClusterTrustBundleProjection.newBuilder() to construct.
    private ClusterTrustBundleProjection(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ClusterTrustBundleProjection() {
      name_ = "";
      signerName_ = "";
      path_ = "";
    }

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

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
     * with signerName and labelSelector.
     * +optional
     * </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>
     * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
     * with signerName and labelSelector.
     * +optional
     * </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>
     * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
     * with signerName and labelSelector.
     * +optional
     * </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 SIGNERNAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object signerName_ = "";
    /**
     * <pre>
     * Select all ClusterTrustBundles that match this signer name.
     * Mutually-exclusive with name.  The contents of all selected
     * ClusterTrustBundles will be unified and deduplicated.
     * +optional
     * </pre>
     *
     * <code>optional string signerName = 2;</code>
     * @return Whether the signerName field is set.
     */
    @java.lang.Override
    public boolean hasSignerName() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Select all ClusterTrustBundles that match this signer name.
     * Mutually-exclusive with name.  The contents of all selected
     * ClusterTrustBundles will be unified and deduplicated.
     * +optional
     * </pre>
     *
     * <code>optional string signerName = 2;</code>
     * @return The signerName.
     */
    @java.lang.Override
    public java.lang.String getSignerName() {
      java.lang.Object ref = signerName_;
      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()) {
          signerName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Select all ClusterTrustBundles that match this signer name.
     * Mutually-exclusive with name.  The contents of all selected
     * ClusterTrustBundles will be unified and deduplicated.
     * +optional
     * </pre>
     *
     * <code>optional string signerName = 2;</code>
     * @return The bytes for signerName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSignerNameBytes() {
      java.lang.Object ref = signerName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        signerName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LABELSELECTOR_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.Meta.LabelSelector labelSelector_;
    /**
     * <pre>
     * Select all ClusterTrustBundles that match this label selector.  Only has
     * effect if signerName is set.  Mutually-exclusive with name.  If unset,
     * interpreted as "match nothing".  If set but empty, interpreted as "match
     * everything".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
     * @return Whether the labelSelector field is set.
     */
    @java.lang.Override
    public boolean hasLabelSelector() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Select all ClusterTrustBundles that match this label selector.  Only has
     * effect if signerName is set.  Mutually-exclusive with name.  If unset,
     * interpreted as "match nothing".  If set but empty, interpreted as "match
     * everything".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
     * @return The labelSelector.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.LabelSelector getLabelSelector() {
      return labelSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
    }
    /**
     * <pre>
     * Select all ClusterTrustBundles that match this label selector.  Only has
     * effect if signerName is set.  Mutually-exclusive with name.  If unset,
     * interpreted as "match nothing".  If set but empty, interpreted as "match
     * everything".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getLabelSelectorOrBuilder() {
      return labelSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
    }

    public static final int OPTIONAL_FIELD_NUMBER = 5;
    private boolean optional_ = false;
    /**
     * <pre>
     * If true, don't block pod startup if the referenced ClusterTrustBundle(s)
     * aren't available.  If using name, then the named ClusterTrustBundle is
     * allowed not to exist.  If using signerName, then the combination of
     * signerName and labelSelector is allowed to match zero
     * ClusterTrustBundles.
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 5;</code>
     * @return Whether the optional field is set.
     */
    @java.lang.Override
    public boolean hasOptional() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * If true, don't block pod startup if the referenced ClusterTrustBundle(s)
     * aren't available.  If using name, then the named ClusterTrustBundle is
     * allowed not to exist.  If using signerName, then the combination of
     * signerName and labelSelector is allowed to match zero
     * ClusterTrustBundles.
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 5;</code>
     * @return The optional.
     */
    @java.lang.Override
    public boolean getOptional() {
      return optional_;
    }

    public static final int PATH_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * Relative path from the volume root to write the bundle.
     * </pre>
     *
     * <code>optional string path = 4;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * Relative path from the volume root to write the bundle.
     * </pre>
     *
     * <code>optional string path = 4;</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>
     * Relative path from the volume root to write the bundle.
     * </pre>
     *
     * <code>optional string path = 4;</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;
      }
    }

    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, signerName_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getLabelSelector());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, path_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(5, optional_);
      }
      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, signerName_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getLabelSelector());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, path_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, optional_);
      }
      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.V1.ClusterTrustBundleProjection)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ClusterTrustBundleProjection other = (io.kubernetes.client.proto.V1.ClusterTrustBundleProjection) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasSignerName() != other.hasSignerName()) return false;
      if (hasSignerName()) {
        if (!getSignerName()
            .equals(other.getSignerName())) return false;
      }
      if (hasLabelSelector() != other.hasLabelSelector()) return false;
      if (hasLabelSelector()) {
        if (!getLabelSelector()
            .equals(other.getLabelSelector())) return false;
      }
      if (hasOptional() != other.hasOptional()) return false;
      if (hasOptional()) {
        if (getOptional()
            != other.getOptional()) return false;
      }
      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) 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 (hasSignerName()) {
        hash = (37 * hash) + SIGNERNAME_FIELD_NUMBER;
        hash = (53 * hash) + getSignerName().hashCode();
      }
      if (hasLabelSelector()) {
        hash = (37 * hash) + LABELSELECTOR_FIELD_NUMBER;
        hash = (53 * hash) + getLabelSelector().hashCode();
      }
      if (hasOptional()) {
        hash = (37 * hash) + OPTIONAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptional());
      }
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ClusterTrustBundleProjection 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.V1.ClusterTrustBundleProjection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ClusterTrustBundleProjection 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.V1.ClusterTrustBundleProjection 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>
     * ClusterTrustBundleProjection describes how to select a set of
     * ClusterTrustBundle objects and project their contents into the pod
     * filesystem.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ClusterTrustBundleProjection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ClusterTrustBundleProjection)
        io.kubernetes.client.proto.V1.ClusterTrustBundleProjectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ClusterTrustBundleProjection_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLabelSelectorFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        signerName_ = "";
        labelSelector_ = null;
        if (labelSelectorBuilder_ != null) {
          labelSelectorBuilder_.dispose();
          labelSelectorBuilder_ = null;
        }
        optional_ = false;
        path_ = "";
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ClusterTrustBundleProjection 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.signerName_ = signerName_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.labelSelector_ = labelSelectorBuilder_ == null
              ? labelSelector_
              : labelSelectorBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.optional_ = optional_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.path_ = path_;
          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.V1.ClusterTrustBundleProjection) {
          return mergeFrom((io.kubernetes.client.proto.V1.ClusterTrustBundleProjection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ClusterTrustBundleProjection other) {
        if (other == io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasSignerName()) {
          signerName_ = other.signerName_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasLabelSelector()) {
          mergeLabelSelector(other.getLabelSelector());
        }
        if (other.hasOptional()) {
          setOptional(other.getOptional());
        }
        if (other.hasPath()) {
          path_ = other.path_;
          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: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                signerName_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getLabelSelectorFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 34
              case 40: {
                optional_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 40
              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>
       * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
       * with signerName and labelSelector.
       * +optional
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
       * with signerName and labelSelector.
       * +optional
       * </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>
       * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
       * with signerName and labelSelector.
       * +optional
       * </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>
       * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
       * with signerName and labelSelector.
       * +optional
       * </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>
       * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
       * with signerName and labelSelector.
       * +optional
       * </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>
       * Select a single ClusterTrustBundle by object name.  Mutually-exclusive
       * with signerName and labelSelector.
       * +optional
       * </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 signerName_ = "";
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this signer name.
       * Mutually-exclusive with name.  The contents of all selected
       * ClusterTrustBundles will be unified and deduplicated.
       * +optional
       * </pre>
       *
       * <code>optional string signerName = 2;</code>
       * @return Whether the signerName field is set.
       */
      public boolean hasSignerName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this signer name.
       * Mutually-exclusive with name.  The contents of all selected
       * ClusterTrustBundles will be unified and deduplicated.
       * +optional
       * </pre>
       *
       * <code>optional string signerName = 2;</code>
       * @return The signerName.
       */
      public java.lang.String getSignerName() {
        java.lang.Object ref = signerName_;
        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()) {
            signerName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this signer name.
       * Mutually-exclusive with name.  The contents of all selected
       * ClusterTrustBundles will be unified and deduplicated.
       * +optional
       * </pre>
       *
       * <code>optional string signerName = 2;</code>
       * @return The bytes for signerName.
       */
      public com.google.protobuf.ByteString
          getSignerNameBytes() {
        java.lang.Object ref = signerName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          signerName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this signer name.
       * Mutually-exclusive with name.  The contents of all selected
       * ClusterTrustBundles will be unified and deduplicated.
       * +optional
       * </pre>
       *
       * <code>optional string signerName = 2;</code>
       * @param value The signerName to set.
       * @return This builder for chaining.
       */
      public Builder setSignerName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        signerName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this signer name.
       * Mutually-exclusive with name.  The contents of all selected
       * ClusterTrustBundles will be unified and deduplicated.
       * +optional
       * </pre>
       *
       * <code>optional string signerName = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSignerName() {
        signerName_ = getDefaultInstance().getSignerName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this signer name.
       * Mutually-exclusive with name.  The contents of all selected
       * ClusterTrustBundles will be unified and deduplicated.
       * +optional
       * </pre>
       *
       * <code>optional string signerName = 2;</code>
       * @param value The bytes for signerName to set.
       * @return This builder for chaining.
       */
      public Builder setSignerNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        signerName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.LabelSelector labelSelector_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder> labelSelectorBuilder_;
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this label selector.  Only has
       * effect if signerName is set.  Mutually-exclusive with name.  If unset,
       * interpreted as "match nothing".  If set but empty, interpreted as "match
       * everything".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
       * @return Whether the labelSelector field is set.
       */
      public boolean hasLabelSelector() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this label selector.  Only has
       * effect if signerName is set.  Mutually-exclusive with name.  If unset,
       * interpreted as "match nothing".  If set but empty, interpreted as "match
       * everything".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
       * @return The labelSelector.
       */
      public io.kubernetes.client.proto.Meta.LabelSelector getLabelSelector() {
        if (labelSelectorBuilder_ == null) {
          return labelSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
        } else {
          return labelSelectorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this label selector.  Only has
       * effect if signerName is set.  Mutually-exclusive with name.  If unset,
       * interpreted as "match nothing".  If set but empty, interpreted as "match
       * everything".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
       */
      public Builder setLabelSelector(io.kubernetes.client.proto.Meta.LabelSelector value) {
        if (labelSelectorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          labelSelector_ = value;
        } else {
          labelSelectorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this label selector.  Only has
       * effect if signerName is set.  Mutually-exclusive with name.  If unset,
       * interpreted as "match nothing".  If set but empty, interpreted as "match
       * everything".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
       */
      public Builder setLabelSelector(
          io.kubernetes.client.proto.Meta.LabelSelector.Builder builderForValue) {
        if (labelSelectorBuilder_ == null) {
          labelSelector_ = builderForValue.build();
        } else {
          labelSelectorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this label selector.  Only has
       * effect if signerName is set.  Mutually-exclusive with name.  If unset,
       * interpreted as "match nothing".  If set but empty, interpreted as "match
       * everything".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
       */
      public Builder mergeLabelSelector(io.kubernetes.client.proto.Meta.LabelSelector value) {
        if (labelSelectorBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            labelSelector_ != null &&
            labelSelector_ != io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance()) {
            getLabelSelectorBuilder().mergeFrom(value);
          } else {
            labelSelector_ = value;
          }
        } else {
          labelSelectorBuilder_.mergeFrom(value);
        }
        if (labelSelector_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this label selector.  Only has
       * effect if signerName is set.  Mutually-exclusive with name.  If unset,
       * interpreted as "match nothing".  If set but empty, interpreted as "match
       * everything".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
       */
      public Builder clearLabelSelector() {
        bitField0_ = (bitField0_ & ~0x00000004);
        labelSelector_ = null;
        if (labelSelectorBuilder_ != null) {
          labelSelectorBuilder_.dispose();
          labelSelectorBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this label selector.  Only has
       * effect if signerName is set.  Mutually-exclusive with name.  If unset,
       * interpreted as "match nothing".  If set but empty, interpreted as "match
       * everything".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.LabelSelector.Builder getLabelSelectorBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getLabelSelectorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this label selector.  Only has
       * effect if signerName is set.  Mutually-exclusive with name.  If unset,
       * interpreted as "match nothing".  If set but empty, interpreted as "match
       * everything".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getLabelSelectorOrBuilder() {
        if (labelSelectorBuilder_ != null) {
          return labelSelectorBuilder_.getMessageOrBuilder();
        } else {
          return labelSelector_ == null ?
              io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
        }
      }
      /**
       * <pre>
       * Select all ClusterTrustBundles that match this label selector.  Only has
       * effect if signerName is set.  Mutually-exclusive with name.  If unset,
       * interpreted as "match nothing".  If set but empty, interpreted as "match
       * everything".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder> 
          getLabelSelectorFieldBuilder() {
        if (labelSelectorBuilder_ == null) {
          labelSelectorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder>(
                  getLabelSelector(),
                  getParentForChildren(),
                  isClean());
          labelSelector_ = null;
        }
        return labelSelectorBuilder_;
      }

      private boolean optional_ ;
      /**
       * <pre>
       * If true, don't block pod startup if the referenced ClusterTrustBundle(s)
       * aren't available.  If using name, then the named ClusterTrustBundle is
       * allowed not to exist.  If using signerName, then the combination of
       * signerName and labelSelector is allowed to match zero
       * ClusterTrustBundles.
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 5;</code>
       * @return Whether the optional field is set.
       */
      @java.lang.Override
      public boolean hasOptional() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * If true, don't block pod startup if the referenced ClusterTrustBundle(s)
       * aren't available.  If using name, then the named ClusterTrustBundle is
       * allowed not to exist.  If using signerName, then the combination of
       * signerName and labelSelector is allowed to match zero
       * ClusterTrustBundles.
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 5;</code>
       * @return The optional.
       */
      @java.lang.Override
      public boolean getOptional() {
        return optional_;
      }
      /**
       * <pre>
       * If true, don't block pod startup if the referenced ClusterTrustBundle(s)
       * aren't available.  If using name, then the named ClusterTrustBundle is
       * allowed not to exist.  If using signerName, then the combination of
       * signerName and labelSelector is allowed to match zero
       * ClusterTrustBundles.
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 5;</code>
       * @param value The optional to set.
       * @return This builder for chaining.
       */
      public Builder setOptional(boolean value) {

        optional_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, don't block pod startup if the referenced ClusterTrustBundle(s)
       * aren't available.  If using name, then the named ClusterTrustBundle is
       * allowed not to exist.  If using signerName, then the combination of
       * signerName and labelSelector is allowed to match zero
       * ClusterTrustBundles.
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptional() {
        bitField0_ = (bitField0_ & ~0x00000008);
        optional_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * Relative path from the volume root to write the bundle.
       * </pre>
       *
       * <code>optional string path = 4;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Relative path from the volume root to write the bundle.
       * </pre>
       *
       * <code>optional string path = 4;</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>
       * Relative path from the volume root to write the bundle.
       * </pre>
       *
       * <code>optional string path = 4;</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>
       * Relative path from the volume root to write the bundle.
       * </pre>
       *
       * <code>optional string path = 4;</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_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Relative path from the volume root to write the bundle.
       * </pre>
       *
       * <code>optional string path = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Relative path from the volume root to write the bundle.
       * </pre>
       *
       * <code>optional string path = 4;</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_ |= 0x00000010;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ClusterTrustBundleProjection)
    }

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

    public static io.kubernetes.client.proto.V1.ClusterTrustBundleProjection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ComponentConditionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ComponentCondition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Type of condition for a component.
     * Valid value: "Healthy"
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * Type of condition for a component.
     * Valid value: "Healthy"
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * Type of condition for a component.
     * Valid value: "Healthy"
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * Status of the condition for a component.
     * Valid values for "Healthy": "True", "False", or "Unknown".
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Status of the condition for a component.
     * Valid values for "Healthy": "True", "False", or "Unknown".
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The status.
     */
    java.lang.String getStatus();
    /**
     * <pre>
     * Status of the condition for a component.
     * Valid values for "Healthy": "True", "False", or "Unknown".
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The bytes for status.
     */
    com.google.protobuf.ByteString
        getStatusBytes();

    /**
     * <pre>
     * Message about the condition for a component.
     * For example, information about a health check.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * Message about the condition for a component.
     * For example, information about a health check.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * Message about the condition for a component.
     * For example, information about a health check.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    /**
     * <pre>
     * Condition error code for a component.
     * For example, a health check error code.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Condition error code for a component.
     * For example, a health check error code.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return The error.
     */
    java.lang.String getError();
    /**
     * <pre>
     * Condition error code for a component.
     * For example, a health check error code.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return The bytes for error.
     */
    com.google.protobuf.ByteString
        getErrorBytes();
  }
  /**
   * <pre>
   * Information about the condition of a component.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ComponentCondition}
   */
  public static final class ComponentCondition extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ComponentCondition)
      ComponentConditionOrBuilder {
  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= */ "",
        ComponentCondition.class.getName());
    }
    // Use ComponentCondition.newBuilder() to construct.
    private ComponentCondition(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ComponentCondition() {
      type_ = "";
      status_ = "";
      message_ = "";
      error_ = "";
    }

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

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

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * Type of condition for a component.
     * Valid value: "Healthy"
     * </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 of condition for a component.
     * Valid value: "Healthy"
     * </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 of condition for a component.
     * Valid value: "Healthy"
     * </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 of the condition for a component.
     * Valid values for "Healthy": "True", "False", or "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 of the condition for a component.
     * Valid values for "Healthy": "True", "False", or "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 of the condition for a component.
     * Valid values for "Healthy": "True", "False", or "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 MESSAGE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * Message about the condition for a component.
     * For example, information about a health check.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Message about the condition for a component.
     * For example, information about a health check.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</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 about the condition for a component.
     * For example, information about a health check.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</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 ERROR_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object error_ = "";
    /**
     * <pre>
     * Condition error code for a component.
     * For example, a health check error code.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Condition error code for a component.
     * For example, a health check error code.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return The error.
     */
    @java.lang.Override
    public java.lang.String getError() {
      java.lang.Object ref = error_;
      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()) {
          error_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Condition error code for a component.
     * For example, a health check error code.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return The bytes for error.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getErrorBytes() {
      java.lang.Object ref = error_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        error_ = 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)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, message_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, error_);
      }
      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.GeneratedMessage.computeStringSize(3, message_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, error_);
      }
      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.V1.ComponentCondition)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ComponentCondition other = (io.kubernetes.client.proto.V1.ComponentCondition) 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 (hasMessage() != other.hasMessage()) return false;
      if (hasMessage()) {
        if (!getMessage()
            .equals(other.getMessage())) return false;
      }
      if (hasError() != other.hasError()) return false;
      if (hasError()) {
        if (!getError()
            .equals(other.getError())) 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 (hasMessage()) {
        hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getMessage().hashCode();
      }
      if (hasError()) {
        hash = (37 * hash) + ERROR_FIELD_NUMBER;
        hash = (53 * hash) + getError().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ComponentCondition 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.V1.ComponentCondition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ComponentCondition 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.V1.ComponentCondition 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>
     * Information about the condition of a component.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ComponentCondition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ComponentCondition)
        io.kubernetes.client.proto.V1.ComponentConditionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ComponentCondition_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ComponentCondition.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ComponentCondition 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.message_ = message_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.error_ = error_;
          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.V1.ComponentCondition) {
          return mergeFrom((io.kubernetes.client.proto.V1.ComponentCondition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ComponentCondition other) {
        if (other == io.kubernetes.client.proto.V1.ComponentCondition.getDefaultInstance()) return this;
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasStatus()) {
          status_ = other.status_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasError()) {
          error_ = other.error_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object type_ = "";
      /**
       * <pre>
       * Type of condition for a component.
       * Valid value: "Healthy"
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Type of condition for a component.
       * Valid value: "Healthy"
       * </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 of condition for a component.
       * Valid value: "Healthy"
       * </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 of condition for a component.
       * Valid value: "Healthy"
       * </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 of condition for a component.
       * Valid value: "Healthy"
       * </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 of condition for a component.
       * Valid value: "Healthy"
       * </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 of the condition for a component.
       * Valid values for "Healthy": "True", "False", or "Unknown".
       * </pre>
       *
       * <code>optional string status = 2;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Status of the condition for a component.
       * Valid values for "Healthy": "True", "False", or "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 of the condition for a component.
       * Valid values for "Healthy": "True", "False", or "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 of the condition for a component.
       * Valid values for "Healthy": "True", "False", or "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 of the condition for a component.
       * Valid values for "Healthy": "True", "False", or "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 of the condition for a component.
       * Valid values for "Healthy": "True", "False", or "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 java.lang.Object message_ = "";
      /**
       * <pre>
       * Message about the condition for a component.
       * For example, information about a health check.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Message about the condition for a component.
       * For example, information about a health check.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</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 about the condition for a component.
       * For example, information about a health check.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</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 about the condition for a component.
       * For example, information about a health check.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Message about the condition for a component.
       * For example, information about a health check.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Message about the condition for a component.
       * For example, information about a health check.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object error_ = "";
      /**
       * <pre>
       * Condition error code for a component.
       * For example, a health check error code.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @return Whether the error field is set.
       */
      public boolean hasError() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Condition error code for a component.
       * For example, a health check error code.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @return The error.
       */
      public java.lang.String getError() {
        java.lang.Object ref = error_;
        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()) {
            error_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Condition error code for a component.
       * For example, a health check error code.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @return The bytes for error.
       */
      public com.google.protobuf.ByteString
          getErrorBytes() {
        java.lang.Object ref = error_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          error_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Condition error code for a component.
       * For example, a health check error code.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @param value The error to set.
       * @return This builder for chaining.
       */
      public Builder setError(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        error_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Condition error code for a component.
       * For example, a health check error code.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearError() {
        error_ = getDefaultInstance().getError();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Condition error code for a component.
       * For example, a health check error code.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @param value The bytes for error to set.
       * @return This builder for chaining.
       */
      public Builder setErrorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        error_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ComponentCondition)
    }

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

    public static io.kubernetes.client.proto.V1.ComponentCondition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ComponentStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ComponentStatus)
      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>
     * List of component conditions observed
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ComponentCondition> 
        getConditionsList();
    /**
     * <pre>
     * List of component conditions observed
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
     */
    io.kubernetes.client.proto.V1.ComponentCondition getConditions(int index);
    /**
     * <pre>
     * List of component conditions observed
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
     */
    int getConditionsCount();
    /**
     * <pre>
     * List of component conditions observed
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ComponentConditionOrBuilder> 
        getConditionsOrBuilderList();
    /**
     * <pre>
     * List of component conditions observed
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
     */
    io.kubernetes.client.proto.V1.ComponentConditionOrBuilder getConditionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ComponentStatus (and ComponentStatusList) holds the cluster validation info.
   * Deprecated: This API is deprecated in v1.19+
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ComponentStatus}
   */
  public static final class ComponentStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ComponentStatus)
      ComponentStatusOrBuilder {
  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= */ "",
        ComponentStatus.class.getName());
    }
    // Use ComponentStatus.newBuilder() to construct.
    private ComponentStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ComponentStatus() {
      conditions_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ComponentStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ComponentStatus.class, io.kubernetes.client.proto.V1.ComponentStatus.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 CONDITIONS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ComponentCondition> conditions_;
    /**
     * <pre>
     * List of component conditions observed
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ComponentCondition> getConditionsList() {
      return conditions_;
    }
    /**
     * <pre>
     * List of component conditions observed
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ComponentConditionOrBuilder> 
        getConditionsOrBuilderList() {
      return conditions_;
    }
    /**
     * <pre>
     * List of component conditions observed
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
     */
    @java.lang.Override
    public int getConditionsCount() {
      return conditions_.size();
    }
    /**
     * <pre>
     * List of component conditions observed
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ComponentCondition getConditions(int index) {
      return conditions_.get(index);
    }
    /**
     * <pre>
     * List of component conditions observed
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ComponentConditionOrBuilder getConditionsOrBuilder(
        int index) {
      return conditions_.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 < conditions_.size(); i++) {
        output.writeMessage(2, conditions_.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 < conditions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, conditions_.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.V1.ComponentStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ComponentStatus other = (io.kubernetes.client.proto.V1.ComponentStatus) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (!getConditionsList()
          .equals(other.getConditionsList())) 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 (getConditionsCount() > 0) {
        hash = (37 * hash) + CONDITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConditionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ComponentStatus 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.V1.ComponentStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ComponentStatus 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.V1.ComponentStatus 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>
     * ComponentStatus (and ComponentStatusList) holds the cluster validation info.
     * Deprecated: This API is deprecated in v1.19+
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ComponentStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ComponentStatus)
        io.kubernetes.client.proto.V1.ComponentStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ComponentStatus_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ComponentStatus.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();
          getConditionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
        } else {
          conditions_ = null;
          conditionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ComponentStatus 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.V1.ComponentStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.ComponentStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ComponentStatus other) {
        if (other == io.kubernetes.client.proto.V1.ComponentStatus.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (conditionsBuilder_ == null) {
          if (!other.conditions_.isEmpty()) {
            if (conditions_.isEmpty()) {
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureConditionsIsMutable();
              conditions_.addAll(other.conditions_);
            }
            onChanged();
          }
        } else {
          if (!other.conditions_.isEmpty()) {
            if (conditionsBuilder_.isEmpty()) {
              conditionsBuilder_.dispose();
              conditionsBuilder_ = null;
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000002);
              conditionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getConditionsFieldBuilder() : null;
            } else {
              conditionsBuilder_.addAllMessages(other.conditions_);
            }
          }
        }
        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.V1.ComponentCondition m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ComponentCondition.parser(),
                        extensionRegistry);
                if (conditionsBuilder_ == null) {
                  ensureConditionsIsMutable();
                  conditions_.add(m);
                } else {
                  conditionsBuilder_.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.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 java.util.List<io.kubernetes.client.proto.V1.ComponentCondition> conditions_ =
        java.util.Collections.emptyList();
      private void ensureConditionsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          conditions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ComponentCondition>(conditions_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ComponentCondition, io.kubernetes.client.proto.V1.ComponentCondition.Builder, io.kubernetes.client.proto.V1.ComponentConditionOrBuilder> conditionsBuilder_;

      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ComponentCondition> getConditionsList() {
        if (conditionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(conditions_);
        } else {
          return conditionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public int getConditionsCount() {
        if (conditionsBuilder_ == null) {
          return conditions_.size();
        } else {
          return conditionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ComponentCondition getConditions(int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);
        } else {
          return conditionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.ComponentCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.set(index, value);
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.ComponentCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.set(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public Builder addConditions(io.kubernetes.client.proto.V1.ComponentCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.ComponentCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(index, value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public Builder addConditions(
          io.kubernetes.client.proto.V1.ComponentCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.ComponentCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public Builder addAllConditions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ComponentCondition> values) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, conditions_);
          onChanged();
        } else {
          conditionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public Builder clearConditions() {
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          conditionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public Builder removeConditions(int index) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.remove(index);
          onChanged();
        } else {
          conditionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ComponentCondition.Builder getConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ComponentConditionOrBuilder getConditionsOrBuilder(
          int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);  } else {
          return conditionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ComponentConditionOrBuilder> 
           getConditionsOrBuilderList() {
        if (conditionsBuilder_ != null) {
          return conditionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(conditions_);
        }
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ComponentCondition.Builder addConditionsBuilder() {
        return getConditionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ComponentCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ComponentCondition.Builder addConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ComponentCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * List of component conditions observed
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ComponentCondition conditions = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ComponentCondition.Builder> 
           getConditionsBuilderList() {
        return getConditionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ComponentCondition, io.kubernetes.client.proto.V1.ComponentCondition.Builder, io.kubernetes.client.proto.V1.ComponentConditionOrBuilder> 
          getConditionsFieldBuilder() {
        if (conditionsBuilder_ == null) {
          conditionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ComponentCondition, io.kubernetes.client.proto.V1.ComponentCondition.Builder, io.kubernetes.client.proto.V1.ComponentConditionOrBuilder>(
                  conditions_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          conditions_ = null;
        }
        return conditionsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ComponentStatus)
    }

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

    public static io.kubernetes.client.proto.V1.ComponentStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ComponentStatusListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ComponentStatusList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * List of ComponentStatus objects.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentStatus items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ComponentStatus> 
        getItemsList();
    /**
     * <pre>
     * List of ComponentStatus objects.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentStatus items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ComponentStatus getItems(int index);
    /**
     * <pre>
     * List of ComponentStatus objects.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentStatus items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * List of ComponentStatus objects.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentStatus items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ComponentStatusOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * List of ComponentStatus objects.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentStatus items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ComponentStatusOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Status of all the conditions for the component as a list of ComponentStatus objects.
   * Deprecated: This API is deprecated in v1.19+
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ComponentStatusList}
   */
  public static final class ComponentStatusList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ComponentStatusList)
      ComponentStatusListOrBuilder {
  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= */ "",
        ComponentStatusList.class.getName());
    }
    // Use ComponentStatusList.newBuilder() to construct.
    private ComponentStatusList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ComponentStatusList() {
      items_ = java.util.Collections.emptyList();
    }

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

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

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.ComponentStatus> items_;
    /**
     * <pre>
     * List of ComponentStatus objects.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentStatus items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ComponentStatus> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * List of ComponentStatus objects.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentStatus items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ComponentStatusOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * List of ComponentStatus objects.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentStatus items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * List of ComponentStatus objects.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentStatus items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ComponentStatus getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * List of ComponentStatus objects.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ComponentStatus items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ComponentStatusOrBuilder 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.V1.ComponentStatusList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ComponentStatusList other = (io.kubernetes.client.proto.V1.ComponentStatusList) 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.V1.ComponentStatusList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ComponentStatusList 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.V1.ComponentStatusList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ComponentStatusList 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.V1.ComponentStatusList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ComponentStatusList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ComponentStatusList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ComponentStatusList 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.V1.ComponentStatusList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ComponentStatusList 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.V1.ComponentStatusList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ComponentStatusList 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.V1.ComponentStatusList 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>
     * Status of all the conditions for the component as a list of ComponentStatus objects.
     * Deprecated: This API is deprecated in v1.19+
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ComponentStatusList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ComponentStatusList)
        io.kubernetes.client.proto.V1.ComponentStatusListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ComponentStatusList_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ComponentStatusList.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.V1.internal_static_k8s_io_api_core_v1_ComponentStatusList_descriptor;
      }

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ComponentStatusList 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.V1.ComponentStatusList 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.V1.ComponentStatusList) {
          return mergeFrom((io.kubernetes.client.proto.V1.ComponentStatusList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ComponentStatusList other) {
        if (other == io.kubernetes.client.proto.V1.ComponentStatusList.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.V1.ComponentStatus m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ComponentStatus.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.ComponentStatus> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ComponentStatus>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ComponentStatus, io.kubernetes.client.proto.V1.ComponentStatus.Builder, io.kubernetes.client.proto.V1.ComponentStatusOrBuilder> itemsBuilder_;

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

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ComponentStatusList)
    }

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

    public static io.kubernetes.client.proto.V1.ComponentStatusList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ConfigMapOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ConfigMap)
      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>
     * Immutable, if set to true, ensures that data stored in the ConfigMap cannot
     * be updated (only object metadata can be modified).
     * If not set to true, the field can be modified at any time.
     * Defaulted to nil.
     * +optional
     * </pre>
     *
     * <code>optional bool immutable = 4;</code>
     * @return Whether the immutable field is set.
     */
    boolean hasImmutable();
    /**
     * <pre>
     * Immutable, if set to true, ensures that data stored in the ConfigMap cannot
     * be updated (only object metadata can be modified).
     * If not set to true, the field can be modified at any time.
     * Defaulted to nil.
     * +optional
     * </pre>
     *
     * <code>optional bool immutable = 4;</code>
     * @return The immutable.
     */
    boolean getImmutable();

    /**
     * <pre>
     * Data contains the configuration data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * Values with non-UTF-8 byte sequences must use the BinaryData field.
     * The keys stored in Data must not overlap with the keys in
     * the BinaryData field, this is enforced during validation process.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; data = 2;</code>
     */
    int getDataCount();
    /**
     * <pre>
     * Data contains the configuration data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * Values with non-UTF-8 byte sequences must use the BinaryData field.
     * The keys stored in Data must not overlap with the keys in
     * the BinaryData field, this is enforced during validation process.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; data = 2;</code>
     */
    boolean containsData(
        java.lang.String key);
    /**
     * Use {@link #getDataMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getData();
    /**
     * <pre>
     * Data contains the configuration data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * Values with non-UTF-8 byte sequences must use the BinaryData field.
     * The keys stored in Data must not overlap with the keys in
     * the BinaryData field, this is enforced during validation process.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; data = 2;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getDataMap();
    /**
     * <pre>
     * Data contains the configuration data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * Values with non-UTF-8 byte sequences must use the BinaryData field.
     * The keys stored in Data must not overlap with the keys in
     * the BinaryData field, this is enforced during validation process.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; data = 2;</code>
     */
    /* nullable */
java.lang.String getDataOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * Data contains the configuration data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * Values with non-UTF-8 byte sequences must use the BinaryData field.
     * The keys stored in Data must not overlap with the keys in
     * the BinaryData field, this is enforced during validation process.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; data = 2;</code>
     */
    java.lang.String getDataOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * BinaryData contains the binary data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * BinaryData can contain byte sequences that are not in the UTF-8 range.
     * The keys stored in BinaryData must not overlap with the ones in
     * the Data field, this is enforced during validation process.
     * Using this field will require 1.10+ apiserver and
     * kubelet.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
     */
    int getBinaryDataCount();
    /**
     * <pre>
     * BinaryData contains the binary data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * BinaryData can contain byte sequences that are not in the UTF-8 range.
     * The keys stored in BinaryData must not overlap with the ones in
     * the Data field, this is enforced during validation process.
     * Using this field will require 1.10+ apiserver and
     * kubelet.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
     */
    boolean containsBinaryData(
        java.lang.String key);
    /**
     * Use {@link #getBinaryDataMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.google.protobuf.ByteString>
    getBinaryData();
    /**
     * <pre>
     * BinaryData contains the binary data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * BinaryData can contain byte sequences that are not in the UTF-8 range.
     * The keys stored in BinaryData must not overlap with the ones in
     * the Data field, this is enforced during validation process.
     * Using this field will require 1.10+ apiserver and
     * kubelet.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
     */
    java.util.Map<java.lang.String, com.google.protobuf.ByteString>
    getBinaryDataMap();
    /**
     * <pre>
     * BinaryData contains the binary data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * BinaryData can contain byte sequences that are not in the UTF-8 range.
     * The keys stored in BinaryData must not overlap with the ones in
     * the Data field, this is enforced during validation process.
     * Using this field will require 1.10+ apiserver and
     * kubelet.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
     */
    /* nullable */
com.google.protobuf.ByteString getBinaryDataOrDefault(
        java.lang.String key,
        /* nullable */
com.google.protobuf.ByteString defaultValue);
    /**
     * <pre>
     * BinaryData contains the binary data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * BinaryData can contain byte sequences that are not in the UTF-8 range.
     * The keys stored in BinaryData must not overlap with the ones in
     * the Data field, this is enforced during validation process.
     * Using this field will require 1.10+ apiserver and
     * kubelet.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
     */
    com.google.protobuf.ByteString getBinaryDataOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * ConfigMap holds configuration data for pods to consume.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ConfigMap}
   */
  public static final class ConfigMap extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ConfigMap)
      ConfigMapOrBuilder {
  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= */ "",
        ConfigMap.class.getName());
    }
    // Use ConfigMap.newBuilder() to construct.
    private ConfigMap(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ConfigMap() {
    }

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

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 2:
          return internalGetData();
        case 3:
          return internalGetBinaryData();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMap_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ConfigMap.class, io.kubernetes.client.proto.V1.ConfigMap.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 IMMUTABLE_FIELD_NUMBER = 4;
    private boolean immutable_ = false;
    /**
     * <pre>
     * Immutable, if set to true, ensures that data stored in the ConfigMap cannot
     * be updated (only object metadata can be modified).
     * If not set to true, the field can be modified at any time.
     * Defaulted to nil.
     * +optional
     * </pre>
     *
     * <code>optional bool immutable = 4;</code>
     * @return Whether the immutable field is set.
     */
    @java.lang.Override
    public boolean hasImmutable() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Immutable, if set to true, ensures that data stored in the ConfigMap cannot
     * be updated (only object metadata can be modified).
     * If not set to true, the field can be modified at any time.
     * Defaulted to nil.
     * +optional
     * </pre>
     *
     * <code>optional bool immutable = 4;</code>
     * @return The immutable.
     */
    @java.lang.Override
    public boolean getImmutable() {
      return immutable_;
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private static final class DataDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMap_DataEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> data_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetData() {
      if (data_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            DataDefaultEntryHolder.defaultEntry);
      }
      return data_;
    }
    public int getDataCount() {
      return internalGetData().getMap().size();
    }
    /**
     * <pre>
     * Data contains the configuration data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * Values with non-UTF-8 byte sequences must use the BinaryData field.
     * The keys stored in Data must not overlap with the keys in
     * the BinaryData field, this is enforced during validation process.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; data = 2;</code>
     */
    @java.lang.Override
    public boolean containsData(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetData().getMap().containsKey(key);
    }
    /**
     * Use {@link #getDataMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getData() {
      return getDataMap();
    }
    /**
     * <pre>
     * Data contains the configuration data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * Values with non-UTF-8 byte sequences must use the BinaryData field.
     * The keys stored in Data must not overlap with the keys in
     * the BinaryData field, this is enforced during validation process.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; data = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getDataMap() {
      return internalGetData().getMap();
    }
    /**
     * <pre>
     * Data contains the configuration data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * Values with non-UTF-8 byte sequences must use the BinaryData field.
     * The keys stored in Data must not overlap with the keys in
     * the BinaryData field, this is enforced during validation process.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; data = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getDataOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetData().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Data contains the configuration data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * Values with non-UTF-8 byte sequences must use the BinaryData field.
     * The keys stored in Data must not overlap with the keys in
     * the BinaryData field, this is enforced during validation process.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; data = 2;</code>
     */
    @java.lang.Override
    public java.lang.String getDataOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetData().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int BINARYDATA_FIELD_NUMBER = 3;
    private static final class BinaryDataDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, com.google.protobuf.ByteString> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, com.google.protobuf.ByteString>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMap_BinaryDataEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.BYTES,
                  com.google.protobuf.ByteString.EMPTY);
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, com.google.protobuf.ByteString> binaryData_;
    private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
    internalGetBinaryData() {
      if (binaryData_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            BinaryDataDefaultEntryHolder.defaultEntry);
      }
      return binaryData_;
    }
    public int getBinaryDataCount() {
      return internalGetBinaryData().getMap().size();
    }
    /**
     * <pre>
     * BinaryData contains the binary data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * BinaryData can contain byte sequences that are not in the UTF-8 range.
     * The keys stored in BinaryData must not overlap with the ones in
     * the Data field, this is enforced during validation process.
     * Using this field will require 1.10+ apiserver and
     * kubelet.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
     */
    @java.lang.Override
    public boolean containsBinaryData(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetBinaryData().getMap().containsKey(key);
    }
    /**
     * Use {@link #getBinaryDataMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getBinaryData() {
      return getBinaryDataMap();
    }
    /**
     * <pre>
     * BinaryData contains the binary data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * BinaryData can contain byte sequences that are not in the UTF-8 range.
     * The keys stored in BinaryData must not overlap with the ones in
     * the Data field, this is enforced during validation process.
     * Using this field will require 1.10+ apiserver and
     * kubelet.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getBinaryDataMap() {
      return internalGetBinaryData().getMap();
    }
    /**
     * <pre>
     * BinaryData contains the binary data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * BinaryData can contain byte sequences that are not in the UTF-8 range.
     * The keys stored in BinaryData must not overlap with the ones in
     * the Data field, this is enforced during validation process.
     * Using this field will require 1.10+ apiserver and
     * kubelet.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
     */
    @java.lang.Override
    public /* nullable */
com.google.protobuf.ByteString getBinaryDataOrDefault(
        java.lang.String key,
        /* nullable */
com.google.protobuf.ByteString defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
          internalGetBinaryData().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * BinaryData contains the binary data.
     * Each key must consist of alphanumeric characters, '-', '_' or '.'.
     * BinaryData can contain byte sequences that are not in the UTF-8 range.
     * The keys stored in BinaryData must not overlap with the ones in
     * the Data field, this is enforced during validation process.
     * Using this field will require 1.10+ apiserver and
     * kubelet.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getBinaryDataOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
          internalGetBinaryData().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getMetadata());
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetData(),
          DataDefaultEntryHolder.defaultEntry,
          2);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetBinaryData(),
          BinaryDataDefaultEntryHolder.defaultEntry,
          3);
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(4, immutable_);
      }
      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 (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetData().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        data__ = DataDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, data__);
      }
      for (java.util.Map.Entry<java.lang.String, com.google.protobuf.ByteString> entry
           : internalGetBinaryData().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
        binaryData__ = BinaryDataDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, binaryData__);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, immutable_);
      }
      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.V1.ConfigMap)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ConfigMap other = (io.kubernetes.client.proto.V1.ConfigMap) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (hasImmutable() != other.hasImmutable()) return false;
      if (hasImmutable()) {
        if (getImmutable()
            != other.getImmutable()) return false;
      }
      if (!internalGetData().equals(
          other.internalGetData())) return false;
      if (!internalGetBinaryData().equals(
          other.internalGetBinaryData())) 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 (hasImmutable()) {
        hash = (37 * hash) + IMMUTABLE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getImmutable());
      }
      if (!internalGetData().getMap().isEmpty()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + internalGetData().hashCode();
      }
      if (!internalGetBinaryData().getMap().isEmpty()) {
        hash = (37 * hash) + BINARYDATA_FIELD_NUMBER;
        hash = (53 * hash) + internalGetBinaryData().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMap 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.V1.ConfigMap parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ConfigMap 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.V1.ConfigMap 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>
     * ConfigMap holds configuration data for pods to consume.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ConfigMap}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ConfigMap)
        io.kubernetes.client.proto.V1.ConfigMapOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMap_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetData();
          case 3:
            return internalGetBinaryData();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableData();
          case 3:
            return internalGetMutableBinaryData();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMap_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ConfigMap.class, io.kubernetes.client.proto.V1.ConfigMap.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ConfigMap.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();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        immutable_ = false;
        internalGetMutableData().clear();
        internalGetMutableBinaryData().clear();
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ConfigMap 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.immutable_ = immutable_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.data_ = internalGetData();
          result.data_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.binaryData_ = internalGetBinaryData();
          result.binaryData_.makeImmutable();
        }
        result.bitField0_ |= to_bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ConfigMap other) {
        if (other == io.kubernetes.client.proto.V1.ConfigMap.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasImmutable()) {
          setImmutable(other.getImmutable());
        }
        internalGetMutableData().mergeFrom(
            other.internalGetData());
        bitField0_ |= 0x00000004;
        internalGetMutableBinaryData().mergeFrom(
            other.internalGetBinaryData());
        bitField0_ |= 0x00000008;
        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: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                data__ = input.readMessage(
                    DataDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableData().getMutableMap().put(
                    data__.getKey(), data__.getValue());
                bitField0_ |= 0x00000004;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
                binaryData__ = input.readMessage(
                    BinaryDataDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableBinaryData().getMutableMap().put(
                    binaryData__.getKey(), binaryData__.getValue());
                bitField0_ |= 0x00000008;
                break;
              } // case 26
              case 32: {
                immutable_ = input.readBool();
                bitField0_ |= 0x00000002;
                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 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 boolean immutable_ ;
      /**
       * <pre>
       * Immutable, if set to true, ensures that data stored in the ConfigMap cannot
       * be updated (only object metadata can be modified).
       * If not set to true, the field can be modified at any time.
       * Defaulted to nil.
       * +optional
       * </pre>
       *
       * <code>optional bool immutable = 4;</code>
       * @return Whether the immutable field is set.
       */
      @java.lang.Override
      public boolean hasImmutable() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Immutable, if set to true, ensures that data stored in the ConfigMap cannot
       * be updated (only object metadata can be modified).
       * If not set to true, the field can be modified at any time.
       * Defaulted to nil.
       * +optional
       * </pre>
       *
       * <code>optional bool immutable = 4;</code>
       * @return The immutable.
       */
      @java.lang.Override
      public boolean getImmutable() {
        return immutable_;
      }
      /**
       * <pre>
       * Immutable, if set to true, ensures that data stored in the ConfigMap cannot
       * be updated (only object metadata can be modified).
       * If not set to true, the field can be modified at any time.
       * Defaulted to nil.
       * +optional
       * </pre>
       *
       * <code>optional bool immutable = 4;</code>
       * @param value The immutable to set.
       * @return This builder for chaining.
       */
      public Builder setImmutable(boolean value) {

        immutable_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Immutable, if set to true, ensures that data stored in the ConfigMap cannot
       * be updated (only object metadata can be modified).
       * If not set to true, the field can be modified at any time.
       * Defaulted to nil.
       * +optional
       * </pre>
       *
       * <code>optional bool immutable = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearImmutable() {
        bitField0_ = (bitField0_ & ~0x00000002);
        immutable_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> data_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetData() {
        if (data_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              DataDefaultEntryHolder.defaultEntry);
        }
        return data_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableData() {
        if (data_ == null) {
          data_ = com.google.protobuf.MapField.newMapField(
              DataDefaultEntryHolder.defaultEntry);
        }
        if (!data_.isMutable()) {
          data_ = data_.copy();
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return data_;
      }
      public int getDataCount() {
        return internalGetData().getMap().size();
      }
      /**
       * <pre>
       * Data contains the configuration data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * Values with non-UTF-8 byte sequences must use the BinaryData field.
       * The keys stored in Data must not overlap with the keys in
       * the BinaryData field, this is enforced during validation process.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; data = 2;</code>
       */
      @java.lang.Override
      public boolean containsData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetData().getMap().containsKey(key);
      }
      /**
       * Use {@link #getDataMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getData() {
        return getDataMap();
      }
      /**
       * <pre>
       * Data contains the configuration data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * Values with non-UTF-8 byte sequences must use the BinaryData field.
       * The keys stored in Data must not overlap with the keys in
       * the BinaryData field, this is enforced during validation process.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; data = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getDataMap() {
        return internalGetData().getMap();
      }
      /**
       * <pre>
       * Data contains the configuration data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * Values with non-UTF-8 byte sequences must use the BinaryData field.
       * The keys stored in Data must not overlap with the keys in
       * the BinaryData field, this is enforced during validation process.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; data = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getDataOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetData().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Data contains the configuration data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * Values with non-UTF-8 byte sequences must use the BinaryData field.
       * The keys stored in Data must not overlap with the keys in
       * the BinaryData field, this is enforced during validation process.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; data = 2;</code>
       */
      @java.lang.Override
      public java.lang.String getDataOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetData().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000004);
        internalGetMutableData().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Data contains the configuration data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * Values with non-UTF-8 byte sequences must use the BinaryData field.
       * The keys stored in Data must not overlap with the keys in
       * the BinaryData field, this is enforced during validation process.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; data = 2;</code>
       */
      public Builder removeData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableData().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableData() {
        bitField0_ |= 0x00000004;
        return internalGetMutableData().getMutableMap();
      }
      /**
       * <pre>
       * Data contains the configuration data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * Values with non-UTF-8 byte sequences must use the BinaryData field.
       * The keys stored in Data must not overlap with the keys in
       * the BinaryData field, this is enforced during validation process.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; data = 2;</code>
       */
      public Builder putData(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableData().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Data contains the configuration data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * Values with non-UTF-8 byte sequences must use the BinaryData field.
       * The keys stored in Data must not overlap with the keys in
       * the BinaryData field, this is enforced during validation process.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; data = 2;</code>
       */
      public Builder putAllData(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableData().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000004;
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, com.google.protobuf.ByteString> binaryData_;
      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
          internalGetBinaryData() {
        if (binaryData_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              BinaryDataDefaultEntryHolder.defaultEntry);
        }
        return binaryData_;
      }
      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
          internalGetMutableBinaryData() {
        if (binaryData_ == null) {
          binaryData_ = com.google.protobuf.MapField.newMapField(
              BinaryDataDefaultEntryHolder.defaultEntry);
        }
        if (!binaryData_.isMutable()) {
          binaryData_ = binaryData_.copy();
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return binaryData_;
      }
      public int getBinaryDataCount() {
        return internalGetBinaryData().getMap().size();
      }
      /**
       * <pre>
       * BinaryData contains the binary data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * BinaryData can contain byte sequences that are not in the UTF-8 range.
       * The keys stored in BinaryData must not overlap with the ones in
       * the Data field, this is enforced during validation process.
       * Using this field will require 1.10+ apiserver and
       * kubelet.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
       */
      @java.lang.Override
      public boolean containsBinaryData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetBinaryData().getMap().containsKey(key);
      }
      /**
       * Use {@link #getBinaryDataMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getBinaryData() {
        return getBinaryDataMap();
      }
      /**
       * <pre>
       * BinaryData contains the binary data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * BinaryData can contain byte sequences that are not in the UTF-8 range.
       * The keys stored in BinaryData must not overlap with the ones in
       * the Data field, this is enforced during validation process.
       * Using this field will require 1.10+ apiserver and
       * kubelet.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getBinaryDataMap() {
        return internalGetBinaryData().getMap();
      }
      /**
       * <pre>
       * BinaryData contains the binary data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * BinaryData can contain byte sequences that are not in the UTF-8 range.
       * The keys stored in BinaryData must not overlap with the ones in
       * the Data field, this is enforced during validation process.
       * Using this field will require 1.10+ apiserver and
       * kubelet.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
       */
      @java.lang.Override
      public /* nullable */
com.google.protobuf.ByteString getBinaryDataOrDefault(
          java.lang.String key,
          /* nullable */
com.google.protobuf.ByteString defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
            internalGetBinaryData().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * BinaryData contains the binary data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * BinaryData can contain byte sequences that are not in the UTF-8 range.
       * The keys stored in BinaryData must not overlap with the ones in
       * the Data field, this is enforced during validation process.
       * Using this field will require 1.10+ apiserver and
       * kubelet.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getBinaryDataOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
            internalGetBinaryData().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearBinaryData() {
        bitField0_ = (bitField0_ & ~0x00000008);
        internalGetMutableBinaryData().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * BinaryData contains the binary data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * BinaryData can contain byte sequences that are not in the UTF-8 range.
       * The keys stored in BinaryData must not overlap with the ones in
       * the Data field, this is enforced during validation process.
       * Using this field will require 1.10+ apiserver and
       * kubelet.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
       */
      public Builder removeBinaryData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableBinaryData().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString>
          getMutableBinaryData() {
        bitField0_ |= 0x00000008;
        return internalGetMutableBinaryData().getMutableMap();
      }
      /**
       * <pre>
       * BinaryData contains the binary data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * BinaryData can contain byte sequences that are not in the UTF-8 range.
       * The keys stored in BinaryData must not overlap with the ones in
       * the Data field, this is enforced during validation process.
       * Using this field will require 1.10+ apiserver and
       * kubelet.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
       */
      public Builder putBinaryData(
          java.lang.String key,
          com.google.protobuf.ByteString value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableBinaryData().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * BinaryData contains the binary data.
       * Each key must consist of alphanumeric characters, '-', '_' or '.'.
       * BinaryData can contain byte sequences that are not in the UTF-8 range.
       * The keys stored in BinaryData must not overlap with the ones in
       * the Data field, this is enforced during validation process.
       * Using this field will require 1.10+ apiserver and
       * kubelet.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; binaryData = 3;</code>
       */
      public Builder putAllBinaryData(
          java.util.Map<java.lang.String, com.google.protobuf.ByteString> values) {
        internalGetMutableBinaryData().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000008;
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ConfigMap)
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMap getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ConfigMapEnvSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ConfigMapEnvSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    boolean hasLocalObjectReference();
    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference();
    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder();

    /**
     * <pre>
     * Specify whether the ConfigMap must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 2;</code>
     * @return Whether the optional field is set.
     */
    boolean hasOptional();
    /**
     * <pre>
     * Specify whether the ConfigMap must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 2;</code>
     * @return The optional.
     */
    boolean getOptional();
  }
  /**
   * <pre>
   * ConfigMapEnvSource selects a ConfigMap to populate the environment
   * variables with.
   *
   * The contents of the target ConfigMap's Data field will represent the
   * key-value pairs as environment variables.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ConfigMapEnvSource}
   */
  public static final class ConfigMapEnvSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ConfigMapEnvSource)
      ConfigMapEnvSourceOrBuilder {
  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= */ "",
        ConfigMapEnvSource.class.getName());
    }
    // Use ConfigMapEnvSource.newBuilder() to construct.
    private ConfigMapEnvSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ConfigMapEnvSource() {
    }

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

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

    private int bitField0_;
    public static final int LOCALOBJECTREFERENCE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    @java.lang.Override
    public boolean hasLocalObjectReference() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }
    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }

    public static final int OPTIONAL_FIELD_NUMBER = 2;
    private boolean optional_ = false;
    /**
     * <pre>
     * Specify whether the ConfigMap must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 2;</code>
     * @return Whether the optional field is set.
     */
    @java.lang.Override
    public boolean hasOptional() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Specify whether the ConfigMap must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 2;</code>
     * @return The optional.
     */
    @java.lang.Override
    public boolean getOptional() {
      return optional_;
    }

    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, getLocalObjectReference());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, optional_);
      }
      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, getLocalObjectReference());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, optional_);
      }
      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.V1.ConfigMapEnvSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ConfigMapEnvSource other = (io.kubernetes.client.proto.V1.ConfigMapEnvSource) obj;

      if (hasLocalObjectReference() != other.hasLocalObjectReference()) return false;
      if (hasLocalObjectReference()) {
        if (!getLocalObjectReference()
            .equals(other.getLocalObjectReference())) return false;
      }
      if (hasOptional() != other.hasOptional()) return false;
      if (hasOptional()) {
        if (getOptional()
            != other.getOptional()) 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 (hasLocalObjectReference()) {
        hash = (37 * hash) + LOCALOBJECTREFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getLocalObjectReference().hashCode();
      }
      if (hasOptional()) {
        hash = (37 * hash) + OPTIONAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptional());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapEnvSource 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.V1.ConfigMapEnvSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapEnvSource 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.V1.ConfigMapEnvSource 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>
     * ConfigMapEnvSource selects a ConfigMap to populate the environment
     * variables with.
     *
     * The contents of the target ConfigMap's Data field will represent the
     * key-value pairs as environment variables.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ConfigMapEnvSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ConfigMapEnvSource)
        io.kubernetes.client.proto.V1.ConfigMapEnvSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMapEnvSource_descriptor;
      }

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

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ConfigMapEnvSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.localObjectReference_ = localObjectReferenceBuilder_ == null
              ? localObjectReference_
              : localObjectReferenceBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.optional_ = optional_;
          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.V1.ConfigMapEnvSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.ConfigMapEnvSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ConfigMapEnvSource other) {
        if (other == io.kubernetes.client.proto.V1.ConfigMapEnvSource.getDefaultInstance()) return this;
        if (other.hasLocalObjectReference()) {
          mergeLocalObjectReference(other.getLocalObjectReference());
        }
        if (other.hasOptional()) {
          setOptional(other.getOptional());
        }
        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(
                    getLocalObjectReferenceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                optional_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              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.V1.LocalObjectReference localObjectReference_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> localObjectReferenceBuilder_;
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return Whether the localObjectReference field is set.
       */
      public boolean hasLocalObjectReference() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return The localObjectReference.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
        if (localObjectReferenceBuilder_ == null) {
          return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        } else {
          return localObjectReferenceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          localObjectReference_ = value;
        } else {
          localObjectReferenceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReference_ = builderForValue.build();
        } else {
          localObjectReferenceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder mergeLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            localObjectReference_ != null &&
            localObjectReference_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getLocalObjectReferenceBuilder().mergeFrom(value);
          } else {
            localObjectReference_ = value;
          }
        } else {
          localObjectReferenceBuilder_.mergeFrom(value);
        }
        if (localObjectReference_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder clearLocalObjectReference() {
        bitField0_ = (bitField0_ & ~0x00000001);
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getLocalObjectReferenceBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLocalObjectReferenceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
        if (localObjectReferenceBuilder_ != null) {
          return localObjectReferenceBuilder_.getMessageOrBuilder();
        } else {
          return localObjectReference_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        }
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getLocalObjectReferenceFieldBuilder() {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReferenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getLocalObjectReference(),
                  getParentForChildren(),
                  isClean());
          localObjectReference_ = null;
        }
        return localObjectReferenceBuilder_;
      }

      private boolean optional_ ;
      /**
       * <pre>
       * Specify whether the ConfigMap must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 2;</code>
       * @return Whether the optional field is set.
       */
      @java.lang.Override
      public boolean hasOptional() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Specify whether the ConfigMap must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 2;</code>
       * @return The optional.
       */
      @java.lang.Override
      public boolean getOptional() {
        return optional_;
      }
      /**
       * <pre>
       * Specify whether the ConfigMap must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 2;</code>
       * @param value The optional to set.
       * @return This builder for chaining.
       */
      public Builder setOptional(boolean value) {

        optional_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify whether the ConfigMap must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptional() {
        bitField0_ = (bitField0_ & ~0x00000002);
        optional_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ConfigMapEnvSource)
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapEnvSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ConfigMapKeySelectorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ConfigMapKeySelector)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    boolean hasLocalObjectReference();
    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference();
    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder();

    /**
     * <pre>
     * The key to select.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <pre>
     * The key to select.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <pre>
     * The key to select.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * Specify whether the ConfigMap or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 3;</code>
     * @return Whether the optional field is set.
     */
    boolean hasOptional();
    /**
     * <pre>
     * Specify whether the ConfigMap or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 3;</code>
     * @return The optional.
     */
    boolean getOptional();
  }
  /**
   * <pre>
   * Selects a key from a ConfigMap.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ConfigMapKeySelector}
   */
  public static final class ConfigMapKeySelector extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ConfigMapKeySelector)
      ConfigMapKeySelectorOrBuilder {
  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= */ "",
        ConfigMapKeySelector.class.getName());
    }
    // Use ConfigMapKeySelector.newBuilder() to construct.
    private ConfigMapKeySelector(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ConfigMapKeySelector() {
      key_ = "";
    }

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

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

    private int bitField0_;
    public static final int LOCALOBJECTREFERENCE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    @java.lang.Override
    public boolean hasLocalObjectReference() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }
    /**
     * <pre>
     * The ConfigMap to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }

    public static final int KEY_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object key_ = "";
    /**
     * <pre>
     * The key to select.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The key to select.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The key to select.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPTIONAL_FIELD_NUMBER = 3;
    private boolean optional_ = false;
    /**
     * <pre>
     * Specify whether the ConfigMap or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 3;</code>
     * @return Whether the optional field is set.
     */
    @java.lang.Override
    public boolean hasOptional() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Specify whether the ConfigMap or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 3;</code>
     * @return The optional.
     */
    @java.lang.Override
    public boolean getOptional() {
      return optional_;
    }

    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, getLocalObjectReference());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, key_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, optional_);
      }
      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, getLocalObjectReference());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, key_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, optional_);
      }
      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.V1.ConfigMapKeySelector)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ConfigMapKeySelector other = (io.kubernetes.client.proto.V1.ConfigMapKeySelector) obj;

      if (hasLocalObjectReference() != other.hasLocalObjectReference()) return false;
      if (hasLocalObjectReference()) {
        if (!getLocalObjectReference()
            .equals(other.getLocalObjectReference())) return false;
      }
      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasOptional() != other.hasOptional()) return false;
      if (hasOptional()) {
        if (getOptional()
            != other.getOptional()) 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 (hasLocalObjectReference()) {
        hash = (37 * hash) + LOCALOBJECTREFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getLocalObjectReference().hashCode();
      }
      if (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasOptional()) {
        hash = (37 * hash) + OPTIONAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptional());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapKeySelector 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.V1.ConfigMapKeySelector parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapKeySelector 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.V1.ConfigMapKeySelector 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>
     * Selects a key from a ConfigMap.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ConfigMapKeySelector}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ConfigMapKeySelector)
        io.kubernetes.client.proto.V1.ConfigMapKeySelectorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMapKeySelector_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLocalObjectReferenceFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        key_ = "";
        optional_ = false;
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ConfigMapKeySelector result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.localObjectReference_ = localObjectReferenceBuilder_ == null
              ? localObjectReference_
              : localObjectReferenceBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.key_ = key_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.optional_ = optional_;
          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.V1.ConfigMapKeySelector) {
          return mergeFrom((io.kubernetes.client.proto.V1.ConfigMapKeySelector)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ConfigMapKeySelector other) {
        if (other == io.kubernetes.client.proto.V1.ConfigMapKeySelector.getDefaultInstance()) return this;
        if (other.hasLocalObjectReference()) {
          mergeLocalObjectReference(other.getLocalObjectReference());
        }
        if (other.hasKey()) {
          key_ = other.key_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasOptional()) {
          setOptional(other.getOptional());
        }
        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(
                    getLocalObjectReferenceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                key_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                optional_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> localObjectReferenceBuilder_;
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return Whether the localObjectReference field is set.
       */
      public boolean hasLocalObjectReference() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return The localObjectReference.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
        if (localObjectReferenceBuilder_ == null) {
          return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        } else {
          return localObjectReferenceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          localObjectReference_ = value;
        } else {
          localObjectReferenceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReference_ = builderForValue.build();
        } else {
          localObjectReferenceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder mergeLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            localObjectReference_ != null &&
            localObjectReference_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getLocalObjectReferenceBuilder().mergeFrom(value);
          } else {
            localObjectReference_ = value;
          }
        } else {
          localObjectReferenceBuilder_.mergeFrom(value);
        }
        if (localObjectReference_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder clearLocalObjectReference() {
        bitField0_ = (bitField0_ & ~0x00000001);
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getLocalObjectReferenceBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLocalObjectReferenceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
        if (localObjectReferenceBuilder_ != null) {
          return localObjectReferenceBuilder_.getMessageOrBuilder();
        } else {
          return localObjectReference_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        }
      }
      /**
       * <pre>
       * The ConfigMap to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getLocalObjectReferenceFieldBuilder() {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReferenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getLocalObjectReference(),
                  getParentForChildren(),
                  isClean());
          localObjectReference_ = null;
        }
        return localObjectReferenceBuilder_;
      }

      private java.lang.Object key_ = "";
      /**
       * <pre>
       * The key to select.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The key to select.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The key to select.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The key to select.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The key to select.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = getDefaultInstance().getKey();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The key to select.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean optional_ ;
      /**
       * <pre>
       * Specify whether the ConfigMap or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 3;</code>
       * @return Whether the optional field is set.
       */
      @java.lang.Override
      public boolean hasOptional() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Specify whether the ConfigMap or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 3;</code>
       * @return The optional.
       */
      @java.lang.Override
      public boolean getOptional() {
        return optional_;
      }
      /**
       * <pre>
       * Specify whether the ConfigMap or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 3;</code>
       * @param value The optional to set.
       * @return This builder for chaining.
       */
      public Builder setOptional(boolean value) {

        optional_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify whether the ConfigMap or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptional() {
        bitField0_ = (bitField0_ & ~0x00000004);
        optional_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ConfigMapKeySelector)
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapKeySelector getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ConfigMapListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ConfigMapList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 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>
     * 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>
     * 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 is the list of ConfigMaps.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ConfigMap items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ConfigMap> 
        getItemsList();
    /**
     * <pre>
     * Items is the list of ConfigMaps.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ConfigMap items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ConfigMap getItems(int index);
    /**
     * <pre>
     * Items is the list of ConfigMaps.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ConfigMap items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is the list of ConfigMaps.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ConfigMap items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ConfigMapOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is the list of ConfigMaps.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ConfigMap items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ConfigMapOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ConfigMapList is a resource containing a list of ConfigMap objects.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ConfigMapList}
   */
  public static final class ConfigMapList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ConfigMapList)
      ConfigMapListOrBuilder {
  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= */ "",
        ConfigMapList.class.getName());
    }
    // Use ConfigMapList.newBuilder() to construct.
    private ConfigMapList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ConfigMapList() {
      items_ = java.util.Collections.emptyList();
    }

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

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

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * 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>
     * 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>
     * 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.V1.ConfigMap> items_;
    /**
     * <pre>
     * Items is the list of ConfigMaps.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ConfigMap items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ConfigMap> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is the list of ConfigMaps.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ConfigMap items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ConfigMapOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is the list of ConfigMaps.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ConfigMap items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is the list of ConfigMaps.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ConfigMap items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMap getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is the list of ConfigMaps.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ConfigMap items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapOrBuilder 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.V1.ConfigMapList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ConfigMapList other = (io.kubernetes.client.proto.V1.ConfigMapList) 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.V1.ConfigMapList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapList 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.V1.ConfigMapList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapList 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.V1.ConfigMapList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapList 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.V1.ConfigMapList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ConfigMapList 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.V1.ConfigMapList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapList 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.V1.ConfigMapList 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>
     * ConfigMapList is a resource containing a list of ConfigMap objects.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ConfigMapList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ConfigMapList)
        io.kubernetes.client.proto.V1.ConfigMapListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMapList_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ConfigMapList.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.V1.internal_static_k8s_io_api_core_v1_ConfigMapList_descriptor;
      }

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ConfigMapList 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.V1.ConfigMapList 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.V1.ConfigMapList) {
          return mergeFrom((io.kubernetes.client.proto.V1.ConfigMapList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ConfigMapList other) {
        if (other == io.kubernetes.client.proto.V1.ConfigMapList.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.V1.ConfigMap m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ConfigMap.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>
       * 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>
       * 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>
       * 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>
       * 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>
       * 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>
       * 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>
       * 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>
       * 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>
       * 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.V1.ConfigMap> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ConfigMap>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMap, io.kubernetes.client.proto.V1.ConfigMap.Builder, io.kubernetes.client.proto.V1.ConfigMapOrBuilder> itemsBuilder_;

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

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ConfigMapList)
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ConfigMapNodeConfigSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ConfigMapNodeConfigSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Namespace is the metadata.namespace of the referenced ConfigMap.
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string namespace = 1;</code>
     * @return Whether the namespace field is set.
     */
    boolean hasNamespace();
    /**
     * <pre>
     * Namespace is the metadata.namespace of the referenced ConfigMap.
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string namespace = 1;</code>
     * @return The namespace.
     */
    java.lang.String getNamespace();
    /**
     * <pre>
     * Namespace is the metadata.namespace of the referenced ConfigMap.
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string namespace = 1;</code>
     * @return The bytes for namespace.
     */
    com.google.protobuf.ByteString
        getNamespaceBytes();

    /**
     * <pre>
     * Name is the metadata.name of the referenced ConfigMap.
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string name = 2;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name is the metadata.name of the referenced ConfigMap.
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name is the metadata.name of the referenced ConfigMap.
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * UID is the metadata.UID of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string uid = 3;</code>
     * @return Whether the uid field is set.
     */
    boolean hasUid();
    /**
     * <pre>
     * UID is the metadata.UID of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string uid = 3;</code>
     * @return The uid.
     */
    java.lang.String getUid();
    /**
     * <pre>
     * UID is the metadata.UID of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string uid = 3;</code>
     * @return The bytes for uid.
     */
    com.google.protobuf.ByteString
        getUidBytes();

    /**
     * <pre>
     * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 4;</code>
     * @return Whether the resourceVersion field is set.
     */
    boolean hasResourceVersion();
    /**
     * <pre>
     * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 4;</code>
     * @return The resourceVersion.
     */
    java.lang.String getResourceVersion();
    /**
     * <pre>
     * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 4;</code>
     * @return The bytes for resourceVersion.
     */
    com.google.protobuf.ByteString
        getResourceVersionBytes();

    /**
     * <pre>
     * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string kubeletConfigKey = 5;</code>
     * @return Whether the kubeletConfigKey field is set.
     */
    boolean hasKubeletConfigKey();
    /**
     * <pre>
     * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string kubeletConfigKey = 5;</code>
     * @return The kubeletConfigKey.
     */
    java.lang.String getKubeletConfigKey();
    /**
     * <pre>
     * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string kubeletConfigKey = 5;</code>
     * @return The bytes for kubeletConfigKey.
     */
    com.google.protobuf.ByteString
        getKubeletConfigKeyBytes();
  }
  /**
   * <pre>
   * ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.
   * This API is deprecated since 1.22: https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ConfigMapNodeConfigSource}
   */
  public static final class ConfigMapNodeConfigSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ConfigMapNodeConfigSource)
      ConfigMapNodeConfigSourceOrBuilder {
  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= */ "",
        ConfigMapNodeConfigSource.class.getName());
    }
    // Use ConfigMapNodeConfigSource.newBuilder() to construct.
    private ConfigMapNodeConfigSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ConfigMapNodeConfigSource() {
      namespace_ = "";
      name_ = "";
      uid_ = "";
      resourceVersion_ = "";
      kubeletConfigKey_ = "";
    }

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

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMapNodeConfigSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.class, io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.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 metadata.namespace of the referenced ConfigMap.
     * This field is required in all cases.
     * </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 metadata.namespace of the referenced ConfigMap.
     * This field is required in all cases.
     * </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 metadata.namespace of the referenced ConfigMap.
     * This field is required in all cases.
     * </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 metadata.name of the referenced ConfigMap.
     * This field is required in all cases.
     * </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 metadata.name of the referenced ConfigMap.
     * This field is required in all cases.
     * </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 metadata.name of the referenced ConfigMap.
     * This field is required in all cases.
     * </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 UID_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object uid_ = "";
    /**
     * <pre>
     * UID is the metadata.UID of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string uid = 3;</code>
     * @return Whether the uid field is set.
     */
    @java.lang.Override
    public boolean hasUid() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * UID is the metadata.UID of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string uid = 3;</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 the metadata.UID of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string uid = 3;</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 RESOURCEVERSION_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object resourceVersion_ = "";
    /**
     * <pre>
     * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 4;</code>
     * @return Whether the resourceVersion field is set.
     */
    @java.lang.Override
    public boolean hasResourceVersion() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 4;</code>
     * @return The resourceVersion.
     */
    @java.lang.Override
    public java.lang.String getResourceVersion() {
      java.lang.Object ref = resourceVersion_;
      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()) {
          resourceVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
     * This field is forbidden in Node.Spec, and required in Node.Status.
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 4;</code>
     * @return The bytes for resourceVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResourceVersionBytes() {
      java.lang.Object ref = resourceVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resourceVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KUBELETCONFIGKEY_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object kubeletConfigKey_ = "";
    /**
     * <pre>
     * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string kubeletConfigKey = 5;</code>
     * @return Whether the kubeletConfigKey field is set.
     */
    @java.lang.Override
    public boolean hasKubeletConfigKey() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string kubeletConfigKey = 5;</code>
     * @return The kubeletConfigKey.
     */
    @java.lang.Override
    public java.lang.String getKubeletConfigKey() {
      java.lang.Object ref = kubeletConfigKey_;
      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()) {
          kubeletConfigKey_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
     * This field is required in all cases.
     * </pre>
     *
     * <code>optional string kubeletConfigKey = 5;</code>
     * @return The bytes for kubeletConfigKey.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKubeletConfigKeyBytes() {
      java.lang.Object ref = kubeletConfigKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        kubeletConfigKey_ = 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, namespace_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, name_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, uid_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, resourceVersion_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, kubeletConfigKey_);
      }
      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, uid_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, resourceVersion_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, kubeletConfigKey_);
      }
      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.V1.ConfigMapNodeConfigSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource other = (io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource) 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 (hasUid() != other.hasUid()) return false;
      if (hasUid()) {
        if (!getUid()
            .equals(other.getUid())) return false;
      }
      if (hasResourceVersion() != other.hasResourceVersion()) return false;
      if (hasResourceVersion()) {
        if (!getResourceVersion()
            .equals(other.getResourceVersion())) return false;
      }
      if (hasKubeletConfigKey() != other.hasKubeletConfigKey()) return false;
      if (hasKubeletConfigKey()) {
        if (!getKubeletConfigKey()
            .equals(other.getKubeletConfigKey())) 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 (hasUid()) {
        hash = (37 * hash) + UID_FIELD_NUMBER;
        hash = (53 * hash) + getUid().hashCode();
      }
      if (hasResourceVersion()) {
        hash = (37 * hash) + RESOURCEVERSION_FIELD_NUMBER;
        hash = (53 * hash) + getResourceVersion().hashCode();
      }
      if (hasKubeletConfigKey()) {
        hash = (37 * hash) + KUBELETCONFIGKEY_FIELD_NUMBER;
        hash = (53 * hash) + getKubeletConfigKey().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource 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.V1.ConfigMapNodeConfigSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource 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.V1.ConfigMapNodeConfigSource 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>
     * ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.
     * This API is deprecated since 1.22: https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ConfigMapNodeConfigSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ConfigMapNodeConfigSource)
        io.kubernetes.client.proto.V1.ConfigMapNodeConfigSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMapNodeConfigSource_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.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_ = "";
        uid_ = "";
        resourceVersion_ = "";
        kubeletConfigKey_ = "";
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource 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.uid_ = uid_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.resourceVersion_ = resourceVersion_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.kubeletConfigKey_ = kubeletConfigKey_;
          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.V1.ConfigMapNodeConfigSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource other) {
        if (other == io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.getDefaultInstance()) return this;
        if (other.hasNamespace()) {
          namespace_ = other.namespace_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasUid()) {
          uid_ = other.uid_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasResourceVersion()) {
          resourceVersion_ = other.resourceVersion_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasKubeletConfigKey()) {
          kubeletConfigKey_ = other.kubeletConfigKey_;
          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: {
                namespace_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                uid_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                resourceVersion_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                kubeletConfigKey_ = 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 namespace_ = "";
      /**
       * <pre>
       * Namespace is the metadata.namespace of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.namespace of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.namespace of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.namespace of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.namespace of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.namespace of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.name of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.name of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.name of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.name of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.name of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 metadata.name of the referenced ConfigMap.
       * This field is required in all cases.
       * </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 uid_ = "";
      /**
       * <pre>
       * UID is the metadata.UID of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string uid = 3;</code>
       * @return Whether the uid field is set.
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * UID is the metadata.UID of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string uid = 3;</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 the metadata.UID of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string uid = 3;</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 the metadata.UID of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string uid = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UID is the metadata.UID of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string uid = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUid() {
        uid_ = getDefaultInstance().getUid();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UID is the metadata.UID of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string uid = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object resourceVersion_ = "";
      /**
       * <pre>
       * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 4;</code>
       * @return Whether the resourceVersion field is set.
       */
      public boolean hasResourceVersion() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 4;</code>
       * @return The resourceVersion.
       */
      public java.lang.String getResourceVersion() {
        java.lang.Object ref = resourceVersion_;
        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()) {
            resourceVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 4;</code>
       * @return The bytes for resourceVersion.
       */
      public com.google.protobuf.ByteString
          getResourceVersionBytes() {
        java.lang.Object ref = resourceVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resourceVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 4;</code>
       * @param value The resourceVersion to set.
       * @return This builder for chaining.
       */
      public Builder setResourceVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        resourceVersion_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearResourceVersion() {
        resourceVersion_ = getDefaultInstance().getResourceVersion();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
       * This field is forbidden in Node.Spec, and required in Node.Status.
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 4;</code>
       * @param value The bytes for resourceVersion to set.
       * @return This builder for chaining.
       */
      public Builder setResourceVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        resourceVersion_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object kubeletConfigKey_ = "";
      /**
       * <pre>
       * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
       * This field is required in all cases.
       * </pre>
       *
       * <code>optional string kubeletConfigKey = 5;</code>
       * @return Whether the kubeletConfigKey field is set.
       */
      public boolean hasKubeletConfigKey() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
       * This field is required in all cases.
       * </pre>
       *
       * <code>optional string kubeletConfigKey = 5;</code>
       * @return The kubeletConfigKey.
       */
      public java.lang.String getKubeletConfigKey() {
        java.lang.Object ref = kubeletConfigKey_;
        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()) {
            kubeletConfigKey_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
       * This field is required in all cases.
       * </pre>
       *
       * <code>optional string kubeletConfigKey = 5;</code>
       * @return The bytes for kubeletConfigKey.
       */
      public com.google.protobuf.ByteString
          getKubeletConfigKeyBytes() {
        java.lang.Object ref = kubeletConfigKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          kubeletConfigKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
       * This field is required in all cases.
       * </pre>
       *
       * <code>optional string kubeletConfigKey = 5;</code>
       * @param value The kubeletConfigKey to set.
       * @return This builder for chaining.
       */
      public Builder setKubeletConfigKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        kubeletConfigKey_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
       * This field is required in all cases.
       * </pre>
       *
       * <code>optional string kubeletConfigKey = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearKubeletConfigKey() {
        kubeletConfigKey_ = getDefaultInstance().getKubeletConfigKey();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
       * This field is required in all cases.
       * </pre>
       *
       * <code>optional string kubeletConfigKey = 5;</code>
       * @param value The bytes for kubeletConfigKey to set.
       * @return This builder for chaining.
       */
      public Builder setKubeletConfigKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        kubeletConfigKey_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ConfigMapNodeConfigSource)
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ConfigMapProjectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ConfigMapProjection)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    boolean hasLocalObjectReference();
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference();
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder();

    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.KeyToPath> 
        getItemsList();
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    io.kubernetes.client.proto.V1.KeyToPath getItems(int index);
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
        int index);

    /**
     * <pre>
     * optional specify whether the ConfigMap or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return Whether the optional field is set.
     */
    boolean hasOptional();
    /**
     * <pre>
     * optional specify whether the ConfigMap or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return The optional.
     */
    boolean getOptional();
  }
  /**
   * <pre>
   * Adapts a ConfigMap into a projected volume.
   *
   * The contents of the target ConfigMap's Data field will be presented in a
   * projected volume as files using the keys in the Data field as the file names,
   * unless the items element is populated with specific mappings of keys to paths.
   * Note that this is identical to a configmap volume source without the default
   * mode.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ConfigMapProjection}
   */
  public static final class ConfigMapProjection extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ConfigMapProjection)
      ConfigMapProjectionOrBuilder {
  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= */ "",
        ConfigMapProjection.class.getName());
    }
    // Use ConfigMapProjection.newBuilder() to construct.
    private ConfigMapProjection(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ConfigMapProjection() {
      items_ = java.util.Collections.emptyList();
    }

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

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

    private int bitField0_;
    public static final int LOCALOBJECTREFERENCE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    @java.lang.Override
    public boolean hasLocalObjectReference() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }

    public static final int ITEMS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.KeyToPath> items_;
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.KeyToPath> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.KeyToPath getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

    public static final int OPTIONAL_FIELD_NUMBER = 4;
    private boolean optional_ = false;
    /**
     * <pre>
     * optional specify whether the ConfigMap or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return Whether the optional field is set.
     */
    @java.lang.Override
    public boolean hasOptional() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * optional specify whether the ConfigMap or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return The optional.
     */
    @java.lang.Override
    public boolean getOptional() {
      return optional_;
    }

    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, getLocalObjectReference());
      }
      for (int i = 0; i < items_.size(); i++) {
        output.writeMessage(2, items_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(4, optional_);
      }
      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, getLocalObjectReference());
      }
      for (int i = 0; i < items_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, items_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, optional_);
      }
      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.V1.ConfigMapProjection)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ConfigMapProjection other = (io.kubernetes.client.proto.V1.ConfigMapProjection) obj;

      if (hasLocalObjectReference() != other.hasLocalObjectReference()) return false;
      if (hasLocalObjectReference()) {
        if (!getLocalObjectReference()
            .equals(other.getLocalObjectReference())) return false;
      }
      if (!getItemsList()
          .equals(other.getItemsList())) return false;
      if (hasOptional() != other.hasOptional()) return false;
      if (hasOptional()) {
        if (getOptional()
            != other.getOptional()) 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 (hasLocalObjectReference()) {
        hash = (37 * hash) + LOCALOBJECTREFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getLocalObjectReference().hashCode();
      }
      if (getItemsCount() > 0) {
        hash = (37 * hash) + ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getItemsList().hashCode();
      }
      if (hasOptional()) {
        hash = (37 * hash) + OPTIONAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptional());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapProjection 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.V1.ConfigMapProjection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapProjection 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.V1.ConfigMapProjection 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>
     * Adapts a ConfigMap into a projected volume.
     *
     * The contents of the target ConfigMap's Data field will be presented in a
     * projected volume as files using the keys in the Data field as the file names,
     * unless the items element is populated with specific mappings of keys to paths.
     * Note that this is identical to a configmap volume source without the default
     * mode.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ConfigMapProjection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ConfigMapProjection)
        io.kubernetes.client.proto.V1.ConfigMapProjectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMapProjection_descriptor;
      }

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

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

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

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

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ConfigMapProjection 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.V1.ConfigMapProjection result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.localObjectReference_ = localObjectReferenceBuilder_ == null
              ? localObjectReference_
              : localObjectReferenceBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.optional_ = optional_;
          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.V1.ConfigMapProjection) {
          return mergeFrom((io.kubernetes.client.proto.V1.ConfigMapProjection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ConfigMapProjection other) {
        if (other == io.kubernetes.client.proto.V1.ConfigMapProjection.getDefaultInstance()) return this;
        if (other.hasLocalObjectReference()) {
          mergeLocalObjectReference(other.getLocalObjectReference());
        }
        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_);
            }
          }
        }
        if (other.hasOptional()) {
          setOptional(other.getOptional());
        }
        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(
                    getLocalObjectReferenceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.KeyToPath m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.KeyToPath.parser(),
                        extensionRegistry);
                if (itemsBuilder_ == null) {
                  ensureItemsIsMutable();
                  items_.add(m);
                } else {
                  itemsBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 32: {
                optional_ = input.readBool();
                bitField0_ |= 0x00000004;
                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 io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> localObjectReferenceBuilder_;
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return Whether the localObjectReference field is set.
       */
      public boolean hasLocalObjectReference() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return The localObjectReference.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
        if (localObjectReferenceBuilder_ == null) {
          return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        } else {
          return localObjectReferenceBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          localObjectReference_ = value;
        } else {
          localObjectReferenceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReference_ = builderForValue.build();
        } else {
          localObjectReferenceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder mergeLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            localObjectReference_ != null &&
            localObjectReference_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getLocalObjectReferenceBuilder().mergeFrom(value);
          } else {
            localObjectReference_ = value;
          }
        } else {
          localObjectReferenceBuilder_.mergeFrom(value);
        }
        if (localObjectReference_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder clearLocalObjectReference() {
        bitField0_ = (bitField0_ & ~0x00000001);
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getLocalObjectReferenceBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLocalObjectReferenceFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
        if (localObjectReferenceBuilder_ != null) {
          return localObjectReferenceBuilder_.getMessageOrBuilder();
        } else {
          return localObjectReference_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        }
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getLocalObjectReferenceFieldBuilder() {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReferenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getLocalObjectReference(),
                  getParentForChildren(),
                  isClean());
          localObjectReference_ = null;
        }
        return localObjectReferenceBuilder_;
      }

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

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.KeyToPath> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath 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 if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.KeyToPath value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath 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 if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.KeyToPath> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath 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 if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.KeyToPath.getDefaultInstance());
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.KeyToPath.getDefaultInstance());
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.KeyToPath.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      private boolean optional_ ;
      /**
       * <pre>
       * optional specify whether the ConfigMap or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return Whether the optional field is set.
       */
      @java.lang.Override
      public boolean hasOptional() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * optional specify whether the ConfigMap or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return The optional.
       */
      @java.lang.Override
      public boolean getOptional() {
        return optional_;
      }
      /**
       * <pre>
       * optional specify whether the ConfigMap or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @param value The optional to set.
       * @return This builder for chaining.
       */
      public Builder setOptional(boolean value) {

        optional_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * optional specify whether the ConfigMap or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptional() {
        bitField0_ = (bitField0_ & ~0x00000004);
        optional_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ConfigMapProjection)
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapProjection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ConfigMapVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ConfigMapVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    boolean hasLocalObjectReference();
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference();
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder();

    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.KeyToPath> 
        getItemsList();
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    io.kubernetes.client.proto.V1.KeyToPath getItems(int index);
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
        int index);

    /**
     * <pre>
     * defaultMode is optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 3;</code>
     * @return Whether the defaultMode field is set.
     */
    boolean hasDefaultMode();
    /**
     * <pre>
     * defaultMode is optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 3;</code>
     * @return The defaultMode.
     */
    int getDefaultMode();

    /**
     * <pre>
     * optional specify whether the ConfigMap or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return Whether the optional field is set.
     */
    boolean hasOptional();
    /**
     * <pre>
     * optional specify whether the ConfigMap or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return The optional.
     */
    boolean getOptional();
  }
  /**
   * <pre>
   * Adapts a ConfigMap into a volume.
   *
   * The contents of the target ConfigMap's Data field will be presented in a
   * volume as files using the keys in the Data field as the file names, unless
   * the items element is populated with specific mappings of keys to paths.
   * ConfigMap volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ConfigMapVolumeSource}
   */
  public static final class ConfigMapVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ConfigMapVolumeSource)
      ConfigMapVolumeSourceOrBuilder {
  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= */ "",
        ConfigMapVolumeSource.class.getName());
    }
    // Use ConfigMapVolumeSource.newBuilder() to construct.
    private ConfigMapVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ConfigMapVolumeSource() {
      items_ = java.util.Collections.emptyList();
    }

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

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

    private int bitField0_;
    public static final int LOCALOBJECTREFERENCE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    @java.lang.Override
    public boolean hasLocalObjectReference() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }

    public static final int ITEMS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.KeyToPath> items_;
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.KeyToPath> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.KeyToPath getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * ConfigMap will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the ConfigMap,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

    public static final int DEFAULTMODE_FIELD_NUMBER = 3;
    private int defaultMode_ = 0;
    /**
     * <pre>
     * defaultMode is optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 3;</code>
     * @return Whether the defaultMode field is set.
     */
    @java.lang.Override
    public boolean hasDefaultMode() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * defaultMode is optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 3;</code>
     * @return The defaultMode.
     */
    @java.lang.Override
    public int getDefaultMode() {
      return defaultMode_;
    }

    public static final int OPTIONAL_FIELD_NUMBER = 4;
    private boolean optional_ = false;
    /**
     * <pre>
     * optional specify whether the ConfigMap or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return Whether the optional field is set.
     */
    @java.lang.Override
    public boolean hasOptional() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * optional specify whether the ConfigMap or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return The optional.
     */
    @java.lang.Override
    public boolean getOptional() {
      return optional_;
    }

    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, getLocalObjectReference());
      }
      for (int i = 0; i < items_.size(); i++) {
        output.writeMessage(2, items_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(3, defaultMode_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(4, optional_);
      }
      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, getLocalObjectReference());
      }
      for (int i = 0; i < items_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, items_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, defaultMode_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, optional_);
      }
      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.V1.ConfigMapVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ConfigMapVolumeSource other = (io.kubernetes.client.proto.V1.ConfigMapVolumeSource) obj;

      if (hasLocalObjectReference() != other.hasLocalObjectReference()) return false;
      if (hasLocalObjectReference()) {
        if (!getLocalObjectReference()
            .equals(other.getLocalObjectReference())) return false;
      }
      if (!getItemsList()
          .equals(other.getItemsList())) return false;
      if (hasDefaultMode() != other.hasDefaultMode()) return false;
      if (hasDefaultMode()) {
        if (getDefaultMode()
            != other.getDefaultMode()) return false;
      }
      if (hasOptional() != other.hasOptional()) return false;
      if (hasOptional()) {
        if (getOptional()
            != other.getOptional()) 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 (hasLocalObjectReference()) {
        hash = (37 * hash) + LOCALOBJECTREFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getLocalObjectReference().hashCode();
      }
      if (getItemsCount() > 0) {
        hash = (37 * hash) + ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getItemsList().hashCode();
      }
      if (hasDefaultMode()) {
        hash = (37 * hash) + DEFAULTMODE_FIELD_NUMBER;
        hash = (53 * hash) + getDefaultMode();
      }
      if (hasOptional()) {
        hash = (37 * hash) + OPTIONAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptional());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapVolumeSource 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.V1.ConfigMapVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ConfigMapVolumeSource 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.V1.ConfigMapVolumeSource 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>
     * Adapts a ConfigMap into a volume.
     *
     * The contents of the target ConfigMap's Data field will be presented in a
     * volume as files using the keys in the Data field as the file names, unless
     * the items element is populated with specific mappings of keys to paths.
     * ConfigMap volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ConfigMapVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ConfigMapVolumeSource)
        io.kubernetes.client.proto.V1.ConfigMapVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ConfigMapVolumeSource_descriptor;
      }

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

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

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

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

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ConfigMapVolumeSource 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.V1.ConfigMapVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.localObjectReference_ = localObjectReferenceBuilder_ == null
              ? localObjectReference_
              : localObjectReferenceBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.defaultMode_ = defaultMode_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.optional_ = optional_;
          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.V1.ConfigMapVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.ConfigMapVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ConfigMapVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.ConfigMapVolumeSource.getDefaultInstance()) return this;
        if (other.hasLocalObjectReference()) {
          mergeLocalObjectReference(other.getLocalObjectReference());
        }
        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_);
            }
          }
        }
        if (other.hasDefaultMode()) {
          setDefaultMode(other.getDefaultMode());
        }
        if (other.hasOptional()) {
          setOptional(other.getOptional());
        }
        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(
                    getLocalObjectReferenceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.KeyToPath m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.KeyToPath.parser(),
                        extensionRegistry);
                if (itemsBuilder_ == null) {
                  ensureItemsIsMutable();
                  items_.add(m);
                } else {
                  itemsBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 24: {
                defaultMode_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                optional_ = input.readBool();
                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 io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> localObjectReferenceBuilder_;
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return Whether the localObjectReference field is set.
       */
      public boolean hasLocalObjectReference() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return The localObjectReference.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
        if (localObjectReferenceBuilder_ == null) {
          return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        } else {
          return localObjectReferenceBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          localObjectReference_ = value;
        } else {
          localObjectReferenceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReference_ = builderForValue.build();
        } else {
          localObjectReferenceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder mergeLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            localObjectReference_ != null &&
            localObjectReference_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getLocalObjectReferenceBuilder().mergeFrom(value);
          } else {
            localObjectReference_ = value;
          }
        } else {
          localObjectReferenceBuilder_.mergeFrom(value);
        }
        if (localObjectReference_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder clearLocalObjectReference() {
        bitField0_ = (bitField0_ & ~0x00000001);
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getLocalObjectReferenceBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLocalObjectReferenceFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
        if (localObjectReferenceBuilder_ != null) {
          return localObjectReferenceBuilder_.getMessageOrBuilder();
        } else {
          return localObjectReference_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        }
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getLocalObjectReferenceFieldBuilder() {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReferenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getLocalObjectReference(),
                  getParentForChildren(),
                  isClean());
          localObjectReference_ = null;
        }
        return localObjectReferenceBuilder_;
      }

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

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.KeyToPath> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath 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 if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.KeyToPath value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath 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 if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.KeyToPath> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath 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 if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.KeyToPath.getDefaultInstance());
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.KeyToPath.getDefaultInstance());
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * ConfigMap will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the ConfigMap,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.KeyToPath.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      private int defaultMode_ ;
      /**
       * <pre>
       * defaultMode is optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 3;</code>
       * @return Whether the defaultMode field is set.
       */
      @java.lang.Override
      public boolean hasDefaultMode() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * defaultMode is optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 3;</code>
       * @return The defaultMode.
       */
      @java.lang.Override
      public int getDefaultMode() {
        return defaultMode_;
      }
      /**
       * <pre>
       * defaultMode is optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 3;</code>
       * @param value The defaultMode to set.
       * @return This builder for chaining.
       */
      public Builder setDefaultMode(int value) {

        defaultMode_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * defaultMode is optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDefaultMode() {
        bitField0_ = (bitField0_ & ~0x00000004);
        defaultMode_ = 0;
        onChanged();
        return this;
      }

      private boolean optional_ ;
      /**
       * <pre>
       * optional specify whether the ConfigMap or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return Whether the optional field is set.
       */
      @java.lang.Override
      public boolean hasOptional() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * optional specify whether the ConfigMap or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return The optional.
       */
      @java.lang.Override
      public boolean getOptional() {
        return optional_;
      }
      /**
       * <pre>
       * optional specify whether the ConfigMap or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @param value The optional to set.
       * @return This builder for chaining.
       */
      public Builder setOptional(boolean value) {

        optional_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * optional specify whether the ConfigMap or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptional() {
        bitField0_ = (bitField0_ & ~0x00000008);
        optional_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ConfigMapVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.ConfigMapVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ContainerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Container)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of the container specified as a DNS_LABEL.
     * Each container in a pod must have a unique name (DNS_LABEL).
     * Cannot be updated.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name of the container specified as a DNS_LABEL.
     * Each container in a pod must have a unique name (DNS_LABEL).
     * Cannot be updated.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the container specified as a DNS_LABEL.
     * Each container in a pod must have a unique name (DNS_LABEL).
     * Cannot be updated.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * This field is optional to allow higher level config management to default or override
     * container images in workload controllers like Deployments and StatefulSets.
     * +optional
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return Whether the image field is set.
     */
    boolean hasImage();
    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * This field is optional to allow higher level config management to default or override
     * container images in workload controllers like Deployments and StatefulSets.
     * +optional
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The image.
     */
    java.lang.String getImage();
    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * This field is optional to allow higher level config management to default or override
     * container images in workload controllers like Deployments and StatefulSets.
     * +optional
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The bytes for image.
     */
    com.google.protobuf.ByteString
        getImageBytes();

    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The container image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @return A list containing the command.
     */
    java.util.List<java.lang.String>
        getCommandList();
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The container image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @return The count of command.
     */
    int getCommandCount();
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The container image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @param index The index of the element to return.
     * @return The command at the given index.
     */
    java.lang.String getCommand(int index);
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The container image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the command at the given index.
     */
    com.google.protobuf.ByteString
        getCommandBytes(int index);

    /**
     * <pre>
     * Arguments to the entrypoint.
     * The container image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @return A list containing the args.
     */
    java.util.List<java.lang.String>
        getArgsList();
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The container image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @return The count of args.
     */
    int getArgsCount();
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The container image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @param index The index of the element to return.
     * @return The args at the given index.
     */
    java.lang.String getArgs(int index);
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The container image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the args at the given index.
     */
    com.google.protobuf.ByteString
        getArgsBytes(int index);

    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return Whether the workingDir field is set.
     */
    boolean hasWorkingDir();
    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return The workingDir.
     */
    java.lang.String getWorkingDir();
    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return The bytes for workingDir.
     */
    com.google.protobuf.ByteString
        getWorkingDirBytes();

    /**
     * <pre>
     * List of ports to expose from the container. Not specifying a port here
     * DOES NOT prevent that port from being exposed. Any port which is
     * listening on the default "0.0.0.0" address inside a container will be
     * accessible from the network.
     * Modifying this array with strategic merge patch may corrupt the data.
     * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ContainerPort> 
        getPortsList();
    /**
     * <pre>
     * List of ports to expose from the container. Not specifying a port here
     * DOES NOT prevent that port from being exposed. Any port which is
     * listening on the default "0.0.0.0" address inside a container will be
     * accessible from the network.
     * Modifying this array with strategic merge patch may corrupt the data.
     * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    io.kubernetes.client.proto.V1.ContainerPort getPorts(int index);
    /**
     * <pre>
     * List of ports to expose from the container. Not specifying a port here
     * DOES NOT prevent that port from being exposed. Any port which is
     * listening on the default "0.0.0.0" address inside a container will be
     * accessible from the network.
     * Modifying this array with strategic merge patch may corrupt the data.
     * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    int getPortsCount();
    /**
     * <pre>
     * List of ports to expose from the container. Not specifying a port here
     * DOES NOT prevent that port from being exposed. Any port which is
     * listening on the default "0.0.0.0" address inside a container will be
     * accessible from the network.
     * Modifying this array with strategic merge patch may corrupt the data.
     * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ContainerPortOrBuilder> 
        getPortsOrBuilderList();
    /**
     * <pre>
     * List of ports to expose from the container. Not specifying a port here
     * DOES NOT prevent that port from being exposed. Any port which is
     * listening on the default "0.0.0.0" address inside a container will be
     * accessible from the network.
     * Modifying this array with strategic merge patch may corrupt the data.
     * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    io.kubernetes.client.proto.V1.ContainerPortOrBuilder getPortsOrBuilder(
        int index);

    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.EnvFromSource> 
        getEnvFromList();
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    io.kubernetes.client.proto.V1.EnvFromSource getEnvFrom(int index);
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    int getEnvFromCount();
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder> 
        getEnvFromOrBuilderList();
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder getEnvFromOrBuilder(
        int index);

    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.EnvVar> 
        getEnvList();
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    io.kubernetes.client.proto.V1.EnvVar getEnv(int index);
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    int getEnvCount();
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EnvVarOrBuilder> 
        getEnvOrBuilderList();
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    io.kubernetes.client.proto.V1.EnvVarOrBuilder getEnvOrBuilder(
        int index);

    /**
     * <pre>
     * Compute Resources required by this container.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     * @return Whether the resources field is set.
     */
    boolean hasResources();
    /**
     * <pre>
     * Compute Resources required by this container.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     * @return The resources.
     */
    io.kubernetes.client.proto.V1.ResourceRequirements getResources();
    /**
     * <pre>
     * Compute Resources required by this container.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     */
    io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder getResourcesOrBuilder();

    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy> 
        getResizePolicyList();
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    io.kubernetes.client.proto.V1.ContainerResizePolicy getResizePolicy(int index);
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    int getResizePolicyCount();
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder> 
        getResizePolicyOrBuilderList();
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder getResizePolicyOrBuilder(
        int index);

    /**
     * <pre>
     * RestartPolicy defines the restart behavior of individual containers in a pod.
     * This field may only be set for init containers, and the only allowed value is "Always".
     * For non-init containers or when this field is not specified,
     * the restart behavior is defined by the Pod's restart policy and the container type.
     * Setting the RestartPolicy as "Always" for the init container will have the following effect:
     * this init container will be continually restarted on
     * exit until all regular containers have terminated. Once all regular
     * containers have completed, all init containers with restartPolicy "Always"
     * will be shut down. This lifecycle differs from normal init containers and
     * is often referred to as a "sidecar" container. Although this init
     * container still starts in the init container sequence, it does not wait
     * for the container to complete before proceeding to the next init
     * container. Instead, the next init container starts immediately after this
     * init container is started, or after any startupProbe has successfully
     * completed.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return Whether the restartPolicy field is set.
     */
    boolean hasRestartPolicy();
    /**
     * <pre>
     * RestartPolicy defines the restart behavior of individual containers in a pod.
     * This field may only be set for init containers, and the only allowed value is "Always".
     * For non-init containers or when this field is not specified,
     * the restart behavior is defined by the Pod's restart policy and the container type.
     * Setting the RestartPolicy as "Always" for the init container will have the following effect:
     * this init container will be continually restarted on
     * exit until all regular containers have terminated. Once all regular
     * containers have completed, all init containers with restartPolicy "Always"
     * will be shut down. This lifecycle differs from normal init containers and
     * is often referred to as a "sidecar" container. Although this init
     * container still starts in the init container sequence, it does not wait
     * for the container to complete before proceeding to the next init
     * container. Instead, the next init container starts immediately after this
     * init container is started, or after any startupProbe has successfully
     * completed.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return The restartPolicy.
     */
    java.lang.String getRestartPolicy();
    /**
     * <pre>
     * RestartPolicy defines the restart behavior of individual containers in a pod.
     * This field may only be set for init containers, and the only allowed value is "Always".
     * For non-init containers or when this field is not specified,
     * the restart behavior is defined by the Pod's restart policy and the container type.
     * Setting the RestartPolicy as "Always" for the init container will have the following effect:
     * this init container will be continually restarted on
     * exit until all regular containers have terminated. Once all regular
     * containers have completed, all init containers with restartPolicy "Always"
     * will be shut down. This lifecycle differs from normal init containers and
     * is often referred to as a "sidecar" container. Although this init
     * container still starts in the init container sequence, it does not wait
     * for the container to complete before proceeding to the next init
     * container. Instead, the next init container starts immediately after this
     * init container is started, or after any startupProbe has successfully
     * completed.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return The bytes for restartPolicy.
     */
    com.google.protobuf.ByteString
        getRestartPolicyBytes();

    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.VolumeMount> 
        getVolumeMountsList();
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    io.kubernetes.client.proto.V1.VolumeMount getVolumeMounts(int index);
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    int getVolumeMountsCount();
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.VolumeMountOrBuilder> 
        getVolumeMountsOrBuilderList();
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    io.kubernetes.client.proto.V1.VolumeMountOrBuilder getVolumeMountsOrBuilder(
        int index);

    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.VolumeDevice> 
        getVolumeDevicesList();
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    io.kubernetes.client.proto.V1.VolumeDevice getVolumeDevices(int index);
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    int getVolumeDevicesCount();
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder> 
        getVolumeDevicesOrBuilderList();
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder getVolumeDevicesOrBuilder(
        int index);

    /**
     * <pre>
     * Periodic probe of container liveness.
     * Container will be restarted if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     * @return Whether the livenessProbe field is set.
     */
    boolean hasLivenessProbe();
    /**
     * <pre>
     * Periodic probe of container liveness.
     * Container will be restarted if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     * @return The livenessProbe.
     */
    io.kubernetes.client.proto.V1.Probe getLivenessProbe();
    /**
     * <pre>
     * Periodic probe of container liveness.
     * Container will be restarted if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     */
    io.kubernetes.client.proto.V1.ProbeOrBuilder getLivenessProbeOrBuilder();

    /**
     * <pre>
     * Periodic probe of container service readiness.
     * Container will be removed from service endpoints if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     * @return Whether the readinessProbe field is set.
     */
    boolean hasReadinessProbe();
    /**
     * <pre>
     * Periodic probe of container service readiness.
     * Container will be removed from service endpoints if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     * @return The readinessProbe.
     */
    io.kubernetes.client.proto.V1.Probe getReadinessProbe();
    /**
     * <pre>
     * Periodic probe of container service readiness.
     * Container will be removed from service endpoints if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     */
    io.kubernetes.client.proto.V1.ProbeOrBuilder getReadinessProbeOrBuilder();

    /**
     * <pre>
     * StartupProbe indicates that the Pod has successfully initialized.
     * If specified, no other probes are executed until this completes successfully.
     * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
     * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
     * when it might take a long time to load data or warm a cache, than during steady-state operation.
     * This cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     * @return Whether the startupProbe field is set.
     */
    boolean hasStartupProbe();
    /**
     * <pre>
     * StartupProbe indicates that the Pod has successfully initialized.
     * If specified, no other probes are executed until this completes successfully.
     * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
     * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
     * when it might take a long time to load data or warm a cache, than during steady-state operation.
     * This cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     * @return The startupProbe.
     */
    io.kubernetes.client.proto.V1.Probe getStartupProbe();
    /**
     * <pre>
     * StartupProbe indicates that the Pod has successfully initialized.
     * If specified, no other probes are executed until this completes successfully.
     * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
     * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
     * when it might take a long time to load data or warm a cache, than during steady-state operation.
     * This cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     */
    io.kubernetes.client.proto.V1.ProbeOrBuilder getStartupProbeOrBuilder();

    /**
     * <pre>
     * Actions that the management system should take in response to container lifecycle events.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     * @return Whether the lifecycle field is set.
     */
    boolean hasLifecycle();
    /**
     * <pre>
     * Actions that the management system should take in response to container lifecycle events.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     * @return The lifecycle.
     */
    io.kubernetes.client.proto.V1.Lifecycle getLifecycle();
    /**
     * <pre>
     * Actions that the management system should take in response to container lifecycle events.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     */
    io.kubernetes.client.proto.V1.LifecycleOrBuilder getLifecycleOrBuilder();

    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return Whether the terminationMessagePath field is set.
     */
    boolean hasTerminationMessagePath();
    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return The terminationMessagePath.
     */
    java.lang.String getTerminationMessagePath();
    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return The bytes for terminationMessagePath.
     */
    com.google.protobuf.ByteString
        getTerminationMessagePathBytes();

    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return Whether the terminationMessagePolicy field is set.
     */
    boolean hasTerminationMessagePolicy();
    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return The terminationMessagePolicy.
     */
    java.lang.String getTerminationMessagePolicy();
    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return The bytes for terminationMessagePolicy.
     */
    com.google.protobuf.ByteString
        getTerminationMessagePolicyBytes();

    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return Whether the imagePullPolicy field is set.
     */
    boolean hasImagePullPolicy();
    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return The imagePullPolicy.
     */
    java.lang.String getImagePullPolicy();
    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return The bytes for imagePullPolicy.
     */
    com.google.protobuf.ByteString
        getImagePullPolicyBytes();

    /**
     * <pre>
     * SecurityContext defines the security options the container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     * @return Whether the securityContext field is set.
     */
    boolean hasSecurityContext();
    /**
     * <pre>
     * SecurityContext defines the security options the container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     * @return The securityContext.
     */
    io.kubernetes.client.proto.V1.SecurityContext getSecurityContext();
    /**
     * <pre>
     * SecurityContext defines the security options the container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     */
    io.kubernetes.client.proto.V1.SecurityContextOrBuilder getSecurityContextOrBuilder();

    /**
     * <pre>
     * Whether this container should allocate a buffer for stdin in the container runtime. If this
     * is not set, reads from stdin in the container will always result in EOF.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 16;</code>
     * @return Whether the stdin field is set.
     */
    boolean hasStdin();
    /**
     * <pre>
     * Whether this container should allocate a buffer for stdin in the container runtime. If this
     * is not set, reads from stdin in the container will always result in EOF.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 16;</code>
     * @return The stdin.
     */
    boolean getStdin();

    /**
     * <pre>
     * Whether the container runtime should close the stdin channel after it has been opened by
     * a single attach. When stdin is true the stdin stream will remain open across multiple attach
     * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
     * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
     * at which time stdin is closed and remains closed until the container is restarted. If this
     * flag is false, a container processes that reads from stdin will never receive an EOF.
     * Default is false
     * +optional
     * </pre>
     *
     * <code>optional bool stdinOnce = 17;</code>
     * @return Whether the stdinOnce field is set.
     */
    boolean hasStdinOnce();
    /**
     * <pre>
     * Whether the container runtime should close the stdin channel after it has been opened by
     * a single attach. When stdin is true the stdin stream will remain open across multiple attach
     * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
     * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
     * at which time stdin is closed and remains closed until the container is restarted. If this
     * flag is false, a container processes that reads from stdin will never receive an EOF.
     * Default is false
     * +optional
     * </pre>
     *
     * <code>optional bool stdinOnce = 17;</code>
     * @return The stdinOnce.
     */
    boolean getStdinOnce();

    /**
     * <pre>
     * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 18;</code>
     * @return Whether the tty field is set.
     */
    boolean hasTty();
    /**
     * <pre>
     * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 18;</code>
     * @return The tty.
     */
    boolean getTty();
  }
  /**
   * <pre>
   * A single application container that you want to run within a pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Container}
   */
  public static final class Container extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Container)
      ContainerOrBuilder {
  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= */ "",
        Container.class.getName());
    }
    // Use Container.newBuilder() to construct.
    private Container(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Container() {
      name_ = "";
      image_ = "";
      command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      args_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      workingDir_ = "";
      ports_ = java.util.Collections.emptyList();
      envFrom_ = java.util.Collections.emptyList();
      env_ = java.util.Collections.emptyList();
      resizePolicy_ = java.util.Collections.emptyList();
      restartPolicy_ = "";
      volumeMounts_ = java.util.Collections.emptyList();
      volumeDevices_ = java.util.Collections.emptyList();
      terminationMessagePath_ = "";
      terminationMessagePolicy_ = "";
      imagePullPolicy_ = "";
    }

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

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name of the container specified as a DNS_LABEL.
     * Each container in a pod must have a unique name (DNS_LABEL).
     * Cannot be updated.
     * </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 of the container specified as a DNS_LABEL.
     * Each container in a pod must have a unique name (DNS_LABEL).
     * Cannot be updated.
     * </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 of the container specified as a DNS_LABEL.
     * Each container in a pod must have a unique name (DNS_LABEL).
     * Cannot be updated.
     * </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 IMAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object image_ = "";
    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * This field is optional to allow higher level config management to default or override
     * container images in workload controllers like Deployments and StatefulSets.
     * +optional
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return Whether the image field is set.
     */
    @java.lang.Override
    public boolean hasImage() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * This field is optional to allow higher level config management to default or override
     * container images in workload controllers like Deployments and StatefulSets.
     * +optional
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The image.
     */
    @java.lang.Override
    public java.lang.String getImage() {
      java.lang.Object ref = image_;
      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()) {
          image_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * This field is optional to allow higher level config management to default or override
     * container images in workload controllers like Deployments and StatefulSets.
     * +optional
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The bytes for image.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getImageBytes() {
      java.lang.Object ref = image_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        image_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMMAND_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList command_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The container image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @return A list containing the command.
     */
    public com.google.protobuf.ProtocolStringList
        getCommandList() {
      return command_;
    }
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The container image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @return The count of command.
     */
    public int getCommandCount() {
      return command_.size();
    }
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The container image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @param index The index of the element to return.
     * @return The command at the given index.
     */
    public java.lang.String getCommand(int index) {
      return command_.get(index);
    }
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The container image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the command at the given index.
     */
    public com.google.protobuf.ByteString
        getCommandBytes(int index) {
      return command_.getByteString(index);
    }

    public static final int ARGS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList args_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The container image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @return A list containing the args.
     */
    public com.google.protobuf.ProtocolStringList
        getArgsList() {
      return args_;
    }
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The container image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @return The count of args.
     */
    public int getArgsCount() {
      return args_.size();
    }
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The container image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @param index The index of the element to return.
     * @return The args at the given index.
     */
    public java.lang.String getArgs(int index) {
      return args_.get(index);
    }
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The container image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the args at the given index.
     */
    public com.google.protobuf.ByteString
        getArgsBytes(int index) {
      return args_.getByteString(index);
    }

    public static final int WORKINGDIR_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object workingDir_ = "";
    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return Whether the workingDir field is set.
     */
    @java.lang.Override
    public boolean hasWorkingDir() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return The workingDir.
     */
    @java.lang.Override
    public java.lang.String getWorkingDir() {
      java.lang.Object ref = workingDir_;
      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()) {
          workingDir_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return The bytes for workingDir.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWorkingDirBytes() {
      java.lang.Object ref = workingDir_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        workingDir_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PORTS_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ContainerPort> ports_;
    /**
     * <pre>
     * List of ports to expose from the container. Not specifying a port here
     * DOES NOT prevent that port from being exposed. Any port which is
     * listening on the default "0.0.0.0" address inside a container will be
     * accessible from the network.
     * Modifying this array with strategic merge patch may corrupt the data.
     * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ContainerPort> getPortsList() {
      return ports_;
    }
    /**
     * <pre>
     * List of ports to expose from the container. Not specifying a port here
     * DOES NOT prevent that port from being exposed. Any port which is
     * listening on the default "0.0.0.0" address inside a container will be
     * accessible from the network.
     * Modifying this array with strategic merge patch may corrupt the data.
     * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerPortOrBuilder> 
        getPortsOrBuilderList() {
      return ports_;
    }
    /**
     * <pre>
     * List of ports to expose from the container. Not specifying a port here
     * DOES NOT prevent that port from being exposed. Any port which is
     * listening on the default "0.0.0.0" address inside a container will be
     * accessible from the network.
     * Modifying this array with strategic merge patch may corrupt the data.
     * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    @java.lang.Override
    public int getPortsCount() {
      return ports_.size();
    }
    /**
     * <pre>
     * List of ports to expose from the container. Not specifying a port here
     * DOES NOT prevent that port from being exposed. Any port which is
     * listening on the default "0.0.0.0" address inside a container will be
     * accessible from the network.
     * Modifying this array with strategic merge patch may corrupt the data.
     * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerPort getPorts(int index) {
      return ports_.get(index);
    }
    /**
     * <pre>
     * List of ports to expose from the container. Not specifying a port here
     * DOES NOT prevent that port from being exposed. Any port which is
     * listening on the default "0.0.0.0" address inside a container will be
     * accessible from the network.
     * Modifying this array with strategic merge patch may corrupt the data.
     * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerPortOrBuilder getPortsOrBuilder(
        int index) {
      return ports_.get(index);
    }

    public static final int ENVFROM_FIELD_NUMBER = 19;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.EnvFromSource> envFrom_;
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.EnvFromSource> getEnvFromList() {
      return envFrom_;
    }
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder> 
        getEnvFromOrBuilderList() {
      return envFrom_;
    }
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    @java.lang.Override
    public int getEnvFromCount() {
      return envFrom_.size();
    }
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EnvFromSource getEnvFrom(int index) {
      return envFrom_.get(index);
    }
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder getEnvFromOrBuilder(
        int index) {
      return envFrom_.get(index);
    }

    public static final int ENV_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.EnvVar> env_;
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.EnvVar> getEnvList() {
      return env_;
    }
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EnvVarOrBuilder> 
        getEnvOrBuilderList() {
      return env_;
    }
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    @java.lang.Override
    public int getEnvCount() {
      return env_.size();
    }
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EnvVar getEnv(int index) {
      return env_.get(index);
    }
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EnvVarOrBuilder getEnvOrBuilder(
        int index) {
      return env_.get(index);
    }

    public static final int RESOURCES_FIELD_NUMBER = 8;
    private io.kubernetes.client.proto.V1.ResourceRequirements resources_;
    /**
     * <pre>
     * Compute Resources required by this container.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     * @return Whether the resources field is set.
     */
    @java.lang.Override
    public boolean hasResources() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Compute Resources required by this container.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     * @return The resources.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceRequirements getResources() {
      return resources_ == null ? io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
    }
    /**
     * <pre>
     * Compute Resources required by this container.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder getResourcesOrBuilder() {
      return resources_ == null ? io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
    }

    public static final int RESIZEPOLICY_FIELD_NUMBER = 23;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy> resizePolicy_;
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy> getResizePolicyList() {
      return resizePolicy_;
    }
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder> 
        getResizePolicyOrBuilderList() {
      return resizePolicy_;
    }
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    @java.lang.Override
    public int getResizePolicyCount() {
      return resizePolicy_.size();
    }
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerResizePolicy getResizePolicy(int index) {
      return resizePolicy_.get(index);
    }
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder getResizePolicyOrBuilder(
        int index) {
      return resizePolicy_.get(index);
    }

    public static final int RESTARTPOLICY_FIELD_NUMBER = 24;
    @SuppressWarnings("serial")
    private volatile java.lang.Object restartPolicy_ = "";
    /**
     * <pre>
     * RestartPolicy defines the restart behavior of individual containers in a pod.
     * This field may only be set for init containers, and the only allowed value is "Always".
     * For non-init containers or when this field is not specified,
     * the restart behavior is defined by the Pod's restart policy and the container type.
     * Setting the RestartPolicy as "Always" for the init container will have the following effect:
     * this init container will be continually restarted on
     * exit until all regular containers have terminated. Once all regular
     * containers have completed, all init containers with restartPolicy "Always"
     * will be shut down. This lifecycle differs from normal init containers and
     * is often referred to as a "sidecar" container. Although this init
     * container still starts in the init container sequence, it does not wait
     * for the container to complete before proceeding to the next init
     * container. Instead, the next init container starts immediately after this
     * init container is started, or after any startupProbe has successfully
     * completed.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return Whether the restartPolicy field is set.
     */
    @java.lang.Override
    public boolean hasRestartPolicy() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * RestartPolicy defines the restart behavior of individual containers in a pod.
     * This field may only be set for init containers, and the only allowed value is "Always".
     * For non-init containers or when this field is not specified,
     * the restart behavior is defined by the Pod's restart policy and the container type.
     * Setting the RestartPolicy as "Always" for the init container will have the following effect:
     * this init container will be continually restarted on
     * exit until all regular containers have terminated. Once all regular
     * containers have completed, all init containers with restartPolicy "Always"
     * will be shut down. This lifecycle differs from normal init containers and
     * is often referred to as a "sidecar" container. Although this init
     * container still starts in the init container sequence, it does not wait
     * for the container to complete before proceeding to the next init
     * container. Instead, the next init container starts immediately after this
     * init container is started, or after any startupProbe has successfully
     * completed.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return The restartPolicy.
     */
    @java.lang.Override
    public java.lang.String getRestartPolicy() {
      java.lang.Object ref = restartPolicy_;
      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()) {
          restartPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * RestartPolicy defines the restart behavior of individual containers in a pod.
     * This field may only be set for init containers, and the only allowed value is "Always".
     * For non-init containers or when this field is not specified,
     * the restart behavior is defined by the Pod's restart policy and the container type.
     * Setting the RestartPolicy as "Always" for the init container will have the following effect:
     * this init container will be continually restarted on
     * exit until all regular containers have terminated. Once all regular
     * containers have completed, all init containers with restartPolicy "Always"
     * will be shut down. This lifecycle differs from normal init containers and
     * is often referred to as a "sidecar" container. Although this init
     * container still starts in the init container sequence, it does not wait
     * for the container to complete before proceeding to the next init
     * container. Instead, the next init container starts immediately after this
     * init container is started, or after any startupProbe has successfully
     * completed.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return The bytes for restartPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRestartPolicyBytes() {
      java.lang.Object ref = restartPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        restartPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUMEMOUNTS_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.VolumeMount> volumeMounts_;
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.VolumeMount> getVolumeMountsList() {
      return volumeMounts_;
    }
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeMountOrBuilder> 
        getVolumeMountsOrBuilderList() {
      return volumeMounts_;
    }
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    @java.lang.Override
    public int getVolumeMountsCount() {
      return volumeMounts_.size();
    }
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeMount getVolumeMounts(int index) {
      return volumeMounts_.get(index);
    }
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeMountOrBuilder getVolumeMountsOrBuilder(
        int index) {
      return volumeMounts_.get(index);
    }

    public static final int VOLUMEDEVICES_FIELD_NUMBER = 21;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.VolumeDevice> volumeDevices_;
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.VolumeDevice> getVolumeDevicesList() {
      return volumeDevices_;
    }
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder> 
        getVolumeDevicesOrBuilderList() {
      return volumeDevices_;
    }
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    @java.lang.Override
    public int getVolumeDevicesCount() {
      return volumeDevices_.size();
    }
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeDevice getVolumeDevices(int index) {
      return volumeDevices_.get(index);
    }
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder getVolumeDevicesOrBuilder(
        int index) {
      return volumeDevices_.get(index);
    }

    public static final int LIVENESSPROBE_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.V1.Probe livenessProbe_;
    /**
     * <pre>
     * Periodic probe of container liveness.
     * Container will be restarted if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     * @return Whether the livenessProbe field is set.
     */
    @java.lang.Override
    public boolean hasLivenessProbe() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Periodic probe of container liveness.
     * Container will be restarted if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     * @return The livenessProbe.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Probe getLivenessProbe() {
      return livenessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : livenessProbe_;
    }
    /**
     * <pre>
     * Periodic probe of container liveness.
     * Container will be restarted if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProbeOrBuilder getLivenessProbeOrBuilder() {
      return livenessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : livenessProbe_;
    }

    public static final int READINESSPROBE_FIELD_NUMBER = 11;
    private io.kubernetes.client.proto.V1.Probe readinessProbe_;
    /**
     * <pre>
     * Periodic probe of container service readiness.
     * Container will be removed from service endpoints if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     * @return Whether the readinessProbe field is set.
     */
    @java.lang.Override
    public boolean hasReadinessProbe() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Periodic probe of container service readiness.
     * Container will be removed from service endpoints if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     * @return The readinessProbe.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Probe getReadinessProbe() {
      return readinessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : readinessProbe_;
    }
    /**
     * <pre>
     * Periodic probe of container service readiness.
     * Container will be removed from service endpoints if the probe fails.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProbeOrBuilder getReadinessProbeOrBuilder() {
      return readinessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : readinessProbe_;
    }

    public static final int STARTUPPROBE_FIELD_NUMBER = 22;
    private io.kubernetes.client.proto.V1.Probe startupProbe_;
    /**
     * <pre>
     * StartupProbe indicates that the Pod has successfully initialized.
     * If specified, no other probes are executed until this completes successfully.
     * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
     * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
     * when it might take a long time to load data or warm a cache, than during steady-state operation.
     * This cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     * @return Whether the startupProbe field is set.
     */
    @java.lang.Override
    public boolean hasStartupProbe() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * StartupProbe indicates that the Pod has successfully initialized.
     * If specified, no other probes are executed until this completes successfully.
     * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
     * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
     * when it might take a long time to load data or warm a cache, than during steady-state operation.
     * This cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     * @return The startupProbe.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Probe getStartupProbe() {
      return startupProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : startupProbe_;
    }
    /**
     * <pre>
     * StartupProbe indicates that the Pod has successfully initialized.
     * If specified, no other probes are executed until this completes successfully.
     * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
     * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
     * when it might take a long time to load data or warm a cache, than during steady-state operation.
     * This cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProbeOrBuilder getStartupProbeOrBuilder() {
      return startupProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : startupProbe_;
    }

    public static final int LIFECYCLE_FIELD_NUMBER = 12;
    private io.kubernetes.client.proto.V1.Lifecycle lifecycle_;
    /**
     * <pre>
     * Actions that the management system should take in response to container lifecycle events.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     * @return Whether the lifecycle field is set.
     */
    @java.lang.Override
    public boolean hasLifecycle() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * Actions that the management system should take in response to container lifecycle events.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     * @return The lifecycle.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Lifecycle getLifecycle() {
      return lifecycle_ == null ? io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance() : lifecycle_;
    }
    /**
     * <pre>
     * Actions that the management system should take in response to container lifecycle events.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LifecycleOrBuilder getLifecycleOrBuilder() {
      return lifecycle_ == null ? io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance() : lifecycle_;
    }

    public static final int TERMINATIONMESSAGEPATH_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private volatile java.lang.Object terminationMessagePath_ = "";
    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return Whether the terminationMessagePath field is set.
     */
    @java.lang.Override
    public boolean hasTerminationMessagePath() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return The terminationMessagePath.
     */
    @java.lang.Override
    public java.lang.String getTerminationMessagePath() {
      java.lang.Object ref = terminationMessagePath_;
      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()) {
          terminationMessagePath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return The bytes for terminationMessagePath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTerminationMessagePathBytes() {
      java.lang.Object ref = terminationMessagePath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        terminationMessagePath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TERMINATIONMESSAGEPOLICY_FIELD_NUMBER = 20;
    @SuppressWarnings("serial")
    private volatile java.lang.Object terminationMessagePolicy_ = "";
    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return Whether the terminationMessagePolicy field is set.
     */
    @java.lang.Override
    public boolean hasTerminationMessagePolicy() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return The terminationMessagePolicy.
     */
    @java.lang.Override
    public java.lang.String getTerminationMessagePolicy() {
      java.lang.Object ref = terminationMessagePolicy_;
      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()) {
          terminationMessagePolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return The bytes for terminationMessagePolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTerminationMessagePolicyBytes() {
      java.lang.Object ref = terminationMessagePolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        terminationMessagePolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IMAGEPULLPOLICY_FIELD_NUMBER = 14;
    @SuppressWarnings("serial")
    private volatile java.lang.Object imagePullPolicy_ = "";
    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return Whether the imagePullPolicy field is set.
     */
    @java.lang.Override
    public boolean hasImagePullPolicy() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return The imagePullPolicy.
     */
    @java.lang.Override
    public java.lang.String getImagePullPolicy() {
      java.lang.Object ref = imagePullPolicy_;
      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()) {
          imagePullPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return The bytes for imagePullPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getImagePullPolicyBytes() {
      java.lang.Object ref = imagePullPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        imagePullPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECURITYCONTEXT_FIELD_NUMBER = 15;
    private io.kubernetes.client.proto.V1.SecurityContext securityContext_;
    /**
     * <pre>
     * SecurityContext defines the security options the container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     * @return Whether the securityContext field is set.
     */
    @java.lang.Override
    public boolean hasSecurityContext() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <pre>
     * SecurityContext defines the security options the container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     * @return The securityContext.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecurityContext getSecurityContext() {
      return securityContext_ == null ? io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance() : securityContext_;
    }
    /**
     * <pre>
     * SecurityContext defines the security options the container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecurityContextOrBuilder getSecurityContextOrBuilder() {
      return securityContext_ == null ? io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance() : securityContext_;
    }

    public static final int STDIN_FIELD_NUMBER = 16;
    private boolean stdin_ = false;
    /**
     * <pre>
     * Whether this container should allocate a buffer for stdin in the container runtime. If this
     * is not set, reads from stdin in the container will always result in EOF.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 16;</code>
     * @return Whether the stdin field is set.
     */
    @java.lang.Override
    public boolean hasStdin() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     * Whether this container should allocate a buffer for stdin in the container runtime. If this
     * is not set, reads from stdin in the container will always result in EOF.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 16;</code>
     * @return The stdin.
     */
    @java.lang.Override
    public boolean getStdin() {
      return stdin_;
    }

    public static final int STDINONCE_FIELD_NUMBER = 17;
    private boolean stdinOnce_ = false;
    /**
     * <pre>
     * Whether the container runtime should close the stdin channel after it has been opened by
     * a single attach. When stdin is true the stdin stream will remain open across multiple attach
     * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
     * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
     * at which time stdin is closed and remains closed until the container is restarted. If this
     * flag is false, a container processes that reads from stdin will never receive an EOF.
     * Default is false
     * +optional
     * </pre>
     *
     * <code>optional bool stdinOnce = 17;</code>
     * @return Whether the stdinOnce field is set.
     */
    @java.lang.Override
    public boolean hasStdinOnce() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <pre>
     * Whether the container runtime should close the stdin channel after it has been opened by
     * a single attach. When stdin is true the stdin stream will remain open across multiple attach
     * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
     * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
     * at which time stdin is closed and remains closed until the container is restarted. If this
     * flag is false, a container processes that reads from stdin will never receive an EOF.
     * Default is false
     * +optional
     * </pre>
     *
     * <code>optional bool stdinOnce = 17;</code>
     * @return The stdinOnce.
     */
    @java.lang.Override
    public boolean getStdinOnce() {
      return stdinOnce_;
    }

    public static final int TTY_FIELD_NUMBER = 18;
    private boolean tty_ = false;
    /**
     * <pre>
     * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 18;</code>
     * @return Whether the tty field is set.
     */
    @java.lang.Override
    public boolean hasTty() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <pre>
     * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 18;</code>
     * @return The tty.
     */
    @java.lang.Override
    public boolean getTty() {
      return tty_;
    }

    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, image_);
      }
      for (int i = 0; i < command_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, command_.getRaw(i));
      }
      for (int i = 0; i < args_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, args_.getRaw(i));
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, workingDir_);
      }
      for (int i = 0; i < ports_.size(); i++) {
        output.writeMessage(6, ports_.get(i));
      }
      for (int i = 0; i < env_.size(); i++) {
        output.writeMessage(7, env_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(8, getResources());
      }
      for (int i = 0; i < volumeMounts_.size(); i++) {
        output.writeMessage(9, volumeMounts_.get(i));
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(10, getLivenessProbe());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(11, getReadinessProbe());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeMessage(12, getLifecycle());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 13, terminationMessagePath_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 14, imagePullPolicy_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeMessage(15, getSecurityContext());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeBool(16, stdin_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        output.writeBool(17, stdinOnce_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        output.writeBool(18, tty_);
      }
      for (int i = 0; i < envFrom_.size(); i++) {
        output.writeMessage(19, envFrom_.get(i));
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 20, terminationMessagePolicy_);
      }
      for (int i = 0; i < volumeDevices_.size(); i++) {
        output.writeMessage(21, volumeDevices_.get(i));
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(22, getStartupProbe());
      }
      for (int i = 0; i < resizePolicy_.size(); i++) {
        output.writeMessage(23, resizePolicy_.get(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 24, restartPolicy_);
      }
      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, image_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < command_.size(); i++) {
          dataSize += computeStringSizeNoTag(command_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getCommandList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < args_.size(); i++) {
          dataSize += computeStringSizeNoTag(args_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getArgsList().size();
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, workingDir_);
      }
      for (int i = 0; i < ports_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, ports_.get(i));
      }
      for (int i = 0; i < env_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, env_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getResources());
      }
      for (int i = 0; i < volumeMounts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, volumeMounts_.get(i));
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getLivenessProbe());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getReadinessProbe());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getLifecycle());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(13, terminationMessagePath_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(14, imagePullPolicy_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, getSecurityContext());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(16, stdin_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(17, stdinOnce_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(18, tty_);
      }
      for (int i = 0; i < envFrom_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(19, envFrom_.get(i));
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(20, terminationMessagePolicy_);
      }
      for (int i = 0; i < volumeDevices_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(21, volumeDevices_.get(i));
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(22, getStartupProbe());
      }
      for (int i = 0; i < resizePolicy_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(23, resizePolicy_.get(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(24, restartPolicy_);
      }
      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.V1.Container)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Container other = (io.kubernetes.client.proto.V1.Container) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasImage() != other.hasImage()) return false;
      if (hasImage()) {
        if (!getImage()
            .equals(other.getImage())) return false;
      }
      if (!getCommandList()
          .equals(other.getCommandList())) return false;
      if (!getArgsList()
          .equals(other.getArgsList())) return false;
      if (hasWorkingDir() != other.hasWorkingDir()) return false;
      if (hasWorkingDir()) {
        if (!getWorkingDir()
            .equals(other.getWorkingDir())) return false;
      }
      if (!getPortsList()
          .equals(other.getPortsList())) return false;
      if (!getEnvFromList()
          .equals(other.getEnvFromList())) return false;
      if (!getEnvList()
          .equals(other.getEnvList())) return false;
      if (hasResources() != other.hasResources()) return false;
      if (hasResources()) {
        if (!getResources()
            .equals(other.getResources())) return false;
      }
      if (!getResizePolicyList()
          .equals(other.getResizePolicyList())) return false;
      if (hasRestartPolicy() != other.hasRestartPolicy()) return false;
      if (hasRestartPolicy()) {
        if (!getRestartPolicy()
            .equals(other.getRestartPolicy())) return false;
      }
      if (!getVolumeMountsList()
          .equals(other.getVolumeMountsList())) return false;
      if (!getVolumeDevicesList()
          .equals(other.getVolumeDevicesList())) return false;
      if (hasLivenessProbe() != other.hasLivenessProbe()) return false;
      if (hasLivenessProbe()) {
        if (!getLivenessProbe()
            .equals(other.getLivenessProbe())) return false;
      }
      if (hasReadinessProbe() != other.hasReadinessProbe()) return false;
      if (hasReadinessProbe()) {
        if (!getReadinessProbe()
            .equals(other.getReadinessProbe())) return false;
      }
      if (hasStartupProbe() != other.hasStartupProbe()) return false;
      if (hasStartupProbe()) {
        if (!getStartupProbe()
            .equals(other.getStartupProbe())) return false;
      }
      if (hasLifecycle() != other.hasLifecycle()) return false;
      if (hasLifecycle()) {
        if (!getLifecycle()
            .equals(other.getLifecycle())) return false;
      }
      if (hasTerminationMessagePath() != other.hasTerminationMessagePath()) return false;
      if (hasTerminationMessagePath()) {
        if (!getTerminationMessagePath()
            .equals(other.getTerminationMessagePath())) return false;
      }
      if (hasTerminationMessagePolicy() != other.hasTerminationMessagePolicy()) return false;
      if (hasTerminationMessagePolicy()) {
        if (!getTerminationMessagePolicy()
            .equals(other.getTerminationMessagePolicy())) return false;
      }
      if (hasImagePullPolicy() != other.hasImagePullPolicy()) return false;
      if (hasImagePullPolicy()) {
        if (!getImagePullPolicy()
            .equals(other.getImagePullPolicy())) return false;
      }
      if (hasSecurityContext() != other.hasSecurityContext()) return false;
      if (hasSecurityContext()) {
        if (!getSecurityContext()
            .equals(other.getSecurityContext())) return false;
      }
      if (hasStdin() != other.hasStdin()) return false;
      if (hasStdin()) {
        if (getStdin()
            != other.getStdin()) return false;
      }
      if (hasStdinOnce() != other.hasStdinOnce()) return false;
      if (hasStdinOnce()) {
        if (getStdinOnce()
            != other.getStdinOnce()) return false;
      }
      if (hasTty() != other.hasTty()) return false;
      if (hasTty()) {
        if (getTty()
            != other.getTty()) 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 (hasImage()) {
        hash = (37 * hash) + IMAGE_FIELD_NUMBER;
        hash = (53 * hash) + getImage().hashCode();
      }
      if (getCommandCount() > 0) {
        hash = (37 * hash) + COMMAND_FIELD_NUMBER;
        hash = (53 * hash) + getCommandList().hashCode();
      }
      if (getArgsCount() > 0) {
        hash = (37 * hash) + ARGS_FIELD_NUMBER;
        hash = (53 * hash) + getArgsList().hashCode();
      }
      if (hasWorkingDir()) {
        hash = (37 * hash) + WORKINGDIR_FIELD_NUMBER;
        hash = (53 * hash) + getWorkingDir().hashCode();
      }
      if (getPortsCount() > 0) {
        hash = (37 * hash) + PORTS_FIELD_NUMBER;
        hash = (53 * hash) + getPortsList().hashCode();
      }
      if (getEnvFromCount() > 0) {
        hash = (37 * hash) + ENVFROM_FIELD_NUMBER;
        hash = (53 * hash) + getEnvFromList().hashCode();
      }
      if (getEnvCount() > 0) {
        hash = (37 * hash) + ENV_FIELD_NUMBER;
        hash = (53 * hash) + getEnvList().hashCode();
      }
      if (hasResources()) {
        hash = (37 * hash) + RESOURCES_FIELD_NUMBER;
        hash = (53 * hash) + getResources().hashCode();
      }
      if (getResizePolicyCount() > 0) {
        hash = (37 * hash) + RESIZEPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getResizePolicyList().hashCode();
      }
      if (hasRestartPolicy()) {
        hash = (37 * hash) + RESTARTPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getRestartPolicy().hashCode();
      }
      if (getVolumeMountsCount() > 0) {
        hash = (37 * hash) + VOLUMEMOUNTS_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeMountsList().hashCode();
      }
      if (getVolumeDevicesCount() > 0) {
        hash = (37 * hash) + VOLUMEDEVICES_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeDevicesList().hashCode();
      }
      if (hasLivenessProbe()) {
        hash = (37 * hash) + LIVENESSPROBE_FIELD_NUMBER;
        hash = (53 * hash) + getLivenessProbe().hashCode();
      }
      if (hasReadinessProbe()) {
        hash = (37 * hash) + READINESSPROBE_FIELD_NUMBER;
        hash = (53 * hash) + getReadinessProbe().hashCode();
      }
      if (hasStartupProbe()) {
        hash = (37 * hash) + STARTUPPROBE_FIELD_NUMBER;
        hash = (53 * hash) + getStartupProbe().hashCode();
      }
      if (hasLifecycle()) {
        hash = (37 * hash) + LIFECYCLE_FIELD_NUMBER;
        hash = (53 * hash) + getLifecycle().hashCode();
      }
      if (hasTerminationMessagePath()) {
        hash = (37 * hash) + TERMINATIONMESSAGEPATH_FIELD_NUMBER;
        hash = (53 * hash) + getTerminationMessagePath().hashCode();
      }
      if (hasTerminationMessagePolicy()) {
        hash = (37 * hash) + TERMINATIONMESSAGEPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getTerminationMessagePolicy().hashCode();
      }
      if (hasImagePullPolicy()) {
        hash = (37 * hash) + IMAGEPULLPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getImagePullPolicy().hashCode();
      }
      if (hasSecurityContext()) {
        hash = (37 * hash) + SECURITYCONTEXT_FIELD_NUMBER;
        hash = (53 * hash) + getSecurityContext().hashCode();
      }
      if (hasStdin()) {
        hash = (37 * hash) + STDIN_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStdin());
      }
      if (hasStdinOnce()) {
        hash = (37 * hash) + STDINONCE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStdinOnce());
      }
      if (hasTty()) {
        hash = (37 * hash) + TTY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getTty());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.Container 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.V1.Container parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Container 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.V1.Container 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>
     * A single application container that you want to run within a pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Container}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Container)
        io.kubernetes.client.proto.V1.ContainerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Container_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPortsFieldBuilder();
          getEnvFromFieldBuilder();
          getEnvFieldBuilder();
          getResourcesFieldBuilder();
          getResizePolicyFieldBuilder();
          getVolumeMountsFieldBuilder();
          getVolumeDevicesFieldBuilder();
          getLivenessProbeFieldBuilder();
          getReadinessProbeFieldBuilder();
          getStartupProbeFieldBuilder();
          getLifecycleFieldBuilder();
          getSecurityContextFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        image_ = "";
        command_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        args_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        workingDir_ = "";
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
        } else {
          ports_ = null;
          portsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (envFromBuilder_ == null) {
          envFrom_ = java.util.Collections.emptyList();
        } else {
          envFrom_ = null;
          envFromBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (envBuilder_ == null) {
          env_ = java.util.Collections.emptyList();
        } else {
          env_ = null;
          envBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        resources_ = null;
        if (resourcesBuilder_ != null) {
          resourcesBuilder_.dispose();
          resourcesBuilder_ = null;
        }
        if (resizePolicyBuilder_ == null) {
          resizePolicy_ = java.util.Collections.emptyList();
        } else {
          resizePolicy_ = null;
          resizePolicyBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        restartPolicy_ = "";
        if (volumeMountsBuilder_ == null) {
          volumeMounts_ = java.util.Collections.emptyList();
        } else {
          volumeMounts_ = null;
          volumeMountsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        if (volumeDevicesBuilder_ == null) {
          volumeDevices_ = java.util.Collections.emptyList();
        } else {
          volumeDevices_ = null;
          volumeDevicesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00001000);
        livenessProbe_ = null;
        if (livenessProbeBuilder_ != null) {
          livenessProbeBuilder_.dispose();
          livenessProbeBuilder_ = null;
        }
        readinessProbe_ = null;
        if (readinessProbeBuilder_ != null) {
          readinessProbeBuilder_.dispose();
          readinessProbeBuilder_ = null;
        }
        startupProbe_ = null;
        if (startupProbeBuilder_ != null) {
          startupProbeBuilder_.dispose();
          startupProbeBuilder_ = null;
        }
        lifecycle_ = null;
        if (lifecycleBuilder_ != null) {
          lifecycleBuilder_.dispose();
          lifecycleBuilder_ = null;
        }
        terminationMessagePath_ = "";
        terminationMessagePolicy_ = "";
        imagePullPolicy_ = "";
        securityContext_ = null;
        if (securityContextBuilder_ != null) {
          securityContextBuilder_.dispose();
          securityContextBuilder_ = null;
        }
        stdin_ = false;
        stdinOnce_ = false;
        tty_ = false;
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.Container result) {
        if (portsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            ports_ = java.util.Collections.unmodifiableList(ports_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.ports_ = ports_;
        } else {
          result.ports_ = portsBuilder_.build();
        }
        if (envFromBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            envFrom_ = java.util.Collections.unmodifiableList(envFrom_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.envFrom_ = envFrom_;
        } else {
          result.envFrom_ = envFromBuilder_.build();
        }
        if (envBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            env_ = java.util.Collections.unmodifiableList(env_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.env_ = env_;
        } else {
          result.env_ = envBuilder_.build();
        }
        if (resizePolicyBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0)) {
            resizePolicy_ = java.util.Collections.unmodifiableList(resizePolicy_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.resizePolicy_ = resizePolicy_;
        } else {
          result.resizePolicy_ = resizePolicyBuilder_.build();
        }
        if (volumeMountsBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0)) {
            volumeMounts_ = java.util.Collections.unmodifiableList(volumeMounts_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.volumeMounts_ = volumeMounts_;
        } else {
          result.volumeMounts_ = volumeMountsBuilder_.build();
        }
        if (volumeDevicesBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0)) {
            volumeDevices_ = java.util.Collections.unmodifiableList(volumeDevices_);
            bitField0_ = (bitField0_ & ~0x00001000);
          }
          result.volumeDevices_ = volumeDevices_;
        } else {
          result.volumeDevices_ = volumeDevicesBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Container 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.image_ = image_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          command_.makeImmutable();
          result.command_ = command_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          args_.makeImmutable();
          result.args_ = args_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.workingDir_ = workingDir_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.resources_ = resourcesBuilder_ == null
              ? resources_
              : resourcesBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.restartPolicy_ = restartPolicy_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.livenessProbe_ = livenessProbeBuilder_ == null
              ? livenessProbe_
              : livenessProbeBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.readinessProbe_ = readinessProbeBuilder_ == null
              ? readinessProbe_
              : readinessProbeBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.startupProbe_ = startupProbeBuilder_ == null
              ? startupProbe_
              : startupProbeBuilder_.build();
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.lifecycle_ = lifecycleBuilder_ == null
              ? lifecycle_
              : lifecycleBuilder_.build();
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.terminationMessagePath_ = terminationMessagePath_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.terminationMessagePolicy_ = terminationMessagePolicy_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.imagePullPolicy_ = imagePullPolicy_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.securityContext_ = securityContextBuilder_ == null
              ? securityContext_
              : securityContextBuilder_.build();
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00200000) != 0)) {
          result.stdin_ = stdin_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00400000) != 0)) {
          result.stdinOnce_ = stdinOnce_;
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00800000) != 0)) {
          result.tty_ = tty_;
          to_bitField0_ |= 0x00008000;
        }
        result.bitField0_ |= to_bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Container other) {
        if (other == io.kubernetes.client.proto.V1.Container.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasImage()) {
          image_ = other.image_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.command_.isEmpty()) {
          if (command_.isEmpty()) {
            command_ = other.command_;
            bitField0_ |= 0x00000004;
          } else {
            ensureCommandIsMutable();
            command_.addAll(other.command_);
          }
          onChanged();
        }
        if (!other.args_.isEmpty()) {
          if (args_.isEmpty()) {
            args_ = other.args_;
            bitField0_ |= 0x00000008;
          } else {
            ensureArgsIsMutable();
            args_.addAll(other.args_);
          }
          onChanged();
        }
        if (other.hasWorkingDir()) {
          workingDir_ = other.workingDir_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (portsBuilder_ == null) {
          if (!other.ports_.isEmpty()) {
            if (ports_.isEmpty()) {
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensurePortsIsMutable();
              ports_.addAll(other.ports_);
            }
            onChanged();
          }
        } else {
          if (!other.ports_.isEmpty()) {
            if (portsBuilder_.isEmpty()) {
              portsBuilder_.dispose();
              portsBuilder_ = null;
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000020);
              portsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPortsFieldBuilder() : null;
            } else {
              portsBuilder_.addAllMessages(other.ports_);
            }
          }
        }
        if (envFromBuilder_ == null) {
          if (!other.envFrom_.isEmpty()) {
            if (envFrom_.isEmpty()) {
              envFrom_ = other.envFrom_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureEnvFromIsMutable();
              envFrom_.addAll(other.envFrom_);
            }
            onChanged();
          }
        } else {
          if (!other.envFrom_.isEmpty()) {
            if (envFromBuilder_.isEmpty()) {
              envFromBuilder_.dispose();
              envFromBuilder_ = null;
              envFrom_ = other.envFrom_;
              bitField0_ = (bitField0_ & ~0x00000040);
              envFromBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEnvFromFieldBuilder() : null;
            } else {
              envFromBuilder_.addAllMessages(other.envFrom_);
            }
          }
        }
        if (envBuilder_ == null) {
          if (!other.env_.isEmpty()) {
            if (env_.isEmpty()) {
              env_ = other.env_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureEnvIsMutable();
              env_.addAll(other.env_);
            }
            onChanged();
          }
        } else {
          if (!other.env_.isEmpty()) {
            if (envBuilder_.isEmpty()) {
              envBuilder_.dispose();
              envBuilder_ = null;
              env_ = other.env_;
              bitField0_ = (bitField0_ & ~0x00000080);
              envBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEnvFieldBuilder() : null;
            } else {
              envBuilder_.addAllMessages(other.env_);
            }
          }
        }
        if (other.hasResources()) {
          mergeResources(other.getResources());
        }
        if (resizePolicyBuilder_ == null) {
          if (!other.resizePolicy_.isEmpty()) {
            if (resizePolicy_.isEmpty()) {
              resizePolicy_ = other.resizePolicy_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureResizePolicyIsMutable();
              resizePolicy_.addAll(other.resizePolicy_);
            }
            onChanged();
          }
        } else {
          if (!other.resizePolicy_.isEmpty()) {
            if (resizePolicyBuilder_.isEmpty()) {
              resizePolicyBuilder_.dispose();
              resizePolicyBuilder_ = null;
              resizePolicy_ = other.resizePolicy_;
              bitField0_ = (bitField0_ & ~0x00000200);
              resizePolicyBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getResizePolicyFieldBuilder() : null;
            } else {
              resizePolicyBuilder_.addAllMessages(other.resizePolicy_);
            }
          }
        }
        if (other.hasRestartPolicy()) {
          restartPolicy_ = other.restartPolicy_;
          bitField0_ |= 0x00000400;
          onChanged();
        }
        if (volumeMountsBuilder_ == null) {
          if (!other.volumeMounts_.isEmpty()) {
            if (volumeMounts_.isEmpty()) {
              volumeMounts_ = other.volumeMounts_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureVolumeMountsIsMutable();
              volumeMounts_.addAll(other.volumeMounts_);
            }
            onChanged();
          }
        } else {
          if (!other.volumeMounts_.isEmpty()) {
            if (volumeMountsBuilder_.isEmpty()) {
              volumeMountsBuilder_.dispose();
              volumeMountsBuilder_ = null;
              volumeMounts_ = other.volumeMounts_;
              bitField0_ = (bitField0_ & ~0x00000800);
              volumeMountsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVolumeMountsFieldBuilder() : null;
            } else {
              volumeMountsBuilder_.addAllMessages(other.volumeMounts_);
            }
          }
        }
        if (volumeDevicesBuilder_ == null) {
          if (!other.volumeDevices_.isEmpty()) {
            if (volumeDevices_.isEmpty()) {
              volumeDevices_ = other.volumeDevices_;
              bitField0_ = (bitField0_ & ~0x00001000);
            } else {
              ensureVolumeDevicesIsMutable();
              volumeDevices_.addAll(other.volumeDevices_);
            }
            onChanged();
          }
        } else {
          if (!other.volumeDevices_.isEmpty()) {
            if (volumeDevicesBuilder_.isEmpty()) {
              volumeDevicesBuilder_.dispose();
              volumeDevicesBuilder_ = null;
              volumeDevices_ = other.volumeDevices_;
              bitField0_ = (bitField0_ & ~0x00001000);
              volumeDevicesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVolumeDevicesFieldBuilder() : null;
            } else {
              volumeDevicesBuilder_.addAllMessages(other.volumeDevices_);
            }
          }
        }
        if (other.hasLivenessProbe()) {
          mergeLivenessProbe(other.getLivenessProbe());
        }
        if (other.hasReadinessProbe()) {
          mergeReadinessProbe(other.getReadinessProbe());
        }
        if (other.hasStartupProbe()) {
          mergeStartupProbe(other.getStartupProbe());
        }
        if (other.hasLifecycle()) {
          mergeLifecycle(other.getLifecycle());
        }
        if (other.hasTerminationMessagePath()) {
          terminationMessagePath_ = other.terminationMessagePath_;
          bitField0_ |= 0x00020000;
          onChanged();
        }
        if (other.hasTerminationMessagePolicy()) {
          terminationMessagePolicy_ = other.terminationMessagePolicy_;
          bitField0_ |= 0x00040000;
          onChanged();
        }
        if (other.hasImagePullPolicy()) {
          imagePullPolicy_ = other.imagePullPolicy_;
          bitField0_ |= 0x00080000;
          onChanged();
        }
        if (other.hasSecurityContext()) {
          mergeSecurityContext(other.getSecurityContext());
        }
        if (other.hasStdin()) {
          setStdin(other.getStdin());
        }
        if (other.hasStdinOnce()) {
          setStdinOnce(other.getStdinOnce());
        }
        if (other.hasTty()) {
          setTty(other.getTty());
        }
        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: {
                image_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureCommandIsMutable();
                command_.add(bs);
                break;
              } // case 26
              case 34: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureArgsIsMutable();
                args_.add(bs);
                break;
              } // case 34
              case 42: {
                workingDir_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                io.kubernetes.client.proto.V1.ContainerPort m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ContainerPort.parser(),
                        extensionRegistry);
                if (portsBuilder_ == null) {
                  ensurePortsIsMutable();
                  ports_.add(m);
                } else {
                  portsBuilder_.addMessage(m);
                }
                break;
              } // case 50
              case 58: {
                io.kubernetes.client.proto.V1.EnvVar m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.EnvVar.parser(),
                        extensionRegistry);
                if (envBuilder_ == null) {
                  ensureEnvIsMutable();
                  env_.add(m);
                } else {
                  envBuilder_.addMessage(m);
                }
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getResourcesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 66
              case 74: {
                io.kubernetes.client.proto.V1.VolumeMount m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.VolumeMount.parser(),
                        extensionRegistry);
                if (volumeMountsBuilder_ == null) {
                  ensureVolumeMountsIsMutable();
                  volumeMounts_.add(m);
                } else {
                  volumeMountsBuilder_.addMessage(m);
                }
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getLivenessProbeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00002000;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getReadinessProbeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00004000;
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getLifecycleFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00010000;
                break;
              } // case 98
              case 106: {
                terminationMessagePath_ = input.readBytes();
                bitField0_ |= 0x00020000;
                break;
              } // case 106
              case 114: {
                imagePullPolicy_ = input.readBytes();
                bitField0_ |= 0x00080000;
                break;
              } // case 114
              case 122: {
                input.readMessage(
                    getSecurityContextFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00100000;
                break;
              } // case 122
              case 128: {
                stdin_ = input.readBool();
                bitField0_ |= 0x00200000;
                break;
              } // case 128
              case 136: {
                stdinOnce_ = input.readBool();
                bitField0_ |= 0x00400000;
                break;
              } // case 136
              case 144: {
                tty_ = input.readBool();
                bitField0_ |= 0x00800000;
                break;
              } // case 144
              case 154: {
                io.kubernetes.client.proto.V1.EnvFromSource m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.EnvFromSource.parser(),
                        extensionRegistry);
                if (envFromBuilder_ == null) {
                  ensureEnvFromIsMutable();
                  envFrom_.add(m);
                } else {
                  envFromBuilder_.addMessage(m);
                }
                break;
              } // case 154
              case 162: {
                terminationMessagePolicy_ = input.readBytes();
                bitField0_ |= 0x00040000;
                break;
              } // case 162
              case 170: {
                io.kubernetes.client.proto.V1.VolumeDevice m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.VolumeDevice.parser(),
                        extensionRegistry);
                if (volumeDevicesBuilder_ == null) {
                  ensureVolumeDevicesIsMutable();
                  volumeDevices_.add(m);
                } else {
                  volumeDevicesBuilder_.addMessage(m);
                }
                break;
              } // case 170
              case 178: {
                input.readMessage(
                    getStartupProbeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00008000;
                break;
              } // case 178
              case 186: {
                io.kubernetes.client.proto.V1.ContainerResizePolicy m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ContainerResizePolicy.parser(),
                        extensionRegistry);
                if (resizePolicyBuilder_ == null) {
                  ensureResizePolicyIsMutable();
                  resizePolicy_.add(m);
                } else {
                  resizePolicyBuilder_.addMessage(m);
                }
                break;
              } // case 186
              case 194: {
                restartPolicy_ = input.readBytes();
                bitField0_ |= 0x00000400;
                break;
              } // case 194
              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 of the container specified as a DNS_LABEL.
       * Each container in a pod must have a unique name (DNS_LABEL).
       * Cannot be updated.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name of the container specified as a DNS_LABEL.
       * Each container in a pod must have a unique name (DNS_LABEL).
       * Cannot be updated.
       * </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 of the container specified as a DNS_LABEL.
       * Each container in a pod must have a unique name (DNS_LABEL).
       * Cannot be updated.
       * </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 of the container specified as a DNS_LABEL.
       * Each container in a pod must have a unique name (DNS_LABEL).
       * Cannot be updated.
       * </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 of the container specified as a DNS_LABEL.
       * Each container in a pod must have a unique name (DNS_LABEL).
       * Cannot be updated.
       * </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 of the container specified as a DNS_LABEL.
       * Each container in a pod must have a unique name (DNS_LABEL).
       * Cannot be updated.
       * </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 image_ = "";
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * This field is optional to allow higher level config management to default or override
       * container images in workload controllers like Deployments and StatefulSets.
       * +optional
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return Whether the image field is set.
       */
      public boolean hasImage() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * This field is optional to allow higher level config management to default or override
       * container images in workload controllers like Deployments and StatefulSets.
       * +optional
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return The image.
       */
      public java.lang.String getImage() {
        java.lang.Object ref = image_;
        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()) {
            image_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * This field is optional to allow higher level config management to default or override
       * container images in workload controllers like Deployments and StatefulSets.
       * +optional
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return The bytes for image.
       */
      public com.google.protobuf.ByteString
          getImageBytes() {
        java.lang.Object ref = image_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          image_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * This field is optional to allow higher level config management to default or override
       * container images in workload controllers like Deployments and StatefulSets.
       * +optional
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @param value The image to set.
       * @return This builder for chaining.
       */
      public Builder setImage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        image_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * This field is optional to allow higher level config management to default or override
       * container images in workload controllers like Deployments and StatefulSets.
       * +optional
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearImage() {
        image_ = getDefaultInstance().getImage();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * This field is optional to allow higher level config management to default or override
       * container images in workload controllers like Deployments and StatefulSets.
       * +optional
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @param value The bytes for image to set.
       * @return This builder for chaining.
       */
      public Builder setImageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        image_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureCommandIsMutable() {
        if (!command_.isModifiable()) {
          command_ = new com.google.protobuf.LazyStringArrayList(command_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The container image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @return A list containing the command.
       */
      public com.google.protobuf.ProtocolStringList
          getCommandList() {
        command_.makeImmutable();
        return command_;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The container image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @return The count of command.
       */
      public int getCommandCount() {
        return command_.size();
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The container image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param index The index of the element to return.
       * @return The command at the given index.
       */
      public java.lang.String getCommand(int index) {
        return command_.get(index);
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The container image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the command at the given index.
       */
      public com.google.protobuf.ByteString
          getCommandBytes(int index) {
        return command_.getByteString(index);
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The container image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param index The index to set the value at.
       * @param value The command to set.
       * @return This builder for chaining.
       */
      public Builder setCommand(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The container image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param value The command to add.
       * @return This builder for chaining.
       */
      public Builder addCommand(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The container image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param values The command to add.
       * @return This builder for chaining.
       */
      public Builder addAllCommand(
          java.lang.Iterable<java.lang.String> values) {
        ensureCommandIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, command_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The container image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCommand() {
        command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The container image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param value The bytes of the command to add.
       * @return This builder for chaining.
       */
      public Builder addCommandBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList args_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureArgsIsMutable() {
        if (!args_.isModifiable()) {
          args_ = new com.google.protobuf.LazyStringArrayList(args_);
        }
        bitField0_ |= 0x00000008;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The container image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @return A list containing the args.
       */
      public com.google.protobuf.ProtocolStringList
          getArgsList() {
        args_.makeImmutable();
        return args_;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The container image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @return The count of args.
       */
      public int getArgsCount() {
        return args_.size();
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The container image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param index The index of the element to return.
       * @return The args at the given index.
       */
      public java.lang.String getArgs(int index) {
        return args_.get(index);
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The container image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the args at the given index.
       */
      public com.google.protobuf.ByteString
          getArgsBytes(int index) {
        return args_.getByteString(index);
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The container image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param index The index to set the value at.
       * @param value The args to set.
       * @return This builder for chaining.
       */
      public Builder setArgs(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureArgsIsMutable();
        args_.set(index, value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The container image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param value The args to add.
       * @return This builder for chaining.
       */
      public Builder addArgs(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureArgsIsMutable();
        args_.add(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The container image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param values The args to add.
       * @return This builder for chaining.
       */
      public Builder addAllArgs(
          java.lang.Iterable<java.lang.String> values) {
        ensureArgsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, args_);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The container image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearArgs() {
        args_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The container image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param value The bytes of the args to add.
       * @return This builder for chaining.
       */
      public Builder addArgsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureArgsIsMutable();
        args_.add(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object workingDir_ = "";
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @return Whether the workingDir field is set.
       */
      public boolean hasWorkingDir() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @return The workingDir.
       */
      public java.lang.String getWorkingDir() {
        java.lang.Object ref = workingDir_;
        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()) {
            workingDir_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @return The bytes for workingDir.
       */
      public com.google.protobuf.ByteString
          getWorkingDirBytes() {
        java.lang.Object ref = workingDir_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          workingDir_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @param value The workingDir to set.
       * @return This builder for chaining.
       */
      public Builder setWorkingDir(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        workingDir_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearWorkingDir() {
        workingDir_ = getDefaultInstance().getWorkingDir();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @param value The bytes for workingDir to set.
       * @return This builder for chaining.
       */
      public Builder setWorkingDirBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        workingDir_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.ContainerPort> ports_ =
        java.util.Collections.emptyList();
      private void ensurePortsIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          ports_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ContainerPort>(ports_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerPort, io.kubernetes.client.proto.V1.ContainerPort.Builder, io.kubernetes.client.proto.V1.ContainerPortOrBuilder> portsBuilder_;

      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerPort> getPortsList() {
        if (portsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ports_);
        } else {
          return portsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public int getPortsCount() {
        if (portsBuilder_ == null) {
          return ports_.size();
        } else {
          return portsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerPort getPorts(int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);
        } else {
          return portsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder setPorts(
          int index, io.kubernetes.client.proto.V1.ContainerPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.set(index, value);
          onChanged();
        } else {
          portsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder setPorts(
          int index, io.kubernetes.client.proto.V1.ContainerPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.set(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder addPorts(io.kubernetes.client.proto.V1.ContainerPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(value);
          onChanged();
        } else {
          portsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder addPorts(
          int index, io.kubernetes.client.proto.V1.ContainerPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(index, value);
          onChanged();
        } else {
          portsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder addPorts(
          io.kubernetes.client.proto.V1.ContainerPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder addPorts(
          int index, io.kubernetes.client.proto.V1.ContainerPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder addAllPorts(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ContainerPort> values) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ports_);
          onChanged();
        } else {
          portsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder clearPorts() {
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          portsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder removePorts(int index) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.remove(index);
          onChanged();
        } else {
          portsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerPort.Builder getPortsBuilder(
          int index) {
        return getPortsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerPortOrBuilder getPortsOrBuilder(
          int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);  } else {
          return portsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerPortOrBuilder> 
           getPortsOrBuilderList() {
        if (portsBuilder_ != null) {
          return portsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ports_);
        }
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerPort.Builder addPortsBuilder() {
        return getPortsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ContainerPort.getDefaultInstance());
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerPort.Builder addPortsBuilder(
          int index) {
        return getPortsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ContainerPort.getDefaultInstance());
      }
      /**
       * <pre>
       * List of ports to expose from the container. Not specifying a port here
       * DOES NOT prevent that port from being exposed. Any port which is
       * listening on the default "0.0.0.0" address inside a container will be
       * accessible from the network.
       * Modifying this array with strategic merge patch may corrupt the data.
       * For more information See https://github.com/kubernetes/kubernetes/issues/108255.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerPort.Builder> 
           getPortsBuilderList() {
        return getPortsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerPort, io.kubernetes.client.proto.V1.ContainerPort.Builder, io.kubernetes.client.proto.V1.ContainerPortOrBuilder> 
          getPortsFieldBuilder() {
        if (portsBuilder_ == null) {
          portsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerPort, io.kubernetes.client.proto.V1.ContainerPort.Builder, io.kubernetes.client.proto.V1.ContainerPortOrBuilder>(
                  ports_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          ports_ = null;
        }
        return portsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.EnvFromSource> envFrom_ =
        java.util.Collections.emptyList();
      private void ensureEnvFromIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          envFrom_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.EnvFromSource>(envFrom_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EnvFromSource, io.kubernetes.client.proto.V1.EnvFromSource.Builder, io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder> envFromBuilder_;

      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EnvFromSource> getEnvFromList() {
        if (envFromBuilder_ == null) {
          return java.util.Collections.unmodifiableList(envFrom_);
        } else {
          return envFromBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public int getEnvFromCount() {
        if (envFromBuilder_ == null) {
          return envFrom_.size();
        } else {
          return envFromBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public io.kubernetes.client.proto.V1.EnvFromSource getEnvFrom(int index) {
        if (envFromBuilder_ == null) {
          return envFrom_.get(index);
        } else {
          return envFromBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder setEnvFrom(
          int index, io.kubernetes.client.proto.V1.EnvFromSource value) {
        if (envFromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvFromIsMutable();
          envFrom_.set(index, value);
          onChanged();
        } else {
          envFromBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder setEnvFrom(
          int index, io.kubernetes.client.proto.V1.EnvFromSource.Builder builderForValue) {
        if (envFromBuilder_ == null) {
          ensureEnvFromIsMutable();
          envFrom_.set(index, builderForValue.build());
          onChanged();
        } else {
          envFromBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder addEnvFrom(io.kubernetes.client.proto.V1.EnvFromSource value) {
        if (envFromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvFromIsMutable();
          envFrom_.add(value);
          onChanged();
        } else {
          envFromBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder addEnvFrom(
          int index, io.kubernetes.client.proto.V1.EnvFromSource value) {
        if (envFromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvFromIsMutable();
          envFrom_.add(index, value);
          onChanged();
        } else {
          envFromBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder addEnvFrom(
          io.kubernetes.client.proto.V1.EnvFromSource.Builder builderForValue) {
        if (envFromBuilder_ == null) {
          ensureEnvFromIsMutable();
          envFrom_.add(builderForValue.build());
          onChanged();
        } else {
          envFromBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder addEnvFrom(
          int index, io.kubernetes.client.proto.V1.EnvFromSource.Builder builderForValue) {
        if (envFromBuilder_ == null) {
          ensureEnvFromIsMutable();
          envFrom_.add(index, builderForValue.build());
          onChanged();
        } else {
          envFromBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder addAllEnvFrom(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.EnvFromSource> values) {
        if (envFromBuilder_ == null) {
          ensureEnvFromIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, envFrom_);
          onChanged();
        } else {
          envFromBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder clearEnvFrom() {
        if (envFromBuilder_ == null) {
          envFrom_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          envFromBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder removeEnvFrom(int index) {
        if (envFromBuilder_ == null) {
          ensureEnvFromIsMutable();
          envFrom_.remove(index);
          onChanged();
        } else {
          envFromBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public io.kubernetes.client.proto.V1.EnvFromSource.Builder getEnvFromBuilder(
          int index) {
        return getEnvFromFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder getEnvFromOrBuilder(
          int index) {
        if (envFromBuilder_ == null) {
          return envFrom_.get(index);  } else {
          return envFromBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder> 
           getEnvFromOrBuilderList() {
        if (envFromBuilder_ != null) {
          return envFromBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(envFrom_);
        }
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public io.kubernetes.client.proto.V1.EnvFromSource.Builder addEnvFromBuilder() {
        return getEnvFromFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.EnvFromSource.getDefaultInstance());
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public io.kubernetes.client.proto.V1.EnvFromSource.Builder addEnvFromBuilder(
          int index) {
        return getEnvFromFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.EnvFromSource.getDefaultInstance());
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EnvFromSource.Builder> 
           getEnvFromBuilderList() {
        return getEnvFromFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EnvFromSource, io.kubernetes.client.proto.V1.EnvFromSource.Builder, io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder> 
          getEnvFromFieldBuilder() {
        if (envFromBuilder_ == null) {
          envFromBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.EnvFromSource, io.kubernetes.client.proto.V1.EnvFromSource.Builder, io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder>(
                  envFrom_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          envFrom_ = null;
        }
        return envFromBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.EnvVar> env_ =
        java.util.Collections.emptyList();
      private void ensureEnvIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          env_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.EnvVar>(env_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EnvVar, io.kubernetes.client.proto.V1.EnvVar.Builder, io.kubernetes.client.proto.V1.EnvVarOrBuilder> envBuilder_;

      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EnvVar> getEnvList() {
        if (envBuilder_ == null) {
          return java.util.Collections.unmodifiableList(env_);
        } else {
          return envBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public int getEnvCount() {
        if (envBuilder_ == null) {
          return env_.size();
        } else {
          return envBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVar getEnv(int index) {
        if (envBuilder_ == null) {
          return env_.get(index);
        } else {
          return envBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder setEnv(
          int index, io.kubernetes.client.proto.V1.EnvVar value) {
        if (envBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvIsMutable();
          env_.set(index, value);
          onChanged();
        } else {
          envBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder setEnv(
          int index, io.kubernetes.client.proto.V1.EnvVar.Builder builderForValue) {
        if (envBuilder_ == null) {
          ensureEnvIsMutable();
          env_.set(index, builderForValue.build());
          onChanged();
        } else {
          envBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder addEnv(io.kubernetes.client.proto.V1.EnvVar value) {
        if (envBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvIsMutable();
          env_.add(value);
          onChanged();
        } else {
          envBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder addEnv(
          int index, io.kubernetes.client.proto.V1.EnvVar value) {
        if (envBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvIsMutable();
          env_.add(index, value);
          onChanged();
        } else {
          envBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder addEnv(
          io.kubernetes.client.proto.V1.EnvVar.Builder builderForValue) {
        if (envBuilder_ == null) {
          ensureEnvIsMutable();
          env_.add(builderForValue.build());
          onChanged();
        } else {
          envBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder addEnv(
          int index, io.kubernetes.client.proto.V1.EnvVar.Builder builderForValue) {
        if (envBuilder_ == null) {
          ensureEnvIsMutable();
          env_.add(index, builderForValue.build());
          onChanged();
        } else {
          envBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder addAllEnv(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.EnvVar> values) {
        if (envBuilder_ == null) {
          ensureEnvIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, env_);
          onChanged();
        } else {
          envBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder clearEnv() {
        if (envBuilder_ == null) {
          env_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          envBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder removeEnv(int index) {
        if (envBuilder_ == null) {
          ensureEnvIsMutable();
          env_.remove(index);
          onChanged();
        } else {
          envBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVar.Builder getEnvBuilder(
          int index) {
        return getEnvFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVarOrBuilder getEnvOrBuilder(
          int index) {
        if (envBuilder_ == null) {
          return env_.get(index);  } else {
          return envBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.EnvVarOrBuilder> 
           getEnvOrBuilderList() {
        if (envBuilder_ != null) {
          return envBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(env_);
        }
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVar.Builder addEnvBuilder() {
        return getEnvFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.EnvVar.getDefaultInstance());
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVar.Builder addEnvBuilder(
          int index) {
        return getEnvFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.EnvVar.getDefaultInstance());
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EnvVar.Builder> 
           getEnvBuilderList() {
        return getEnvFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EnvVar, io.kubernetes.client.proto.V1.EnvVar.Builder, io.kubernetes.client.proto.V1.EnvVarOrBuilder> 
          getEnvFieldBuilder() {
        if (envBuilder_ == null) {
          envBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.EnvVar, io.kubernetes.client.proto.V1.EnvVar.Builder, io.kubernetes.client.proto.V1.EnvVarOrBuilder>(
                  env_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          env_ = null;
        }
        return envBuilder_;
      }

      private io.kubernetes.client.proto.V1.ResourceRequirements resources_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceRequirements, io.kubernetes.client.proto.V1.ResourceRequirements.Builder, io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder> resourcesBuilder_;
      /**
       * <pre>
       * Compute Resources required by this container.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       * @return Whether the resources field is set.
       */
      public boolean hasResources() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * Compute Resources required by this container.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       * @return The resources.
       */
      public io.kubernetes.client.proto.V1.ResourceRequirements getResources() {
        if (resourcesBuilder_ == null) {
          return resources_ == null ? io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
        } else {
          return resourcesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Compute Resources required by this container.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public Builder setResources(io.kubernetes.client.proto.V1.ResourceRequirements value) {
        if (resourcesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resources_ = value;
        } else {
          resourcesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Compute Resources required by this container.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public Builder setResources(
          io.kubernetes.client.proto.V1.ResourceRequirements.Builder builderForValue) {
        if (resourcesBuilder_ == null) {
          resources_ = builderForValue.build();
        } else {
          resourcesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Compute Resources required by this container.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public Builder mergeResources(io.kubernetes.client.proto.V1.ResourceRequirements value) {
        if (resourcesBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
            resources_ != null &&
            resources_ != io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance()) {
            getResourcesBuilder().mergeFrom(value);
          } else {
            resources_ = value;
          }
        } else {
          resourcesBuilder_.mergeFrom(value);
        }
        if (resources_ != null) {
          bitField0_ |= 0x00000100;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Compute Resources required by this container.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public Builder clearResources() {
        bitField0_ = (bitField0_ & ~0x00000100);
        resources_ = null;
        if (resourcesBuilder_ != null) {
          resourcesBuilder_.dispose();
          resourcesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Compute Resources required by this container.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceRequirements.Builder getResourcesBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getResourcesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Compute Resources required by this container.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder getResourcesOrBuilder() {
        if (resourcesBuilder_ != null) {
          return resourcesBuilder_.getMessageOrBuilder();
        } else {
          return resources_ == null ?
              io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
        }
      }
      /**
       * <pre>
       * Compute Resources required by this container.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceRequirements, io.kubernetes.client.proto.V1.ResourceRequirements.Builder, io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder> 
          getResourcesFieldBuilder() {
        if (resourcesBuilder_ == null) {
          resourcesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ResourceRequirements, io.kubernetes.client.proto.V1.ResourceRequirements.Builder, io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder>(
                  getResources(),
                  getParentForChildren(),
                  isClean());
          resources_ = null;
        }
        return resourcesBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy> resizePolicy_ =
        java.util.Collections.emptyList();
      private void ensureResizePolicyIsMutable() {
        if (!((bitField0_ & 0x00000200) != 0)) {
          resizePolicy_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ContainerResizePolicy>(resizePolicy_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerResizePolicy, io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder, io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder> resizePolicyBuilder_;

      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy> getResizePolicyList() {
        if (resizePolicyBuilder_ == null) {
          return java.util.Collections.unmodifiableList(resizePolicy_);
        } else {
          return resizePolicyBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public int getResizePolicyCount() {
        if (resizePolicyBuilder_ == null) {
          return resizePolicy_.size();
        } else {
          return resizePolicyBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerResizePolicy getResizePolicy(int index) {
        if (resizePolicyBuilder_ == null) {
          return resizePolicy_.get(index);
        } else {
          return resizePolicyBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder setResizePolicy(
          int index, io.kubernetes.client.proto.V1.ContainerResizePolicy value) {
        if (resizePolicyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResizePolicyIsMutable();
          resizePolicy_.set(index, value);
          onChanged();
        } else {
          resizePolicyBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder setResizePolicy(
          int index, io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder builderForValue) {
        if (resizePolicyBuilder_ == null) {
          ensureResizePolicyIsMutable();
          resizePolicy_.set(index, builderForValue.build());
          onChanged();
        } else {
          resizePolicyBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder addResizePolicy(io.kubernetes.client.proto.V1.ContainerResizePolicy value) {
        if (resizePolicyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResizePolicyIsMutable();
          resizePolicy_.add(value);
          onChanged();
        } else {
          resizePolicyBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder addResizePolicy(
          int index, io.kubernetes.client.proto.V1.ContainerResizePolicy value) {
        if (resizePolicyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResizePolicyIsMutable();
          resizePolicy_.add(index, value);
          onChanged();
        } else {
          resizePolicyBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder addResizePolicy(
          io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder builderForValue) {
        if (resizePolicyBuilder_ == null) {
          ensureResizePolicyIsMutable();
          resizePolicy_.add(builderForValue.build());
          onChanged();
        } else {
          resizePolicyBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder addResizePolicy(
          int index, io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder builderForValue) {
        if (resizePolicyBuilder_ == null) {
          ensureResizePolicyIsMutable();
          resizePolicy_.add(index, builderForValue.build());
          onChanged();
        } else {
          resizePolicyBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder addAllResizePolicy(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ContainerResizePolicy> values) {
        if (resizePolicyBuilder_ == null) {
          ensureResizePolicyIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, resizePolicy_);
          onChanged();
        } else {
          resizePolicyBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder clearResizePolicy() {
        if (resizePolicyBuilder_ == null) {
          resizePolicy_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          resizePolicyBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder removeResizePolicy(int index) {
        if (resizePolicyBuilder_ == null) {
          ensureResizePolicyIsMutable();
          resizePolicy_.remove(index);
          onChanged();
        } else {
          resizePolicyBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder getResizePolicyBuilder(
          int index) {
        return getResizePolicyFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder getResizePolicyOrBuilder(
          int index) {
        if (resizePolicyBuilder_ == null) {
          return resizePolicy_.get(index);  } else {
          return resizePolicyBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder> 
           getResizePolicyOrBuilderList() {
        if (resizePolicyBuilder_ != null) {
          return resizePolicyBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(resizePolicy_);
        }
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder addResizePolicyBuilder() {
        return getResizePolicyFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ContainerResizePolicy.getDefaultInstance());
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder addResizePolicyBuilder(
          int index) {
        return getResizePolicyFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ContainerResizePolicy.getDefaultInstance());
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder> 
           getResizePolicyBuilderList() {
        return getResizePolicyFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerResizePolicy, io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder, io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder> 
          getResizePolicyFieldBuilder() {
        if (resizePolicyBuilder_ == null) {
          resizePolicyBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerResizePolicy, io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder, io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder>(
                  resizePolicy_,
                  ((bitField0_ & 0x00000200) != 0),
                  getParentForChildren(),
                  isClean());
          resizePolicy_ = null;
        }
        return resizePolicyBuilder_;
      }

      private java.lang.Object restartPolicy_ = "";
      /**
       * <pre>
       * RestartPolicy defines the restart behavior of individual containers in a pod.
       * This field may only be set for init containers, and the only allowed value is "Always".
       * For non-init containers or when this field is not specified,
       * the restart behavior is defined by the Pod's restart policy and the container type.
       * Setting the RestartPolicy as "Always" for the init container will have the following effect:
       * this init container will be continually restarted on
       * exit until all regular containers have terminated. Once all regular
       * containers have completed, all init containers with restartPolicy "Always"
       * will be shut down. This lifecycle differs from normal init containers and
       * is often referred to as a "sidecar" container. Although this init
       * container still starts in the init container sequence, it does not wait
       * for the container to complete before proceeding to the next init
       * container. Instead, the next init container starts immediately after this
       * init container is started, or after any startupProbe has successfully
       * completed.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @return Whether the restartPolicy field is set.
       */
      public boolean hasRestartPolicy() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * RestartPolicy defines the restart behavior of individual containers in a pod.
       * This field may only be set for init containers, and the only allowed value is "Always".
       * For non-init containers or when this field is not specified,
       * the restart behavior is defined by the Pod's restart policy and the container type.
       * Setting the RestartPolicy as "Always" for the init container will have the following effect:
       * this init container will be continually restarted on
       * exit until all regular containers have terminated. Once all regular
       * containers have completed, all init containers with restartPolicy "Always"
       * will be shut down. This lifecycle differs from normal init containers and
       * is often referred to as a "sidecar" container. Although this init
       * container still starts in the init container sequence, it does not wait
       * for the container to complete before proceeding to the next init
       * container. Instead, the next init container starts immediately after this
       * init container is started, or after any startupProbe has successfully
       * completed.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @return The restartPolicy.
       */
      public java.lang.String getRestartPolicy() {
        java.lang.Object ref = restartPolicy_;
        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()) {
            restartPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * RestartPolicy defines the restart behavior of individual containers in a pod.
       * This field may only be set for init containers, and the only allowed value is "Always".
       * For non-init containers or when this field is not specified,
       * the restart behavior is defined by the Pod's restart policy and the container type.
       * Setting the RestartPolicy as "Always" for the init container will have the following effect:
       * this init container will be continually restarted on
       * exit until all regular containers have terminated. Once all regular
       * containers have completed, all init containers with restartPolicy "Always"
       * will be shut down. This lifecycle differs from normal init containers and
       * is often referred to as a "sidecar" container. Although this init
       * container still starts in the init container sequence, it does not wait
       * for the container to complete before proceeding to the next init
       * container. Instead, the next init container starts immediately after this
       * init container is started, or after any startupProbe has successfully
       * completed.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @return The bytes for restartPolicy.
       */
      public com.google.protobuf.ByteString
          getRestartPolicyBytes() {
        java.lang.Object ref = restartPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          restartPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * RestartPolicy defines the restart behavior of individual containers in a pod.
       * This field may only be set for init containers, and the only allowed value is "Always".
       * For non-init containers or when this field is not specified,
       * the restart behavior is defined by the Pod's restart policy and the container type.
       * Setting the RestartPolicy as "Always" for the init container will have the following effect:
       * this init container will be continually restarted on
       * exit until all regular containers have terminated. Once all regular
       * containers have completed, all init containers with restartPolicy "Always"
       * will be shut down. This lifecycle differs from normal init containers and
       * is often referred to as a "sidecar" container. Although this init
       * container still starts in the init container sequence, it does not wait
       * for the container to complete before proceeding to the next init
       * container. Instead, the next init container starts immediately after this
       * init container is started, or after any startupProbe has successfully
       * completed.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @param value The restartPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setRestartPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        restartPolicy_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RestartPolicy defines the restart behavior of individual containers in a pod.
       * This field may only be set for init containers, and the only allowed value is "Always".
       * For non-init containers or when this field is not specified,
       * the restart behavior is defined by the Pod's restart policy and the container type.
       * Setting the RestartPolicy as "Always" for the init container will have the following effect:
       * this init container will be continually restarted on
       * exit until all regular containers have terminated. Once all regular
       * containers have completed, all init containers with restartPolicy "Always"
       * will be shut down. This lifecycle differs from normal init containers and
       * is often referred to as a "sidecar" container. Although this init
       * container still starts in the init container sequence, it does not wait
       * for the container to complete before proceeding to the next init
       * container. Instead, the next init container starts immediately after this
       * init container is started, or after any startupProbe has successfully
       * completed.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @return This builder for chaining.
       */
      public Builder clearRestartPolicy() {
        restartPolicy_ = getDefaultInstance().getRestartPolicy();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RestartPolicy defines the restart behavior of individual containers in a pod.
       * This field may only be set for init containers, and the only allowed value is "Always".
       * For non-init containers or when this field is not specified,
       * the restart behavior is defined by the Pod's restart policy and the container type.
       * Setting the RestartPolicy as "Always" for the init container will have the following effect:
       * this init container will be continually restarted on
       * exit until all regular containers have terminated. Once all regular
       * containers have completed, all init containers with restartPolicy "Always"
       * will be shut down. This lifecycle differs from normal init containers and
       * is often referred to as a "sidecar" container. Although this init
       * container still starts in the init container sequence, it does not wait
       * for the container to complete before proceeding to the next init
       * container. Instead, the next init container starts immediately after this
       * init container is started, or after any startupProbe has successfully
       * completed.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @param value The bytes for restartPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setRestartPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        restartPolicy_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.VolumeMount> volumeMounts_ =
        java.util.Collections.emptyList();
      private void ensureVolumeMountsIsMutable() {
        if (!((bitField0_ & 0x00000800) != 0)) {
          volumeMounts_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.VolumeMount>(volumeMounts_);
          bitField0_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeMount, io.kubernetes.client.proto.V1.VolumeMount.Builder, io.kubernetes.client.proto.V1.VolumeMountOrBuilder> volumeMountsBuilder_;

      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeMount> getVolumeMountsList() {
        if (volumeMountsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(volumeMounts_);
        } else {
          return volumeMountsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public int getVolumeMountsCount() {
        if (volumeMountsBuilder_ == null) {
          return volumeMounts_.size();
        } else {
          return volumeMountsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMount getVolumeMounts(int index) {
        if (volumeMountsBuilder_ == null) {
          return volumeMounts_.get(index);
        } else {
          return volumeMountsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder setVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMount value) {
        if (volumeMountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeMountsIsMutable();
          volumeMounts_.set(index, value);
          onChanged();
        } else {
          volumeMountsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder setVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMount.Builder builderForValue) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.set(index, builderForValue.build());
          onChanged();
        } else {
          volumeMountsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder addVolumeMounts(io.kubernetes.client.proto.V1.VolumeMount value) {
        if (volumeMountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(value);
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder addVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMount value) {
        if (volumeMountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(index, value);
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder addVolumeMounts(
          io.kubernetes.client.proto.V1.VolumeMount.Builder builderForValue) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(builderForValue.build());
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder addVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMount.Builder builderForValue) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(index, builderForValue.build());
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder addAllVolumeMounts(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.VolumeMount> values) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, volumeMounts_);
          onChanged();
        } else {
          volumeMountsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder clearVolumeMounts() {
        if (volumeMountsBuilder_ == null) {
          volumeMounts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          volumeMountsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder removeVolumeMounts(int index) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.remove(index);
          onChanged();
        } else {
          volumeMountsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMount.Builder getVolumeMountsBuilder(
          int index) {
        return getVolumeMountsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMountOrBuilder getVolumeMountsOrBuilder(
          int index) {
        if (volumeMountsBuilder_ == null) {
          return volumeMounts_.get(index);  } else {
          return volumeMountsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeMountOrBuilder> 
           getVolumeMountsOrBuilderList() {
        if (volumeMountsBuilder_ != null) {
          return volumeMountsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(volumeMounts_);
        }
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMount.Builder addVolumeMountsBuilder() {
        return getVolumeMountsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.VolumeMount.getDefaultInstance());
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMount.Builder addVolumeMountsBuilder(
          int index) {
        return getVolumeMountsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.VolumeMount.getDefaultInstance());
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeMount.Builder> 
           getVolumeMountsBuilderList() {
        return getVolumeMountsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeMount, io.kubernetes.client.proto.V1.VolumeMount.Builder, io.kubernetes.client.proto.V1.VolumeMountOrBuilder> 
          getVolumeMountsFieldBuilder() {
        if (volumeMountsBuilder_ == null) {
          volumeMountsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.VolumeMount, io.kubernetes.client.proto.V1.VolumeMount.Builder, io.kubernetes.client.proto.V1.VolumeMountOrBuilder>(
                  volumeMounts_,
                  ((bitField0_ & 0x00000800) != 0),
                  getParentForChildren(),
                  isClean());
          volumeMounts_ = null;
        }
        return volumeMountsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.VolumeDevice> volumeDevices_ =
        java.util.Collections.emptyList();
      private void ensureVolumeDevicesIsMutable() {
        if (!((bitField0_ & 0x00001000) != 0)) {
          volumeDevices_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.VolumeDevice>(volumeDevices_);
          bitField0_ |= 0x00001000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeDevice, io.kubernetes.client.proto.V1.VolumeDevice.Builder, io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder> volumeDevicesBuilder_;

      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeDevice> getVolumeDevicesList() {
        if (volumeDevicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(volumeDevices_);
        } else {
          return volumeDevicesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public int getVolumeDevicesCount() {
        if (volumeDevicesBuilder_ == null) {
          return volumeDevices_.size();
        } else {
          return volumeDevicesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeDevice getVolumeDevices(int index) {
        if (volumeDevicesBuilder_ == null) {
          return volumeDevices_.get(index);
        } else {
          return volumeDevicesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder setVolumeDevices(
          int index, io.kubernetes.client.proto.V1.VolumeDevice value) {
        if (volumeDevicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeDevicesIsMutable();
          volumeDevices_.set(index, value);
          onChanged();
        } else {
          volumeDevicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder setVolumeDevices(
          int index, io.kubernetes.client.proto.V1.VolumeDevice.Builder builderForValue) {
        if (volumeDevicesBuilder_ == null) {
          ensureVolumeDevicesIsMutable();
          volumeDevices_.set(index, builderForValue.build());
          onChanged();
        } else {
          volumeDevicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder addVolumeDevices(io.kubernetes.client.proto.V1.VolumeDevice value) {
        if (volumeDevicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeDevicesIsMutable();
          volumeDevices_.add(value);
          onChanged();
        } else {
          volumeDevicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder addVolumeDevices(
          int index, io.kubernetes.client.proto.V1.VolumeDevice value) {
        if (volumeDevicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeDevicesIsMutable();
          volumeDevices_.add(index, value);
          onChanged();
        } else {
          volumeDevicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder addVolumeDevices(
          io.kubernetes.client.proto.V1.VolumeDevice.Builder builderForValue) {
        if (volumeDevicesBuilder_ == null) {
          ensureVolumeDevicesIsMutable();
          volumeDevices_.add(builderForValue.build());
          onChanged();
        } else {
          volumeDevicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder addVolumeDevices(
          int index, io.kubernetes.client.proto.V1.VolumeDevice.Builder builderForValue) {
        if (volumeDevicesBuilder_ == null) {
          ensureVolumeDevicesIsMutable();
          volumeDevices_.add(index, builderForValue.build());
          onChanged();
        } else {
          volumeDevicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder addAllVolumeDevices(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.VolumeDevice> values) {
        if (volumeDevicesBuilder_ == null) {
          ensureVolumeDevicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, volumeDevices_);
          onChanged();
        } else {
          volumeDevicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder clearVolumeDevices() {
        if (volumeDevicesBuilder_ == null) {
          volumeDevices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
          onChanged();
        } else {
          volumeDevicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder removeVolumeDevices(int index) {
        if (volumeDevicesBuilder_ == null) {
          ensureVolumeDevicesIsMutable();
          volumeDevices_.remove(index);
          onChanged();
        } else {
          volumeDevicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeDevice.Builder getVolumeDevicesBuilder(
          int index) {
        return getVolumeDevicesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder getVolumeDevicesOrBuilder(
          int index) {
        if (volumeDevicesBuilder_ == null) {
          return volumeDevices_.get(index);  } else {
          return volumeDevicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder> 
           getVolumeDevicesOrBuilderList() {
        if (volumeDevicesBuilder_ != null) {
          return volumeDevicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(volumeDevices_);
        }
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeDevice.Builder addVolumeDevicesBuilder() {
        return getVolumeDevicesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.VolumeDevice.getDefaultInstance());
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeDevice.Builder addVolumeDevicesBuilder(
          int index) {
        return getVolumeDevicesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.VolumeDevice.getDefaultInstance());
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeDevice.Builder> 
           getVolumeDevicesBuilderList() {
        return getVolumeDevicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeDevice, io.kubernetes.client.proto.V1.VolumeDevice.Builder, io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder> 
          getVolumeDevicesFieldBuilder() {
        if (volumeDevicesBuilder_ == null) {
          volumeDevicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.VolumeDevice, io.kubernetes.client.proto.V1.VolumeDevice.Builder, io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder>(
                  volumeDevices_,
                  ((bitField0_ & 0x00001000) != 0),
                  getParentForChildren(),
                  isClean());
          volumeDevices_ = null;
        }
        return volumeDevicesBuilder_;
      }

      private io.kubernetes.client.proto.V1.Probe livenessProbe_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> livenessProbeBuilder_;
      /**
       * <pre>
       * Periodic probe of container liveness.
       * Container will be restarted if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       * @return Whether the livenessProbe field is set.
       */
      public boolean hasLivenessProbe() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * Periodic probe of container liveness.
       * Container will be restarted if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       * @return The livenessProbe.
       */
      public io.kubernetes.client.proto.V1.Probe getLivenessProbe() {
        if (livenessProbeBuilder_ == null) {
          return livenessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : livenessProbe_;
        } else {
          return livenessProbeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Periodic probe of container liveness.
       * Container will be restarted if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public Builder setLivenessProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (livenessProbeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          livenessProbe_ = value;
        } else {
          livenessProbeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Periodic probe of container liveness.
       * Container will be restarted if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public Builder setLivenessProbe(
          io.kubernetes.client.proto.V1.Probe.Builder builderForValue) {
        if (livenessProbeBuilder_ == null) {
          livenessProbe_ = builderForValue.build();
        } else {
          livenessProbeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Periodic probe of container liveness.
       * Container will be restarted if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public Builder mergeLivenessProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (livenessProbeBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0) &&
            livenessProbe_ != null &&
            livenessProbe_ != io.kubernetes.client.proto.V1.Probe.getDefaultInstance()) {
            getLivenessProbeBuilder().mergeFrom(value);
          } else {
            livenessProbe_ = value;
          }
        } else {
          livenessProbeBuilder_.mergeFrom(value);
        }
        if (livenessProbe_ != null) {
          bitField0_ |= 0x00002000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Periodic probe of container liveness.
       * Container will be restarted if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public Builder clearLivenessProbe() {
        bitField0_ = (bitField0_ & ~0x00002000);
        livenessProbe_ = null;
        if (livenessProbeBuilder_ != null) {
          livenessProbeBuilder_.dispose();
          livenessProbeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Periodic probe of container liveness.
       * Container will be restarted if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public io.kubernetes.client.proto.V1.Probe.Builder getLivenessProbeBuilder() {
        bitField0_ |= 0x00002000;
        onChanged();
        return getLivenessProbeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Periodic probe of container liveness.
       * Container will be restarted if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public io.kubernetes.client.proto.V1.ProbeOrBuilder getLivenessProbeOrBuilder() {
        if (livenessProbeBuilder_ != null) {
          return livenessProbeBuilder_.getMessageOrBuilder();
        } else {
          return livenessProbe_ == null ?
              io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : livenessProbe_;
        }
      }
      /**
       * <pre>
       * Periodic probe of container liveness.
       * Container will be restarted if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> 
          getLivenessProbeFieldBuilder() {
        if (livenessProbeBuilder_ == null) {
          livenessProbeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder>(
                  getLivenessProbe(),
                  getParentForChildren(),
                  isClean());
          livenessProbe_ = null;
        }
        return livenessProbeBuilder_;
      }

      private io.kubernetes.client.proto.V1.Probe readinessProbe_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> readinessProbeBuilder_;
      /**
       * <pre>
       * Periodic probe of container service readiness.
       * Container will be removed from service endpoints if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       * @return Whether the readinessProbe field is set.
       */
      public boolean hasReadinessProbe() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * Periodic probe of container service readiness.
       * Container will be removed from service endpoints if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       * @return The readinessProbe.
       */
      public io.kubernetes.client.proto.V1.Probe getReadinessProbe() {
        if (readinessProbeBuilder_ == null) {
          return readinessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : readinessProbe_;
        } else {
          return readinessProbeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Periodic probe of container service readiness.
       * Container will be removed from service endpoints if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public Builder setReadinessProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (readinessProbeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          readinessProbe_ = value;
        } else {
          readinessProbeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Periodic probe of container service readiness.
       * Container will be removed from service endpoints if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public Builder setReadinessProbe(
          io.kubernetes.client.proto.V1.Probe.Builder builderForValue) {
        if (readinessProbeBuilder_ == null) {
          readinessProbe_ = builderForValue.build();
        } else {
          readinessProbeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Periodic probe of container service readiness.
       * Container will be removed from service endpoints if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public Builder mergeReadinessProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (readinessProbeBuilder_ == null) {
          if (((bitField0_ & 0x00004000) != 0) &&
            readinessProbe_ != null &&
            readinessProbe_ != io.kubernetes.client.proto.V1.Probe.getDefaultInstance()) {
            getReadinessProbeBuilder().mergeFrom(value);
          } else {
            readinessProbe_ = value;
          }
        } else {
          readinessProbeBuilder_.mergeFrom(value);
        }
        if (readinessProbe_ != null) {
          bitField0_ |= 0x00004000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Periodic probe of container service readiness.
       * Container will be removed from service endpoints if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public Builder clearReadinessProbe() {
        bitField0_ = (bitField0_ & ~0x00004000);
        readinessProbe_ = null;
        if (readinessProbeBuilder_ != null) {
          readinessProbeBuilder_.dispose();
          readinessProbeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Periodic probe of container service readiness.
       * Container will be removed from service endpoints if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public io.kubernetes.client.proto.V1.Probe.Builder getReadinessProbeBuilder() {
        bitField0_ |= 0x00004000;
        onChanged();
        return getReadinessProbeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Periodic probe of container service readiness.
       * Container will be removed from service endpoints if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public io.kubernetes.client.proto.V1.ProbeOrBuilder getReadinessProbeOrBuilder() {
        if (readinessProbeBuilder_ != null) {
          return readinessProbeBuilder_.getMessageOrBuilder();
        } else {
          return readinessProbe_ == null ?
              io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : readinessProbe_;
        }
      }
      /**
       * <pre>
       * Periodic probe of container service readiness.
       * Container will be removed from service endpoints if the probe fails.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> 
          getReadinessProbeFieldBuilder() {
        if (readinessProbeBuilder_ == null) {
          readinessProbeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder>(
                  getReadinessProbe(),
                  getParentForChildren(),
                  isClean());
          readinessProbe_ = null;
        }
        return readinessProbeBuilder_;
      }

      private io.kubernetes.client.proto.V1.Probe startupProbe_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> startupProbeBuilder_;
      /**
       * <pre>
       * StartupProbe indicates that the Pod has successfully initialized.
       * If specified, no other probes are executed until this completes successfully.
       * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
       * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
       * when it might take a long time to load data or warm a cache, than during steady-state operation.
       * This cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       * @return Whether the startupProbe field is set.
       */
      public boolean hasStartupProbe() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <pre>
       * StartupProbe indicates that the Pod has successfully initialized.
       * If specified, no other probes are executed until this completes successfully.
       * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
       * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
       * when it might take a long time to load data or warm a cache, than during steady-state operation.
       * This cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       * @return The startupProbe.
       */
      public io.kubernetes.client.proto.V1.Probe getStartupProbe() {
        if (startupProbeBuilder_ == null) {
          return startupProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : startupProbe_;
        } else {
          return startupProbeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * StartupProbe indicates that the Pod has successfully initialized.
       * If specified, no other probes are executed until this completes successfully.
       * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
       * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
       * when it might take a long time to load data or warm a cache, than during steady-state operation.
       * This cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public Builder setStartupProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (startupProbeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          startupProbe_ = value;
        } else {
          startupProbeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * StartupProbe indicates that the Pod has successfully initialized.
       * If specified, no other probes are executed until this completes successfully.
       * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
       * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
       * when it might take a long time to load data or warm a cache, than during steady-state operation.
       * This cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public Builder setStartupProbe(
          io.kubernetes.client.proto.V1.Probe.Builder builderForValue) {
        if (startupProbeBuilder_ == null) {
          startupProbe_ = builderForValue.build();
        } else {
          startupProbeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * StartupProbe indicates that the Pod has successfully initialized.
       * If specified, no other probes are executed until this completes successfully.
       * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
       * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
       * when it might take a long time to load data or warm a cache, than during steady-state operation.
       * This cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public Builder mergeStartupProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (startupProbeBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0) &&
            startupProbe_ != null &&
            startupProbe_ != io.kubernetes.client.proto.V1.Probe.getDefaultInstance()) {
            getStartupProbeBuilder().mergeFrom(value);
          } else {
            startupProbe_ = value;
          }
        } else {
          startupProbeBuilder_.mergeFrom(value);
        }
        if (startupProbe_ != null) {
          bitField0_ |= 0x00008000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * StartupProbe indicates that the Pod has successfully initialized.
       * If specified, no other probes are executed until this completes successfully.
       * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
       * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
       * when it might take a long time to load data or warm a cache, than during steady-state operation.
       * This cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public Builder clearStartupProbe() {
        bitField0_ = (bitField0_ & ~0x00008000);
        startupProbe_ = null;
        if (startupProbeBuilder_ != null) {
          startupProbeBuilder_.dispose();
          startupProbeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * StartupProbe indicates that the Pod has successfully initialized.
       * If specified, no other probes are executed until this completes successfully.
       * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
       * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
       * when it might take a long time to load data or warm a cache, than during steady-state operation.
       * This cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public io.kubernetes.client.proto.V1.Probe.Builder getStartupProbeBuilder() {
        bitField0_ |= 0x00008000;
        onChanged();
        return getStartupProbeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * StartupProbe indicates that the Pod has successfully initialized.
       * If specified, no other probes are executed until this completes successfully.
       * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
       * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
       * when it might take a long time to load data or warm a cache, than during steady-state operation.
       * This cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public io.kubernetes.client.proto.V1.ProbeOrBuilder getStartupProbeOrBuilder() {
        if (startupProbeBuilder_ != null) {
          return startupProbeBuilder_.getMessageOrBuilder();
        } else {
          return startupProbe_ == null ?
              io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : startupProbe_;
        }
      }
      /**
       * <pre>
       * StartupProbe indicates that the Pod has successfully initialized.
       * If specified, no other probes are executed until this completes successfully.
       * If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
       * This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
       * when it might take a long time to load data or warm a cache, than during steady-state operation.
       * This cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> 
          getStartupProbeFieldBuilder() {
        if (startupProbeBuilder_ == null) {
          startupProbeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder>(
                  getStartupProbe(),
                  getParentForChildren(),
                  isClean());
          startupProbe_ = null;
        }
        return startupProbeBuilder_;
      }

      private io.kubernetes.client.proto.V1.Lifecycle lifecycle_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Lifecycle, io.kubernetes.client.proto.V1.Lifecycle.Builder, io.kubernetes.client.proto.V1.LifecycleOrBuilder> lifecycleBuilder_;
      /**
       * <pre>
       * Actions that the management system should take in response to container lifecycle events.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       * @return Whether the lifecycle field is set.
       */
      public boolean hasLifecycle() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <pre>
       * Actions that the management system should take in response to container lifecycle events.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       * @return The lifecycle.
       */
      public io.kubernetes.client.proto.V1.Lifecycle getLifecycle() {
        if (lifecycleBuilder_ == null) {
          return lifecycle_ == null ? io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance() : lifecycle_;
        } else {
          return lifecycleBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Actions that the management system should take in response to container lifecycle events.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public Builder setLifecycle(io.kubernetes.client.proto.V1.Lifecycle value) {
        if (lifecycleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lifecycle_ = value;
        } else {
          lifecycleBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Actions that the management system should take in response to container lifecycle events.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public Builder setLifecycle(
          io.kubernetes.client.proto.V1.Lifecycle.Builder builderForValue) {
        if (lifecycleBuilder_ == null) {
          lifecycle_ = builderForValue.build();
        } else {
          lifecycleBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Actions that the management system should take in response to container lifecycle events.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public Builder mergeLifecycle(io.kubernetes.client.proto.V1.Lifecycle value) {
        if (lifecycleBuilder_ == null) {
          if (((bitField0_ & 0x00010000) != 0) &&
            lifecycle_ != null &&
            lifecycle_ != io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance()) {
            getLifecycleBuilder().mergeFrom(value);
          } else {
            lifecycle_ = value;
          }
        } else {
          lifecycleBuilder_.mergeFrom(value);
        }
        if (lifecycle_ != null) {
          bitField0_ |= 0x00010000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Actions that the management system should take in response to container lifecycle events.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public Builder clearLifecycle() {
        bitField0_ = (bitField0_ & ~0x00010000);
        lifecycle_ = null;
        if (lifecycleBuilder_ != null) {
          lifecycleBuilder_.dispose();
          lifecycleBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Actions that the management system should take in response to container lifecycle events.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public io.kubernetes.client.proto.V1.Lifecycle.Builder getLifecycleBuilder() {
        bitField0_ |= 0x00010000;
        onChanged();
        return getLifecycleFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Actions that the management system should take in response to container lifecycle events.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public io.kubernetes.client.proto.V1.LifecycleOrBuilder getLifecycleOrBuilder() {
        if (lifecycleBuilder_ != null) {
          return lifecycleBuilder_.getMessageOrBuilder();
        } else {
          return lifecycle_ == null ?
              io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance() : lifecycle_;
        }
      }
      /**
       * <pre>
       * Actions that the management system should take in response to container lifecycle events.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Lifecycle, io.kubernetes.client.proto.V1.Lifecycle.Builder, io.kubernetes.client.proto.V1.LifecycleOrBuilder> 
          getLifecycleFieldBuilder() {
        if (lifecycleBuilder_ == null) {
          lifecycleBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.Lifecycle, io.kubernetes.client.proto.V1.Lifecycle.Builder, io.kubernetes.client.proto.V1.LifecycleOrBuilder>(
                  getLifecycle(),
                  getParentForChildren(),
                  isClean());
          lifecycle_ = null;
        }
        return lifecycleBuilder_;
      }

      private java.lang.Object terminationMessagePath_ = "";
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @return Whether the terminationMessagePath field is set.
       */
      public boolean hasTerminationMessagePath() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @return The terminationMessagePath.
       */
      public java.lang.String getTerminationMessagePath() {
        java.lang.Object ref = terminationMessagePath_;
        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()) {
            terminationMessagePath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @return The bytes for terminationMessagePath.
       */
      public com.google.protobuf.ByteString
          getTerminationMessagePathBytes() {
        java.lang.Object ref = terminationMessagePath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          terminationMessagePath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @param value The terminationMessagePath to set.
       * @return This builder for chaining.
       */
      public Builder setTerminationMessagePath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        terminationMessagePath_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearTerminationMessagePath() {
        terminationMessagePath_ = getDefaultInstance().getTerminationMessagePath();
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @param value The bytes for terminationMessagePath to set.
       * @return This builder for chaining.
       */
      public Builder setTerminationMessagePathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        terminationMessagePath_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }

      private java.lang.Object terminationMessagePolicy_ = "";
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @return Whether the terminationMessagePolicy field is set.
       */
      public boolean hasTerminationMessagePolicy() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @return The terminationMessagePolicy.
       */
      public java.lang.String getTerminationMessagePolicy() {
        java.lang.Object ref = terminationMessagePolicy_;
        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()) {
            terminationMessagePolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @return The bytes for terminationMessagePolicy.
       */
      public com.google.protobuf.ByteString
          getTerminationMessagePolicyBytes() {
        java.lang.Object ref = terminationMessagePolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          terminationMessagePolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @param value The terminationMessagePolicy to set.
       * @return This builder for chaining.
       */
      public Builder setTerminationMessagePolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        terminationMessagePolicy_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearTerminationMessagePolicy() {
        terminationMessagePolicy_ = getDefaultInstance().getTerminationMessagePolicy();
        bitField0_ = (bitField0_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @param value The bytes for terminationMessagePolicy to set.
       * @return This builder for chaining.
       */
      public Builder setTerminationMessagePolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        terminationMessagePolicy_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }

      private java.lang.Object imagePullPolicy_ = "";
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @return Whether the imagePullPolicy field is set.
       */
      public boolean hasImagePullPolicy() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @return The imagePullPolicy.
       */
      public java.lang.String getImagePullPolicy() {
        java.lang.Object ref = imagePullPolicy_;
        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()) {
            imagePullPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @return The bytes for imagePullPolicy.
       */
      public com.google.protobuf.ByteString
          getImagePullPolicyBytes() {
        java.lang.Object ref = imagePullPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          imagePullPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @param value The imagePullPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setImagePullPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        imagePullPolicy_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearImagePullPolicy() {
        imagePullPolicy_ = getDefaultInstance().getImagePullPolicy();
        bitField0_ = (bitField0_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @param value The bytes for imagePullPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setImagePullPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        imagePullPolicy_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SecurityContext securityContext_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecurityContext, io.kubernetes.client.proto.V1.SecurityContext.Builder, io.kubernetes.client.proto.V1.SecurityContextOrBuilder> securityContextBuilder_;
      /**
       * <pre>
       * SecurityContext defines the security options the container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       * @return Whether the securityContext field is set.
       */
      public boolean hasSecurityContext() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <pre>
       * SecurityContext defines the security options the container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       * @return The securityContext.
       */
      public io.kubernetes.client.proto.V1.SecurityContext getSecurityContext() {
        if (securityContextBuilder_ == null) {
          return securityContext_ == null ? io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance() : securityContext_;
        } else {
          return securityContextBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * SecurityContext defines the security options the container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public Builder setSecurityContext(io.kubernetes.client.proto.V1.SecurityContext value) {
        if (securityContextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          securityContext_ = value;
        } else {
          securityContextBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SecurityContext defines the security options the container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public Builder setSecurityContext(
          io.kubernetes.client.proto.V1.SecurityContext.Builder builderForValue) {
        if (securityContextBuilder_ == null) {
          securityContext_ = builderForValue.build();
        } else {
          securityContextBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SecurityContext defines the security options the container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public Builder mergeSecurityContext(io.kubernetes.client.proto.V1.SecurityContext value) {
        if (securityContextBuilder_ == null) {
          if (((bitField0_ & 0x00100000) != 0) &&
            securityContext_ != null &&
            securityContext_ != io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance()) {
            getSecurityContextBuilder().mergeFrom(value);
          } else {
            securityContext_ = value;
          }
        } else {
          securityContextBuilder_.mergeFrom(value);
        }
        if (securityContext_ != null) {
          bitField0_ |= 0x00100000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * SecurityContext defines the security options the container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public Builder clearSecurityContext() {
        bitField0_ = (bitField0_ & ~0x00100000);
        securityContext_ = null;
        if (securityContextBuilder_ != null) {
          securityContextBuilder_.dispose();
          securityContextBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SecurityContext defines the security options the container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public io.kubernetes.client.proto.V1.SecurityContext.Builder getSecurityContextBuilder() {
        bitField0_ |= 0x00100000;
        onChanged();
        return getSecurityContextFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * SecurityContext defines the security options the container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public io.kubernetes.client.proto.V1.SecurityContextOrBuilder getSecurityContextOrBuilder() {
        if (securityContextBuilder_ != null) {
          return securityContextBuilder_.getMessageOrBuilder();
        } else {
          return securityContext_ == null ?
              io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance() : securityContext_;
        }
      }
      /**
       * <pre>
       * SecurityContext defines the security options the container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecurityContext, io.kubernetes.client.proto.V1.SecurityContext.Builder, io.kubernetes.client.proto.V1.SecurityContextOrBuilder> 
          getSecurityContextFieldBuilder() {
        if (securityContextBuilder_ == null) {
          securityContextBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecurityContext, io.kubernetes.client.proto.V1.SecurityContext.Builder, io.kubernetes.client.proto.V1.SecurityContextOrBuilder>(
                  getSecurityContext(),
                  getParentForChildren(),
                  isClean());
          securityContext_ = null;
        }
        return securityContextBuilder_;
      }

      private boolean stdin_ ;
      /**
       * <pre>
       * Whether this container should allocate a buffer for stdin in the container runtime. If this
       * is not set, reads from stdin in the container will always result in EOF.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 16;</code>
       * @return Whether the stdin field is set.
       */
      @java.lang.Override
      public boolean hasStdin() {
        return ((bitField0_ & 0x00200000) != 0);
      }
      /**
       * <pre>
       * Whether this container should allocate a buffer for stdin in the container runtime. If this
       * is not set, reads from stdin in the container will always result in EOF.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 16;</code>
       * @return The stdin.
       */
      @java.lang.Override
      public boolean getStdin() {
        return stdin_;
      }
      /**
       * <pre>
       * Whether this container should allocate a buffer for stdin in the container runtime. If this
       * is not set, reads from stdin in the container will always result in EOF.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 16;</code>
       * @param value The stdin to set.
       * @return This builder for chaining.
       */
      public Builder setStdin(boolean value) {

        stdin_ = value;
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether this container should allocate a buffer for stdin in the container runtime. If this
       * is not set, reads from stdin in the container will always result in EOF.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearStdin() {
        bitField0_ = (bitField0_ & ~0x00200000);
        stdin_ = false;
        onChanged();
        return this;
      }

      private boolean stdinOnce_ ;
      /**
       * <pre>
       * Whether the container runtime should close the stdin channel after it has been opened by
       * a single attach. When stdin is true the stdin stream will remain open across multiple attach
       * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
       * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
       * at which time stdin is closed and remains closed until the container is restarted. If this
       * flag is false, a container processes that reads from stdin will never receive an EOF.
       * Default is false
       * +optional
       * </pre>
       *
       * <code>optional bool stdinOnce = 17;</code>
       * @return Whether the stdinOnce field is set.
       */
      @java.lang.Override
      public boolean hasStdinOnce() {
        return ((bitField0_ & 0x00400000) != 0);
      }
      /**
       * <pre>
       * Whether the container runtime should close the stdin channel after it has been opened by
       * a single attach. When stdin is true the stdin stream will remain open across multiple attach
       * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
       * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
       * at which time stdin is closed and remains closed until the container is restarted. If this
       * flag is false, a container processes that reads from stdin will never receive an EOF.
       * Default is false
       * +optional
       * </pre>
       *
       * <code>optional bool stdinOnce = 17;</code>
       * @return The stdinOnce.
       */
      @java.lang.Override
      public boolean getStdinOnce() {
        return stdinOnce_;
      }
      /**
       * <pre>
       * Whether the container runtime should close the stdin channel after it has been opened by
       * a single attach. When stdin is true the stdin stream will remain open across multiple attach
       * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
       * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
       * at which time stdin is closed and remains closed until the container is restarted. If this
       * flag is false, a container processes that reads from stdin will never receive an EOF.
       * Default is false
       * +optional
       * </pre>
       *
       * <code>optional bool stdinOnce = 17;</code>
       * @param value The stdinOnce to set.
       * @return This builder for chaining.
       */
      public Builder setStdinOnce(boolean value) {

        stdinOnce_ = value;
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether the container runtime should close the stdin channel after it has been opened by
       * a single attach. When stdin is true the stdin stream will remain open across multiple attach
       * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
       * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
       * at which time stdin is closed and remains closed until the container is restarted. If this
       * flag is false, a container processes that reads from stdin will never receive an EOF.
       * Default is false
       * +optional
       * </pre>
       *
       * <code>optional bool stdinOnce = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearStdinOnce() {
        bitField0_ = (bitField0_ & ~0x00400000);
        stdinOnce_ = false;
        onChanged();
        return this;
      }

      private boolean tty_ ;
      /**
       * <pre>
       * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 18;</code>
       * @return Whether the tty field is set.
       */
      @java.lang.Override
      public boolean hasTty() {
        return ((bitField0_ & 0x00800000) != 0);
      }
      /**
       * <pre>
       * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 18;</code>
       * @return The tty.
       */
      @java.lang.Override
      public boolean getTty() {
        return tty_;
      }
      /**
       * <pre>
       * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 18;</code>
       * @param value The tty to set.
       * @return This builder for chaining.
       */
      public Builder setTty(boolean value) {

        tty_ = value;
        bitField0_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearTty() {
        bitField0_ = (bitField0_ & ~0x00800000);
        tty_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Container)
    }

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

    public static io.kubernetes.client.proto.V1.Container getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ContainerImageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ContainerImage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Names by which this image is known.
     * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string names = 1;</code>
     * @return A list containing the names.
     */
    java.util.List<java.lang.String>
        getNamesList();
    /**
     * <pre>
     * Names by which this image is known.
     * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string names = 1;</code>
     * @return The count of names.
     */
    int getNamesCount();
    /**
     * <pre>
     * Names by which this image is known.
     * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string names = 1;</code>
     * @param index The index of the element to return.
     * @return The names at the given index.
     */
    java.lang.String getNames(int index);
    /**
     * <pre>
     * Names by which this image is known.
     * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string names = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the names at the given index.
     */
    com.google.protobuf.ByteString
        getNamesBytes(int index);

    /**
     * <pre>
     * The size of the image in bytes.
     * +optional
     * </pre>
     *
     * <code>optional int64 sizeBytes = 2;</code>
     * @return Whether the sizeBytes field is set.
     */
    boolean hasSizeBytes();
    /**
     * <pre>
     * The size of the image in bytes.
     * +optional
     * </pre>
     *
     * <code>optional int64 sizeBytes = 2;</code>
     * @return The sizeBytes.
     */
    long getSizeBytes();
  }
  /**
   * <pre>
   * Describe a container image
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ContainerImage}
   */
  public static final class ContainerImage extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ContainerImage)
      ContainerImageOrBuilder {
  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= */ "",
        ContainerImage.class.getName());
    }
    // Use ContainerImage.newBuilder() to construct.
    private ContainerImage(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ContainerImage() {
      names_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

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

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

    private int bitField0_;
    public static final int NAMES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList names_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Names by which this image is known.
     * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string names = 1;</code>
     * @return A list containing the names.
     */
    public com.google.protobuf.ProtocolStringList
        getNamesList() {
      return names_;
    }
    /**
     * <pre>
     * Names by which this image is known.
     * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string names = 1;</code>
     * @return The count of names.
     */
    public int getNamesCount() {
      return names_.size();
    }
    /**
     * <pre>
     * Names by which this image is known.
     * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string names = 1;</code>
     * @param index The index of the element to return.
     * @return The names at the given index.
     */
    public java.lang.String getNames(int index) {
      return names_.get(index);
    }
    /**
     * <pre>
     * Names by which this image is known.
     * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string names = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the names at the given index.
     */
    public com.google.protobuf.ByteString
        getNamesBytes(int index) {
      return names_.getByteString(index);
    }

    public static final int SIZEBYTES_FIELD_NUMBER = 2;
    private long sizeBytes_ = 0L;
    /**
     * <pre>
     * The size of the image in bytes.
     * +optional
     * </pre>
     *
     * <code>optional int64 sizeBytes = 2;</code>
     * @return Whether the sizeBytes field is set.
     */
    @java.lang.Override
    public boolean hasSizeBytes() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The size of the image in bytes.
     * +optional
     * </pre>
     *
     * <code>optional int64 sizeBytes = 2;</code>
     * @return The sizeBytes.
     */
    @java.lang.Override
    public long getSizeBytes() {
      return sizeBytes_;
    }

    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 < names_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, names_.getRaw(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt64(2, sizeBytes_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < names_.size(); i++) {
          dataSize += computeStringSizeNoTag(names_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getNamesList().size();
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, sizeBytes_);
      }
      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.V1.ContainerImage)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ContainerImage other = (io.kubernetes.client.proto.V1.ContainerImage) obj;

      if (!getNamesList()
          .equals(other.getNamesList())) return false;
      if (hasSizeBytes() != other.hasSizeBytes()) return false;
      if (hasSizeBytes()) {
        if (getSizeBytes()
            != other.getSizeBytes()) 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 (getNamesCount() > 0) {
        hash = (37 * hash) + NAMES_FIELD_NUMBER;
        hash = (53 * hash) + getNamesList().hashCode();
      }
      if (hasSizeBytes()) {
        hash = (37 * hash) + SIZEBYTES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getSizeBytes());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ContainerImage 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.V1.ContainerImage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ContainerImage 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.V1.ContainerImage 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>
     * Describe a container image
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ContainerImage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ContainerImage)
        io.kubernetes.client.proto.V1.ContainerImageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerImage_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ContainerImage.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        names_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        sizeBytes_ = 0L;
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ContainerImage result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          names_.makeImmutable();
          result.names_ = names_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.sizeBytes_ = sizeBytes_;
          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.V1.ContainerImage) {
          return mergeFrom((io.kubernetes.client.proto.V1.ContainerImage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ContainerImage other) {
        if (other == io.kubernetes.client.proto.V1.ContainerImage.getDefaultInstance()) return this;
        if (!other.names_.isEmpty()) {
          if (names_.isEmpty()) {
            names_ = other.names_;
            bitField0_ |= 0x00000001;
          } else {
            ensureNamesIsMutable();
            names_.addAll(other.names_);
          }
          onChanged();
        }
        if (other.hasSizeBytes()) {
          setSizeBytes(other.getSizeBytes());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private com.google.protobuf.LazyStringArrayList names_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureNamesIsMutable() {
        if (!names_.isModifiable()) {
          names_ = new com.google.protobuf.LazyStringArrayList(names_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * Names by which this image is known.
       * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string names = 1;</code>
       * @return A list containing the names.
       */
      public com.google.protobuf.ProtocolStringList
          getNamesList() {
        names_.makeImmutable();
        return names_;
      }
      /**
       * <pre>
       * Names by which this image is known.
       * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string names = 1;</code>
       * @return The count of names.
       */
      public int getNamesCount() {
        return names_.size();
      }
      /**
       * <pre>
       * Names by which this image is known.
       * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string names = 1;</code>
       * @param index The index of the element to return.
       * @return The names at the given index.
       */
      public java.lang.String getNames(int index) {
        return names_.get(index);
      }
      /**
       * <pre>
       * Names by which this image is known.
       * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string names = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the names at the given index.
       */
      public com.google.protobuf.ByteString
          getNamesBytes(int index) {
        return names_.getByteString(index);
      }
      /**
       * <pre>
       * Names by which this image is known.
       * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string names = 1;</code>
       * @param index The index to set the value at.
       * @param value The names to set.
       * @return This builder for chaining.
       */
      public Builder setNames(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNamesIsMutable();
        names_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names by which this image is known.
       * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string names = 1;</code>
       * @param value The names to add.
       * @return This builder for chaining.
       */
      public Builder addNames(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNamesIsMutable();
        names_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names by which this image is known.
       * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string names = 1;</code>
       * @param values The names to add.
       * @return This builder for chaining.
       */
      public Builder addAllNames(
          java.lang.Iterable<java.lang.String> values) {
        ensureNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, names_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names by which this image is known.
       * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string names = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearNames() {
        names_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names by which this image is known.
       * e.g. ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string names = 1;</code>
       * @param value The bytes of the names to add.
       * @return This builder for chaining.
       */
      public Builder addNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNamesIsMutable();
        names_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private long sizeBytes_ ;
      /**
       * <pre>
       * The size of the image in bytes.
       * +optional
       * </pre>
       *
       * <code>optional int64 sizeBytes = 2;</code>
       * @return Whether the sizeBytes field is set.
       */
      @java.lang.Override
      public boolean hasSizeBytes() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The size of the image in bytes.
       * +optional
       * </pre>
       *
       * <code>optional int64 sizeBytes = 2;</code>
       * @return The sizeBytes.
       */
      @java.lang.Override
      public long getSizeBytes() {
        return sizeBytes_;
      }
      /**
       * <pre>
       * The size of the image in bytes.
       * +optional
       * </pre>
       *
       * <code>optional int64 sizeBytes = 2;</code>
       * @param value The sizeBytes to set.
       * @return This builder for chaining.
       */
      public Builder setSizeBytes(long value) {

        sizeBytes_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The size of the image in bytes.
       * +optional
       * </pre>
       *
       * <code>optional int64 sizeBytes = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSizeBytes() {
        bitField0_ = (bitField0_ & ~0x00000002);
        sizeBytes_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ContainerImage)
    }

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

    public static io.kubernetes.client.proto.V1.ContainerImage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ContainerPortOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ContainerPort)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
     * named port in a pod must have a unique name. Name for the port that can be
     * referred to by services.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
     * named port in a pod must have a unique name. Name for the port that can be
     * referred to by services.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
     * named port in a pod must have a unique name. Name for the port that can be
     * referred to by services.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Number of port to expose on the host.
     * If specified, this must be a valid port number, 0 &lt; x &lt; 65536.
     * If HostNetwork is specified, this must match ContainerPort.
     * Most containers do not need this.
     * +optional
     * </pre>
     *
     * <code>optional int32 hostPort = 2;</code>
     * @return Whether the hostPort field is set.
     */
    boolean hasHostPort();
    /**
     * <pre>
     * Number of port to expose on the host.
     * If specified, this must be a valid port number, 0 &lt; x &lt; 65536.
     * If HostNetwork is specified, this must match ContainerPort.
     * Most containers do not need this.
     * +optional
     * </pre>
     *
     * <code>optional int32 hostPort = 2;</code>
     * @return The hostPort.
     */
    int getHostPort();

    /**
     * <pre>
     * Number of port to expose on the pod's IP address.
     * This must be a valid port number, 0 &lt; x &lt; 65536.
     * </pre>
     *
     * <code>optional int32 containerPort = 3;</code>
     * @return Whether the containerPort field is set.
     */
    boolean hasContainerPort();
    /**
     * <pre>
     * Number of port to expose on the pod's IP address.
     * This must be a valid port number, 0 &lt; x &lt; 65536.
     * </pre>
     *
     * <code>optional int32 containerPort = 3;</code>
     * @return The containerPort.
     */
    int getContainerPort();

    /**
     * <pre>
     * Protocol for port. Must be UDP, TCP, or SCTP.
     * Defaults to "TCP".
     * +optional
     * +default="TCP"
     * </pre>
     *
     * <code>optional string protocol = 4;</code>
     * @return Whether the protocol field is set.
     */
    boolean hasProtocol();
    /**
     * <pre>
     * Protocol for port. Must be UDP, TCP, or SCTP.
     * Defaults to "TCP".
     * +optional
     * +default="TCP"
     * </pre>
     *
     * <code>optional string protocol = 4;</code>
     * @return The protocol.
     */
    java.lang.String getProtocol();
    /**
     * <pre>
     * Protocol for port. Must be UDP, TCP, or SCTP.
     * Defaults to "TCP".
     * +optional
     * +default="TCP"
     * </pre>
     *
     * <code>optional string protocol = 4;</code>
     * @return The bytes for protocol.
     */
    com.google.protobuf.ByteString
        getProtocolBytes();

    /**
     * <pre>
     * What host IP to bind the external port to.
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return Whether the hostIP field is set.
     */
    boolean hasHostIP();
    /**
     * <pre>
     * What host IP to bind the external port to.
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return The hostIP.
     */
    java.lang.String getHostIP();
    /**
     * <pre>
     * What host IP to bind the external port to.
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return The bytes for hostIP.
     */
    com.google.protobuf.ByteString
        getHostIPBytes();
  }
  /**
   * <pre>
   * ContainerPort represents a network port in a single container.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ContainerPort}
   */
  public static final class ContainerPort extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ContainerPort)
      ContainerPortOrBuilder {
  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= */ "",
        ContainerPort.class.getName());
    }
    // Use ContainerPort.newBuilder() to construct.
    private ContainerPort(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ContainerPort() {
      name_ = "";
      protocol_ = "";
      hostIP_ = "";
    }

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

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
     * named port in a pod must have a unique name. Name for the port that can be
     * referred to by services.
     * +optional
     * </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>
     * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
     * named port in a pod must have a unique name. Name for the port that can be
     * referred to by services.
     * +optional
     * </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>
     * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
     * named port in a pod must have a unique name. Name for the port that can be
     * referred to by services.
     * +optional
     * </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 HOSTPORT_FIELD_NUMBER = 2;
    private int hostPort_ = 0;
    /**
     * <pre>
     * Number of port to expose on the host.
     * If specified, this must be a valid port number, 0 &lt; x &lt; 65536.
     * If HostNetwork is specified, this must match ContainerPort.
     * Most containers do not need this.
     * +optional
     * </pre>
     *
     * <code>optional int32 hostPort = 2;</code>
     * @return Whether the hostPort field is set.
     */
    @java.lang.Override
    public boolean hasHostPort() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Number of port to expose on the host.
     * If specified, this must be a valid port number, 0 &lt; x &lt; 65536.
     * If HostNetwork is specified, this must match ContainerPort.
     * Most containers do not need this.
     * +optional
     * </pre>
     *
     * <code>optional int32 hostPort = 2;</code>
     * @return The hostPort.
     */
    @java.lang.Override
    public int getHostPort() {
      return hostPort_;
    }

    public static final int CONTAINERPORT_FIELD_NUMBER = 3;
    private int containerPort_ = 0;
    /**
     * <pre>
     * Number of port to expose on the pod's IP address.
     * This must be a valid port number, 0 &lt; x &lt; 65536.
     * </pre>
     *
     * <code>optional int32 containerPort = 3;</code>
     * @return Whether the containerPort field is set.
     */
    @java.lang.Override
    public boolean hasContainerPort() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Number of port to expose on the pod's IP address.
     * This must be a valid port number, 0 &lt; x &lt; 65536.
     * </pre>
     *
     * <code>optional int32 containerPort = 3;</code>
     * @return The containerPort.
     */
    @java.lang.Override
    public int getContainerPort() {
      return containerPort_;
    }

    public static final int PROTOCOL_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object protocol_ = "";
    /**
     * <pre>
     * Protocol for port. Must be UDP, TCP, or SCTP.
     * Defaults to "TCP".
     * +optional
     * +default="TCP"
     * </pre>
     *
     * <code>optional string protocol = 4;</code>
     * @return Whether the protocol field is set.
     */
    @java.lang.Override
    public boolean hasProtocol() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Protocol for port. Must be UDP, TCP, or SCTP.
     * Defaults to "TCP".
     * +optional
     * +default="TCP"
     * </pre>
     *
     * <code>optional string protocol = 4;</code>
     * @return The protocol.
     */
    @java.lang.Override
    public java.lang.String getProtocol() {
      java.lang.Object ref = protocol_;
      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()) {
          protocol_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Protocol for port. Must be UDP, TCP, or SCTP.
     * Defaults to "TCP".
     * +optional
     * +default="TCP"
     * </pre>
     *
     * <code>optional string protocol = 4;</code>
     * @return The bytes for protocol.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getProtocolBytes() {
      java.lang.Object ref = protocol_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        protocol_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HOSTIP_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object hostIP_ = "";
    /**
     * <pre>
     * What host IP to bind the external port to.
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return Whether the hostIP field is set.
     */
    @java.lang.Override
    public boolean hasHostIP() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * What host IP to bind the external port to.
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return The hostIP.
     */
    @java.lang.Override
    public java.lang.String getHostIP() {
      java.lang.Object ref = hostIP_;
      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()) {
          hostIP_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * What host IP to bind the external port to.
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return The bytes for hostIP.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHostIPBytes() {
      java.lang.Object ref = hostIP_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hostIP_ = 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)) {
        output.writeInt32(2, hostPort_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, containerPort_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, protocol_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, hostIP_);
      }
      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
          .computeInt32Size(2, hostPort_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, containerPort_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, protocol_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, hostIP_);
      }
      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.V1.ContainerPort)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ContainerPort other = (io.kubernetes.client.proto.V1.ContainerPort) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasHostPort() != other.hasHostPort()) return false;
      if (hasHostPort()) {
        if (getHostPort()
            != other.getHostPort()) return false;
      }
      if (hasContainerPort() != other.hasContainerPort()) return false;
      if (hasContainerPort()) {
        if (getContainerPort()
            != other.getContainerPort()) return false;
      }
      if (hasProtocol() != other.hasProtocol()) return false;
      if (hasProtocol()) {
        if (!getProtocol()
            .equals(other.getProtocol())) return false;
      }
      if (hasHostIP() != other.hasHostIP()) return false;
      if (hasHostIP()) {
        if (!getHostIP()
            .equals(other.getHostIP())) 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 (hasHostPort()) {
        hash = (37 * hash) + HOSTPORT_FIELD_NUMBER;
        hash = (53 * hash) + getHostPort();
      }
      if (hasContainerPort()) {
        hash = (37 * hash) + CONTAINERPORT_FIELD_NUMBER;
        hash = (53 * hash) + getContainerPort();
      }
      if (hasProtocol()) {
        hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
        hash = (53 * hash) + getProtocol().hashCode();
      }
      if (hasHostIP()) {
        hash = (37 * hash) + HOSTIP_FIELD_NUMBER;
        hash = (53 * hash) + getHostIP().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ContainerPort 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.V1.ContainerPort parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ContainerPort 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.V1.ContainerPort 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>
     * ContainerPort represents a network port in a single container.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ContainerPort}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ContainerPort)
        io.kubernetes.client.proto.V1.ContainerPortOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerPort_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ContainerPort.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        hostPort_ = 0;
        containerPort_ = 0;
        protocol_ = "";
        hostIP_ = "";
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ContainerPort 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.hostPort_ = hostPort_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.containerPort_ = containerPort_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.protocol_ = protocol_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.hostIP_ = hostIP_;
          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.V1.ContainerPort) {
          return mergeFrom((io.kubernetes.client.proto.V1.ContainerPort)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ContainerPort other) {
        if (other == io.kubernetes.client.proto.V1.ContainerPort.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasHostPort()) {
          setHostPort(other.getHostPort());
        }
        if (other.hasContainerPort()) {
          setContainerPort(other.getContainerPort());
        }
        if (other.hasProtocol()) {
          protocol_ = other.protocol_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasHostIP()) {
          hostIP_ = other.hostIP_;
          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: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                hostPort_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                containerPort_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                protocol_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                hostIP_ = 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 name_ = "";
      /**
       * <pre>
       * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
       * named port in a pod must have a unique name. Name for the port that can be
       * referred to by services.
       * +optional
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
       * named port in a pod must have a unique name. Name for the port that can be
       * referred to by services.
       * +optional
       * </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>
       * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
       * named port in a pod must have a unique name. Name for the port that can be
       * referred to by services.
       * +optional
       * </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>
       * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
       * named port in a pod must have a unique name. Name for the port that can be
       * referred to by services.
       * +optional
       * </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>
       * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
       * named port in a pod must have a unique name. Name for the port that can be
       * referred to by services.
       * +optional
       * </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>
       * If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
       * named port in a pod must have a unique name. Name for the port that can be
       * referred to by services.
       * +optional
       * </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 int hostPort_ ;
      /**
       * <pre>
       * Number of port to expose on the host.
       * If specified, this must be a valid port number, 0 &lt; x &lt; 65536.
       * If HostNetwork is specified, this must match ContainerPort.
       * Most containers do not need this.
       * +optional
       * </pre>
       *
       * <code>optional int32 hostPort = 2;</code>
       * @return Whether the hostPort field is set.
       */
      @java.lang.Override
      public boolean hasHostPort() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Number of port to expose on the host.
       * If specified, this must be a valid port number, 0 &lt; x &lt; 65536.
       * If HostNetwork is specified, this must match ContainerPort.
       * Most containers do not need this.
       * +optional
       * </pre>
       *
       * <code>optional int32 hostPort = 2;</code>
       * @return The hostPort.
       */
      @java.lang.Override
      public int getHostPort() {
        return hostPort_;
      }
      /**
       * <pre>
       * Number of port to expose on the host.
       * If specified, this must be a valid port number, 0 &lt; x &lt; 65536.
       * If HostNetwork is specified, this must match ContainerPort.
       * Most containers do not need this.
       * +optional
       * </pre>
       *
       * <code>optional int32 hostPort = 2;</code>
       * @param value The hostPort to set.
       * @return This builder for chaining.
       */
      public Builder setHostPort(int value) {

        hostPort_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of port to expose on the host.
       * If specified, this must be a valid port number, 0 &lt; x &lt; 65536.
       * If HostNetwork is specified, this must match ContainerPort.
       * Most containers do not need this.
       * +optional
       * </pre>
       *
       * <code>optional int32 hostPort = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostPort() {
        bitField0_ = (bitField0_ & ~0x00000002);
        hostPort_ = 0;
        onChanged();
        return this;
      }

      private int containerPort_ ;
      /**
       * <pre>
       * Number of port to expose on the pod's IP address.
       * This must be a valid port number, 0 &lt; x &lt; 65536.
       * </pre>
       *
       * <code>optional int32 containerPort = 3;</code>
       * @return Whether the containerPort field is set.
       */
      @java.lang.Override
      public boolean hasContainerPort() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Number of port to expose on the pod's IP address.
       * This must be a valid port number, 0 &lt; x &lt; 65536.
       * </pre>
       *
       * <code>optional int32 containerPort = 3;</code>
       * @return The containerPort.
       */
      @java.lang.Override
      public int getContainerPort() {
        return containerPort_;
      }
      /**
       * <pre>
       * Number of port to expose on the pod's IP address.
       * This must be a valid port number, 0 &lt; x &lt; 65536.
       * </pre>
       *
       * <code>optional int32 containerPort = 3;</code>
       * @param value The containerPort to set.
       * @return This builder for chaining.
       */
      public Builder setContainerPort(int value) {

        containerPort_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of port to expose on the pod's IP address.
       * This must be a valid port number, 0 &lt; x &lt; 65536.
       * </pre>
       *
       * <code>optional int32 containerPort = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearContainerPort() {
        bitField0_ = (bitField0_ & ~0x00000004);
        containerPort_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object protocol_ = "";
      /**
       * <pre>
       * Protocol for port. Must be UDP, TCP, or SCTP.
       * Defaults to "TCP".
       * +optional
       * +default="TCP"
       * </pre>
       *
       * <code>optional string protocol = 4;</code>
       * @return Whether the protocol field is set.
       */
      public boolean hasProtocol() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Protocol for port. Must be UDP, TCP, or SCTP.
       * Defaults to "TCP".
       * +optional
       * +default="TCP"
       * </pre>
       *
       * <code>optional string protocol = 4;</code>
       * @return The protocol.
       */
      public java.lang.String getProtocol() {
        java.lang.Object ref = protocol_;
        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()) {
            protocol_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Protocol for port. Must be UDP, TCP, or SCTP.
       * Defaults to "TCP".
       * +optional
       * +default="TCP"
       * </pre>
       *
       * <code>optional string protocol = 4;</code>
       * @return The bytes for protocol.
       */
      public com.google.protobuf.ByteString
          getProtocolBytes() {
        java.lang.Object ref = protocol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          protocol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Protocol for port. Must be UDP, TCP, or SCTP.
       * Defaults to "TCP".
       * +optional
       * +default="TCP"
       * </pre>
       *
       * <code>optional string protocol = 4;</code>
       * @param value The protocol to set.
       * @return This builder for chaining.
       */
      public Builder setProtocol(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        protocol_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Protocol for port. Must be UDP, TCP, or SCTP.
       * Defaults to "TCP".
       * +optional
       * +default="TCP"
       * </pre>
       *
       * <code>optional string protocol = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearProtocol() {
        protocol_ = getDefaultInstance().getProtocol();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Protocol for port. Must be UDP, TCP, or SCTP.
       * Defaults to "TCP".
       * +optional
       * +default="TCP"
       * </pre>
       *
       * <code>optional string protocol = 4;</code>
       * @param value The bytes for protocol to set.
       * @return This builder for chaining.
       */
      public Builder setProtocolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        protocol_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object hostIP_ = "";
      /**
       * <pre>
       * What host IP to bind the external port to.
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @return Whether the hostIP field is set.
       */
      public boolean hasHostIP() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * What host IP to bind the external port to.
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @return The hostIP.
       */
      public java.lang.String getHostIP() {
        java.lang.Object ref = hostIP_;
        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()) {
            hostIP_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * What host IP to bind the external port to.
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @return The bytes for hostIP.
       */
      public com.google.protobuf.ByteString
          getHostIPBytes() {
        java.lang.Object ref = hostIP_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hostIP_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * What host IP to bind the external port to.
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @param value The hostIP to set.
       * @return This builder for chaining.
       */
      public Builder setHostIP(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        hostIP_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * What host IP to bind the external port to.
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostIP() {
        hostIP_ = getDefaultInstance().getHostIP();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * What host IP to bind the external port to.
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @param value The bytes for hostIP to set.
       * @return This builder for chaining.
       */
      public Builder setHostIPBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        hostIP_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ContainerPort)
    }

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

    public static io.kubernetes.client.proto.V1.ContainerPort getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ContainerResizePolicyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ContainerResizePolicy)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of the resource to which this resource resize policy applies.
     * Supported values: cpu, memory.
     * </pre>
     *
     * <code>optional string resourceName = 1;</code>
     * @return Whether the resourceName field is set.
     */
    boolean hasResourceName();
    /**
     * <pre>
     * Name of the resource to which this resource resize policy applies.
     * Supported values: cpu, memory.
     * </pre>
     *
     * <code>optional string resourceName = 1;</code>
     * @return The resourceName.
     */
    java.lang.String getResourceName();
    /**
     * <pre>
     * Name of the resource to which this resource resize policy applies.
     * Supported values: cpu, memory.
     * </pre>
     *
     * <code>optional string resourceName = 1;</code>
     * @return The bytes for resourceName.
     */
    com.google.protobuf.ByteString
        getResourceNameBytes();

    /**
     * <pre>
     * Restart policy to apply when specified resource is resized.
     * If not specified, it defaults to NotRequired.
     * </pre>
     *
     * <code>optional string restartPolicy = 2;</code>
     * @return Whether the restartPolicy field is set.
     */
    boolean hasRestartPolicy();
    /**
     * <pre>
     * Restart policy to apply when specified resource is resized.
     * If not specified, it defaults to NotRequired.
     * </pre>
     *
     * <code>optional string restartPolicy = 2;</code>
     * @return The restartPolicy.
     */
    java.lang.String getRestartPolicy();
    /**
     * <pre>
     * Restart policy to apply when specified resource is resized.
     * If not specified, it defaults to NotRequired.
     * </pre>
     *
     * <code>optional string restartPolicy = 2;</code>
     * @return The bytes for restartPolicy.
     */
    com.google.protobuf.ByteString
        getRestartPolicyBytes();
  }
  /**
   * <pre>
   * ContainerResizePolicy represents resource resize policy for the container.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ContainerResizePolicy}
   */
  public static final class ContainerResizePolicy extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ContainerResizePolicy)
      ContainerResizePolicyOrBuilder {
  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= */ "",
        ContainerResizePolicy.class.getName());
    }
    // Use ContainerResizePolicy.newBuilder() to construct.
    private ContainerResizePolicy(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ContainerResizePolicy() {
      resourceName_ = "";
      restartPolicy_ = "";
    }

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

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

    private int bitField0_;
    public static final int RESOURCENAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object resourceName_ = "";
    /**
     * <pre>
     * Name of the resource to which this resource resize policy applies.
     * Supported values: cpu, memory.
     * </pre>
     *
     * <code>optional string resourceName = 1;</code>
     * @return Whether the resourceName field is set.
     */
    @java.lang.Override
    public boolean hasResourceName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Name of the resource to which this resource resize policy applies.
     * Supported values: cpu, memory.
     * </pre>
     *
     * <code>optional string resourceName = 1;</code>
     * @return The resourceName.
     */
    @java.lang.Override
    public java.lang.String getResourceName() {
      java.lang.Object ref = resourceName_;
      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()) {
          resourceName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Name of the resource to which this resource resize policy applies.
     * Supported values: cpu, memory.
     * </pre>
     *
     * <code>optional string resourceName = 1;</code>
     * @return The bytes for resourceName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResourceNameBytes() {
      java.lang.Object ref = resourceName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resourceName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESTARTPOLICY_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object restartPolicy_ = "";
    /**
     * <pre>
     * Restart policy to apply when specified resource is resized.
     * If not specified, it defaults to NotRequired.
     * </pre>
     *
     * <code>optional string restartPolicy = 2;</code>
     * @return Whether the restartPolicy field is set.
     */
    @java.lang.Override
    public boolean hasRestartPolicy() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Restart policy to apply when specified resource is resized.
     * If not specified, it defaults to NotRequired.
     * </pre>
     *
     * <code>optional string restartPolicy = 2;</code>
     * @return The restartPolicy.
     */
    @java.lang.Override
    public java.lang.String getRestartPolicy() {
      java.lang.Object ref = restartPolicy_;
      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()) {
          restartPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Restart policy to apply when specified resource is resized.
     * If not specified, it defaults to NotRequired.
     * </pre>
     *
     * <code>optional string restartPolicy = 2;</code>
     * @return The bytes for restartPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRestartPolicyBytes() {
      java.lang.Object ref = restartPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        restartPolicy_ = 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, resourceName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, restartPolicy_);
      }
      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, resourceName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, restartPolicy_);
      }
      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.V1.ContainerResizePolicy)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ContainerResizePolicy other = (io.kubernetes.client.proto.V1.ContainerResizePolicy) obj;

      if (hasResourceName() != other.hasResourceName()) return false;
      if (hasResourceName()) {
        if (!getResourceName()
            .equals(other.getResourceName())) return false;
      }
      if (hasRestartPolicy() != other.hasRestartPolicy()) return false;
      if (hasRestartPolicy()) {
        if (!getRestartPolicy()
            .equals(other.getRestartPolicy())) 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 (hasResourceName()) {
        hash = (37 * hash) + RESOURCENAME_FIELD_NUMBER;
        hash = (53 * hash) + getResourceName().hashCode();
      }
      if (hasRestartPolicy()) {
        hash = (37 * hash) + RESTARTPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getRestartPolicy().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ContainerResizePolicy 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.V1.ContainerResizePolicy parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ContainerResizePolicy 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.V1.ContainerResizePolicy 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>
     * ContainerResizePolicy represents resource resize policy for the container.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ContainerResizePolicy}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ContainerResizePolicy)
        io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerResizePolicy_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ContainerResizePolicy.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ContainerResizePolicy result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.resourceName_ = resourceName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.restartPolicy_ = restartPolicy_;
          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.V1.ContainerResizePolicy) {
          return mergeFrom((io.kubernetes.client.proto.V1.ContainerResizePolicy)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ContainerResizePolicy other) {
        if (other == io.kubernetes.client.proto.V1.ContainerResizePolicy.getDefaultInstance()) return this;
        if (other.hasResourceName()) {
          resourceName_ = other.resourceName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasRestartPolicy()) {
          restartPolicy_ = other.restartPolicy_;
          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: {
                resourceName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                restartPolicy_ = 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 resourceName_ = "";
      /**
       * <pre>
       * Name of the resource to which this resource resize policy applies.
       * Supported values: cpu, memory.
       * </pre>
       *
       * <code>optional string resourceName = 1;</code>
       * @return Whether the resourceName field is set.
       */
      public boolean hasResourceName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name of the resource to which this resource resize policy applies.
       * Supported values: cpu, memory.
       * </pre>
       *
       * <code>optional string resourceName = 1;</code>
       * @return The resourceName.
       */
      public java.lang.String getResourceName() {
        java.lang.Object ref = resourceName_;
        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()) {
            resourceName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the resource to which this resource resize policy applies.
       * Supported values: cpu, memory.
       * </pre>
       *
       * <code>optional string resourceName = 1;</code>
       * @return The bytes for resourceName.
       */
      public com.google.protobuf.ByteString
          getResourceNameBytes() {
        java.lang.Object ref = resourceName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resourceName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the resource to which this resource resize policy applies.
       * Supported values: cpu, memory.
       * </pre>
       *
       * <code>optional string resourceName = 1;</code>
       * @param value The resourceName to set.
       * @return This builder for chaining.
       */
      public Builder setResourceName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        resourceName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the resource to which this resource resize policy applies.
       * Supported values: cpu, memory.
       * </pre>
       *
       * <code>optional string resourceName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearResourceName() {
        resourceName_ = getDefaultInstance().getResourceName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the resource to which this resource resize policy applies.
       * Supported values: cpu, memory.
       * </pre>
       *
       * <code>optional string resourceName = 1;</code>
       * @param value The bytes for resourceName to set.
       * @return This builder for chaining.
       */
      public Builder setResourceNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        resourceName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object restartPolicy_ = "";
      /**
       * <pre>
       * Restart policy to apply when specified resource is resized.
       * If not specified, it defaults to NotRequired.
       * </pre>
       *
       * <code>optional string restartPolicy = 2;</code>
       * @return Whether the restartPolicy field is set.
       */
      public boolean hasRestartPolicy() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Restart policy to apply when specified resource is resized.
       * If not specified, it defaults to NotRequired.
       * </pre>
       *
       * <code>optional string restartPolicy = 2;</code>
       * @return The restartPolicy.
       */
      public java.lang.String getRestartPolicy() {
        java.lang.Object ref = restartPolicy_;
        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()) {
            restartPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Restart policy to apply when specified resource is resized.
       * If not specified, it defaults to NotRequired.
       * </pre>
       *
       * <code>optional string restartPolicy = 2;</code>
       * @return The bytes for restartPolicy.
       */
      public com.google.protobuf.ByteString
          getRestartPolicyBytes() {
        java.lang.Object ref = restartPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          restartPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Restart policy to apply when specified resource is resized.
       * If not specified, it defaults to NotRequired.
       * </pre>
       *
       * <code>optional string restartPolicy = 2;</code>
       * @param value The restartPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setRestartPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        restartPolicy_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Restart policy to apply when specified resource is resized.
       * If not specified, it defaults to NotRequired.
       * </pre>
       *
       * <code>optional string restartPolicy = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRestartPolicy() {
        restartPolicy_ = getDefaultInstance().getRestartPolicy();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Restart policy to apply when specified resource is resized.
       * If not specified, it defaults to NotRequired.
       * </pre>
       *
       * <code>optional string restartPolicy = 2;</code>
       * @param value The bytes for restartPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setRestartPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        restartPolicy_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ContainerResizePolicy)
    }

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

    public static io.kubernetes.client.proto.V1.ContainerResizePolicy getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ContainerStateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ContainerState)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Details about a waiting container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
     * @return Whether the waiting field is set.
     */
    boolean hasWaiting();
    /**
     * <pre>
     * Details about a waiting container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
     * @return The waiting.
     */
    io.kubernetes.client.proto.V1.ContainerStateWaiting getWaiting();
    /**
     * <pre>
     * Details about a waiting container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStateWaitingOrBuilder getWaitingOrBuilder();

    /**
     * <pre>
     * Details about a running container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
     * @return Whether the running field is set.
     */
    boolean hasRunning();
    /**
     * <pre>
     * Details about a running container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
     * @return The running.
     */
    io.kubernetes.client.proto.V1.ContainerStateRunning getRunning();
    /**
     * <pre>
     * Details about a running container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStateRunningOrBuilder getRunningOrBuilder();

    /**
     * <pre>
     * Details about a terminated container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
     * @return Whether the terminated field is set.
     */
    boolean hasTerminated();
    /**
     * <pre>
     * Details about a terminated container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
     * @return The terminated.
     */
    io.kubernetes.client.proto.V1.ContainerStateTerminated getTerminated();
    /**
     * <pre>
     * Details about a terminated container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStateTerminatedOrBuilder getTerminatedOrBuilder();
  }
  /**
   * <pre>
   * ContainerState holds a possible state of container.
   * Only one of its members may be specified.
   * If none of them is specified, the default one is ContainerStateWaiting.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ContainerState}
   */
  public static final class ContainerState extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ContainerState)
      ContainerStateOrBuilder {
  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= */ "",
        ContainerState.class.getName());
    }
    // Use ContainerState.newBuilder() to construct.
    private ContainerState(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ContainerState() {
    }

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

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

    private int bitField0_;
    public static final int WAITING_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.ContainerStateWaiting waiting_;
    /**
     * <pre>
     * Details about a waiting container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
     * @return Whether the waiting field is set.
     */
    @java.lang.Override
    public boolean hasWaiting() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Details about a waiting container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
     * @return The waiting.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStateWaiting getWaiting() {
      return waiting_ == null ? io.kubernetes.client.proto.V1.ContainerStateWaiting.getDefaultInstance() : waiting_;
    }
    /**
     * <pre>
     * Details about a waiting container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStateWaitingOrBuilder getWaitingOrBuilder() {
      return waiting_ == null ? io.kubernetes.client.proto.V1.ContainerStateWaiting.getDefaultInstance() : waiting_;
    }

    public static final int RUNNING_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.ContainerStateRunning running_;
    /**
     * <pre>
     * Details about a running container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
     * @return Whether the running field is set.
     */
    @java.lang.Override
    public boolean hasRunning() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Details about a running container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
     * @return The running.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStateRunning getRunning() {
      return running_ == null ? io.kubernetes.client.proto.V1.ContainerStateRunning.getDefaultInstance() : running_;
    }
    /**
     * <pre>
     * Details about a running container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStateRunningOrBuilder getRunningOrBuilder() {
      return running_ == null ? io.kubernetes.client.proto.V1.ContainerStateRunning.getDefaultInstance() : running_;
    }

    public static final int TERMINATED_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.ContainerStateTerminated terminated_;
    /**
     * <pre>
     * Details about a terminated container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
     * @return Whether the terminated field is set.
     */
    @java.lang.Override
    public boolean hasTerminated() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Details about a terminated container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
     * @return The terminated.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStateTerminated getTerminated() {
      return terminated_ == null ? io.kubernetes.client.proto.V1.ContainerStateTerminated.getDefaultInstance() : terminated_;
    }
    /**
     * <pre>
     * Details about a terminated container
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStateTerminatedOrBuilder getTerminatedOrBuilder() {
      return terminated_ == null ? io.kubernetes.client.proto.V1.ContainerStateTerminated.getDefaultInstance() : terminated_;
    }

    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, getWaiting());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getRunning());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getTerminated());
      }
      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, getWaiting());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getRunning());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getTerminated());
      }
      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.V1.ContainerState)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ContainerState other = (io.kubernetes.client.proto.V1.ContainerState) obj;

      if (hasWaiting() != other.hasWaiting()) return false;
      if (hasWaiting()) {
        if (!getWaiting()
            .equals(other.getWaiting())) return false;
      }
      if (hasRunning() != other.hasRunning()) return false;
      if (hasRunning()) {
        if (!getRunning()
            .equals(other.getRunning())) return false;
      }
      if (hasTerminated() != other.hasTerminated()) return false;
      if (hasTerminated()) {
        if (!getTerminated()
            .equals(other.getTerminated())) 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 (hasWaiting()) {
        hash = (37 * hash) + WAITING_FIELD_NUMBER;
        hash = (53 * hash) + getWaiting().hashCode();
      }
      if (hasRunning()) {
        hash = (37 * hash) + RUNNING_FIELD_NUMBER;
        hash = (53 * hash) + getRunning().hashCode();
      }
      if (hasTerminated()) {
        hash = (37 * hash) + TERMINATED_FIELD_NUMBER;
        hash = (53 * hash) + getTerminated().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ContainerState 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.V1.ContainerState parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ContainerState 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.V1.ContainerState 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>
     * ContainerState holds a possible state of container.
     * Only one of its members may be specified.
     * If none of them is specified, the default one is ContainerStateWaiting.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ContainerState}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ContainerState)
        io.kubernetes.client.proto.V1.ContainerStateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerState_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getWaitingFieldBuilder();
          getRunningFieldBuilder();
          getTerminatedFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        waiting_ = null;
        if (waitingBuilder_ != null) {
          waitingBuilder_.dispose();
          waitingBuilder_ = null;
        }
        running_ = null;
        if (runningBuilder_ != null) {
          runningBuilder_.dispose();
          runningBuilder_ = null;
        }
        terminated_ = null;
        if (terminatedBuilder_ != null) {
          terminatedBuilder_.dispose();
          terminatedBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ContainerState result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.waiting_ = waitingBuilder_ == null
              ? waiting_
              : waitingBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.running_ = runningBuilder_ == null
              ? running_
              : runningBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.terminated_ = terminatedBuilder_ == null
              ? terminated_
              : terminatedBuilder_.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.V1.ContainerState) {
          return mergeFrom((io.kubernetes.client.proto.V1.ContainerState)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ContainerState other) {
        if (other == io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance()) return this;
        if (other.hasWaiting()) {
          mergeWaiting(other.getWaiting());
        }
        if (other.hasRunning()) {
          mergeRunning(other.getRunning());
        }
        if (other.hasTerminated()) {
          mergeTerminated(other.getTerminated());
        }
        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(
                    getWaitingFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getRunningFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getTerminatedFieldBuilder().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.V1.ContainerStateWaiting waiting_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStateWaiting, io.kubernetes.client.proto.V1.ContainerStateWaiting.Builder, io.kubernetes.client.proto.V1.ContainerStateWaitingOrBuilder> waitingBuilder_;
      /**
       * <pre>
       * Details about a waiting container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
       * @return Whether the waiting field is set.
       */
      public boolean hasWaiting() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Details about a waiting container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
       * @return The waiting.
       */
      public io.kubernetes.client.proto.V1.ContainerStateWaiting getWaiting() {
        if (waitingBuilder_ == null) {
          return waiting_ == null ? io.kubernetes.client.proto.V1.ContainerStateWaiting.getDefaultInstance() : waiting_;
        } else {
          return waitingBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Details about a waiting container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
       */
      public Builder setWaiting(io.kubernetes.client.proto.V1.ContainerStateWaiting value) {
        if (waitingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          waiting_ = value;
        } else {
          waitingBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Details about a waiting container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
       */
      public Builder setWaiting(
          io.kubernetes.client.proto.V1.ContainerStateWaiting.Builder builderForValue) {
        if (waitingBuilder_ == null) {
          waiting_ = builderForValue.build();
        } else {
          waitingBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Details about a waiting container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
       */
      public Builder mergeWaiting(io.kubernetes.client.proto.V1.ContainerStateWaiting value) {
        if (waitingBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            waiting_ != null &&
            waiting_ != io.kubernetes.client.proto.V1.ContainerStateWaiting.getDefaultInstance()) {
            getWaitingBuilder().mergeFrom(value);
          } else {
            waiting_ = value;
          }
        } else {
          waitingBuilder_.mergeFrom(value);
        }
        if (waiting_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Details about a waiting container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
       */
      public Builder clearWaiting() {
        bitField0_ = (bitField0_ & ~0x00000001);
        waiting_ = null;
        if (waitingBuilder_ != null) {
          waitingBuilder_.dispose();
          waitingBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Details about a waiting container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStateWaiting.Builder getWaitingBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getWaitingFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Details about a waiting container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStateWaitingOrBuilder getWaitingOrBuilder() {
        if (waitingBuilder_ != null) {
          return waitingBuilder_.getMessageOrBuilder();
        } else {
          return waiting_ == null ?
              io.kubernetes.client.proto.V1.ContainerStateWaiting.getDefaultInstance() : waiting_;
        }
      }
      /**
       * <pre>
       * Details about a waiting container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateWaiting waiting = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStateWaiting, io.kubernetes.client.proto.V1.ContainerStateWaiting.Builder, io.kubernetes.client.proto.V1.ContainerStateWaitingOrBuilder> 
          getWaitingFieldBuilder() {
        if (waitingBuilder_ == null) {
          waitingBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerStateWaiting, io.kubernetes.client.proto.V1.ContainerStateWaiting.Builder, io.kubernetes.client.proto.V1.ContainerStateWaitingOrBuilder>(
                  getWaiting(),
                  getParentForChildren(),
                  isClean());
          waiting_ = null;
        }
        return waitingBuilder_;
      }

      private io.kubernetes.client.proto.V1.ContainerStateRunning running_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStateRunning, io.kubernetes.client.proto.V1.ContainerStateRunning.Builder, io.kubernetes.client.proto.V1.ContainerStateRunningOrBuilder> runningBuilder_;
      /**
       * <pre>
       * Details about a running container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
       * @return Whether the running field is set.
       */
      public boolean hasRunning() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Details about a running container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
       * @return The running.
       */
      public io.kubernetes.client.proto.V1.ContainerStateRunning getRunning() {
        if (runningBuilder_ == null) {
          return running_ == null ? io.kubernetes.client.proto.V1.ContainerStateRunning.getDefaultInstance() : running_;
        } else {
          return runningBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Details about a running container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
       */
      public Builder setRunning(io.kubernetes.client.proto.V1.ContainerStateRunning value) {
        if (runningBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          running_ = value;
        } else {
          runningBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Details about a running container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
       */
      public Builder setRunning(
          io.kubernetes.client.proto.V1.ContainerStateRunning.Builder builderForValue) {
        if (runningBuilder_ == null) {
          running_ = builderForValue.build();
        } else {
          runningBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Details about a running container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
       */
      public Builder mergeRunning(io.kubernetes.client.proto.V1.ContainerStateRunning value) {
        if (runningBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            running_ != null &&
            running_ != io.kubernetes.client.proto.V1.ContainerStateRunning.getDefaultInstance()) {
            getRunningBuilder().mergeFrom(value);
          } else {
            running_ = value;
          }
        } else {
          runningBuilder_.mergeFrom(value);
        }
        if (running_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Details about a running container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
       */
      public Builder clearRunning() {
        bitField0_ = (bitField0_ & ~0x00000002);
        running_ = null;
        if (runningBuilder_ != null) {
          runningBuilder_.dispose();
          runningBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Details about a running container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStateRunning.Builder getRunningBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getRunningFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Details about a running container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStateRunningOrBuilder getRunningOrBuilder() {
        if (runningBuilder_ != null) {
          return runningBuilder_.getMessageOrBuilder();
        } else {
          return running_ == null ?
              io.kubernetes.client.proto.V1.ContainerStateRunning.getDefaultInstance() : running_;
        }
      }
      /**
       * <pre>
       * Details about a running container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateRunning running = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStateRunning, io.kubernetes.client.proto.V1.ContainerStateRunning.Builder, io.kubernetes.client.proto.V1.ContainerStateRunningOrBuilder> 
          getRunningFieldBuilder() {
        if (runningBuilder_ == null) {
          runningBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerStateRunning, io.kubernetes.client.proto.V1.ContainerStateRunning.Builder, io.kubernetes.client.proto.V1.ContainerStateRunningOrBuilder>(
                  getRunning(),
                  getParentForChildren(),
                  isClean());
          running_ = null;
        }
        return runningBuilder_;
      }

      private io.kubernetes.client.proto.V1.ContainerStateTerminated terminated_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStateTerminated, io.kubernetes.client.proto.V1.ContainerStateTerminated.Builder, io.kubernetes.client.proto.V1.ContainerStateTerminatedOrBuilder> terminatedBuilder_;
      /**
       * <pre>
       * Details about a terminated container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
       * @return Whether the terminated field is set.
       */
      public boolean hasTerminated() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Details about a terminated container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
       * @return The terminated.
       */
      public io.kubernetes.client.proto.V1.ContainerStateTerminated getTerminated() {
        if (terminatedBuilder_ == null) {
          return terminated_ == null ? io.kubernetes.client.proto.V1.ContainerStateTerminated.getDefaultInstance() : terminated_;
        } else {
          return terminatedBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Details about a terminated container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
       */
      public Builder setTerminated(io.kubernetes.client.proto.V1.ContainerStateTerminated value) {
        if (terminatedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          terminated_ = value;
        } else {
          terminatedBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Details about a terminated container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
       */
      public Builder setTerminated(
          io.kubernetes.client.proto.V1.ContainerStateTerminated.Builder builderForValue) {
        if (terminatedBuilder_ == null) {
          terminated_ = builderForValue.build();
        } else {
          terminatedBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Details about a terminated container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
       */
      public Builder mergeTerminated(io.kubernetes.client.proto.V1.ContainerStateTerminated value) {
        if (terminatedBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            terminated_ != null &&
            terminated_ != io.kubernetes.client.proto.V1.ContainerStateTerminated.getDefaultInstance()) {
            getTerminatedBuilder().mergeFrom(value);
          } else {
            terminated_ = value;
          }
        } else {
          terminatedBuilder_.mergeFrom(value);
        }
        if (terminated_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Details about a terminated container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
       */
      public Builder clearTerminated() {
        bitField0_ = (bitField0_ & ~0x00000004);
        terminated_ = null;
        if (terminatedBuilder_ != null) {
          terminatedBuilder_.dispose();
          terminatedBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Details about a terminated container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStateTerminated.Builder getTerminatedBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getTerminatedFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Details about a terminated container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStateTerminatedOrBuilder getTerminatedOrBuilder() {
        if (terminatedBuilder_ != null) {
          return terminatedBuilder_.getMessageOrBuilder();
        } else {
          return terminated_ == null ?
              io.kubernetes.client.proto.V1.ContainerStateTerminated.getDefaultInstance() : terminated_;
        }
      }
      /**
       * <pre>
       * Details about a terminated container
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerStateTerminated terminated = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStateTerminated, io.kubernetes.client.proto.V1.ContainerStateTerminated.Builder, io.kubernetes.client.proto.V1.ContainerStateTerminatedOrBuilder> 
          getTerminatedFieldBuilder() {
        if (terminatedBuilder_ == null) {
          terminatedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerStateTerminated, io.kubernetes.client.proto.V1.ContainerStateTerminated.Builder, io.kubernetes.client.proto.V1.ContainerStateTerminatedOrBuilder>(
                  getTerminated(),
                  getParentForChildren(),
                  isClean());
          terminated_ = null;
        }
        return terminatedBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ContainerState)
    }

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

    public static io.kubernetes.client.proto.V1.ContainerState getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ContainerStateRunningOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ContainerStateRunning)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Time at which the container was last (re-)started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
     * @return Whether the startedAt field is set.
     */
    boolean hasStartedAt();
    /**
     * <pre>
     * Time at which the container was last (re-)started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
     * @return The startedAt.
     */
    io.kubernetes.client.proto.Meta.Time getStartedAt();
    /**
     * <pre>
     * Time at which the container was last (re-)started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getStartedAtOrBuilder();
  }
  /**
   * <pre>
   * ContainerStateRunning is a running state of a container.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ContainerStateRunning}
   */
  public static final class ContainerStateRunning extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ContainerStateRunning)
      ContainerStateRunningOrBuilder {
  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= */ "",
        ContainerStateRunning.class.getName());
    }
    // Use ContainerStateRunning.newBuilder() to construct.
    private ContainerStateRunning(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ContainerStateRunning() {
    }

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

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

    private int bitField0_;
    public static final int STARTEDAT_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.Time startedAt_;
    /**
     * <pre>
     * Time at which the container was last (re-)started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
     * @return Whether the startedAt field is set.
     */
    @java.lang.Override
    public boolean hasStartedAt() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Time at which the container was last (re-)started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
     * @return The startedAt.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getStartedAt() {
      return startedAt_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startedAt_;
    }
    /**
     * <pre>
     * Time at which the container was last (re-)started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getStartedAtOrBuilder() {
      return startedAt_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startedAt_;
    }

    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, getStartedAt());
      }
      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, getStartedAt());
      }
      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.V1.ContainerStateRunning)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ContainerStateRunning other = (io.kubernetes.client.proto.V1.ContainerStateRunning) obj;

      if (hasStartedAt() != other.hasStartedAt()) return false;
      if (hasStartedAt()) {
        if (!getStartedAt()
            .equals(other.getStartedAt())) 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 (hasStartedAt()) {
        hash = (37 * hash) + STARTEDAT_FIELD_NUMBER;
        hash = (53 * hash) + getStartedAt().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ContainerStateRunning 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.V1.ContainerStateRunning parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ContainerStateRunning 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.V1.ContainerStateRunning 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>
     * ContainerStateRunning is a running state of a container.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ContainerStateRunning}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ContainerStateRunning)
        io.kubernetes.client.proto.V1.ContainerStateRunningOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerStateRunning_descriptor;
      }

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

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ContainerStateRunning result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.startedAt_ = startedAtBuilder_ == null
              ? startedAt_
              : startedAtBuilder_.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.V1.ContainerStateRunning) {
          return mergeFrom((io.kubernetes.client.proto.V1.ContainerStateRunning)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ContainerStateRunning other) {
        if (other == io.kubernetes.client.proto.V1.ContainerStateRunning.getDefaultInstance()) return this;
        if (other.hasStartedAt()) {
          mergeStartedAt(other.getStartedAt());
        }
        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(
                    getStartedAtFieldBuilder().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.Meta.Time startedAt_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> startedAtBuilder_;
      /**
       * <pre>
       * Time at which the container was last (re-)started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
       * @return Whether the startedAt field is set.
       */
      public boolean hasStartedAt() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Time at which the container was last (re-)started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
       * @return The startedAt.
       */
      public io.kubernetes.client.proto.Meta.Time getStartedAt() {
        if (startedAtBuilder_ == null) {
          return startedAt_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startedAt_;
        } else {
          return startedAtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Time at which the container was last (re-)started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
       */
      public Builder setStartedAt(io.kubernetes.client.proto.Meta.Time value) {
        if (startedAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          startedAt_ = value;
        } else {
          startedAtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which the container was last (re-)started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
       */
      public Builder setStartedAt(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (startedAtBuilder_ == null) {
          startedAt_ = builderForValue.build();
        } else {
          startedAtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which the container was last (re-)started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
       */
      public Builder mergeStartedAt(io.kubernetes.client.proto.Meta.Time value) {
        if (startedAtBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            startedAt_ != null &&
            startedAt_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getStartedAtBuilder().mergeFrom(value);
          } else {
            startedAt_ = value;
          }
        } else {
          startedAtBuilder_.mergeFrom(value);
        }
        if (startedAt_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Time at which the container was last (re-)started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
       */
      public Builder clearStartedAt() {
        bitField0_ = (bitField0_ & ~0x00000001);
        startedAt_ = null;
        if (startedAtBuilder_ != null) {
          startedAtBuilder_.dispose();
          startedAtBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which the container was last (re-)started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getStartedAtBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getStartedAtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Time at which the container was last (re-)started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getStartedAtOrBuilder() {
        if (startedAtBuilder_ != null) {
          return startedAtBuilder_.getMessageOrBuilder();
        } else {
          return startedAt_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startedAt_;
        }
      }
      /**
       * <pre>
       * Time at which the container was last (re-)started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;</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> 
          getStartedAtFieldBuilder() {
        if (startedAtBuilder_ == null) {
          startedAtBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getStartedAt(),
                  getParentForChildren(),
                  isClean());
          startedAt_ = null;
        }
        return startedAtBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ContainerStateRunning)
    }

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

    public static io.kubernetes.client.proto.V1.ContainerStateRunning getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ContainerStateTerminatedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ContainerStateTerminated)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Exit status from the last termination of the container
     * </pre>
     *
     * <code>optional int32 exitCode = 1;</code>
     * @return Whether the exitCode field is set.
     */
    boolean hasExitCode();
    /**
     * <pre>
     * Exit status from the last termination of the container
     * </pre>
     *
     * <code>optional int32 exitCode = 1;</code>
     * @return The exitCode.
     */
    int getExitCode();

    /**
     * <pre>
     * Signal from the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional int32 signal = 2;</code>
     * @return Whether the signal field is set.
     */
    boolean hasSignal();
    /**
     * <pre>
     * Signal from the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional int32 signal = 2;</code>
     * @return The signal.
     */
    int getSignal();

    /**
     * <pre>
     * (brief) reason from the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * (brief) reason from the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * (brief) reason from the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * Message regarding the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * Message regarding the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * Message regarding the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    /**
     * <pre>
     * Time at which previous execution of the container started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
     * @return Whether the startedAt field is set.
     */
    boolean hasStartedAt();
    /**
     * <pre>
     * Time at which previous execution of the container started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
     * @return The startedAt.
     */
    io.kubernetes.client.proto.Meta.Time getStartedAt();
    /**
     * <pre>
     * Time at which previous execution of the container started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getStartedAtOrBuilder();

    /**
     * <pre>
     * Time at which the container last terminated
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
     * @return Whether the finishedAt field is set.
     */
    boolean hasFinishedAt();
    /**
     * <pre>
     * Time at which the container last terminated
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
     * @return The finishedAt.
     */
    io.kubernetes.client.proto.Meta.Time getFinishedAt();
    /**
     * <pre>
     * Time at which the container last terminated
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getFinishedAtOrBuilder();

    /**
     * <pre>
     * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 7;</code>
     * @return Whether the containerID field is set.
     */
    boolean hasContainerID();
    /**
     * <pre>
     * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 7;</code>
     * @return The containerID.
     */
    java.lang.String getContainerID();
    /**
     * <pre>
     * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 7;</code>
     * @return The bytes for containerID.
     */
    com.google.protobuf.ByteString
        getContainerIDBytes();
  }
  /**
   * <pre>
   * ContainerStateTerminated is a terminated state of a container.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ContainerStateTerminated}
   */
  public static final class ContainerStateTerminated extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ContainerStateTerminated)
      ContainerStateTerminatedOrBuilder {
  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= */ "",
        ContainerStateTerminated.class.getName());
    }
    // Use ContainerStateTerminated.newBuilder() to construct.
    private ContainerStateTerminated(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ContainerStateTerminated() {
      reason_ = "";
      message_ = "";
      containerID_ = "";
    }

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

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

    private int bitField0_;
    public static final int EXITCODE_FIELD_NUMBER = 1;
    private int exitCode_ = 0;
    /**
     * <pre>
     * Exit status from the last termination of the container
     * </pre>
     *
     * <code>optional int32 exitCode = 1;</code>
     * @return Whether the exitCode field is set.
     */
    @java.lang.Override
    public boolean hasExitCode() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Exit status from the last termination of the container
     * </pre>
     *
     * <code>optional int32 exitCode = 1;</code>
     * @return The exitCode.
     */
    @java.lang.Override
    public int getExitCode() {
      return exitCode_;
    }

    public static final int SIGNAL_FIELD_NUMBER = 2;
    private int signal_ = 0;
    /**
     * <pre>
     * Signal from the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional int32 signal = 2;</code>
     * @return Whether the signal field is set.
     */
    @java.lang.Override
    public boolean hasSignal() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Signal from the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional int32 signal = 2;</code>
     * @return The signal.
     */
    @java.lang.Override
    public int getSignal() {
      return signal_;
    }

    public static final int REASON_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * (brief) reason from the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * (brief) reason from the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</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>
     * (brief) reason from the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</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 = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * Message regarding the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Message regarding the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</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 regarding the last termination of the container
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</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 STARTEDAT_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.Meta.Time startedAt_;
    /**
     * <pre>
     * Time at which previous execution of the container started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
     * @return Whether the startedAt field is set.
     */
    @java.lang.Override
    public boolean hasStartedAt() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * Time at which previous execution of the container started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
     * @return The startedAt.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getStartedAt() {
      return startedAt_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startedAt_;
    }
    /**
     * <pre>
     * Time at which previous execution of the container started
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getStartedAtOrBuilder() {
      return startedAt_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startedAt_;
    }

    public static final int FINISHEDAT_FIELD_NUMBER = 6;
    private io.kubernetes.client.proto.Meta.Time finishedAt_;
    /**
     * <pre>
     * Time at which the container last terminated
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
     * @return Whether the finishedAt field is set.
     */
    @java.lang.Override
    public boolean hasFinishedAt() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Time at which the container last terminated
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
     * @return The finishedAt.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getFinishedAt() {
      return finishedAt_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : finishedAt_;
    }
    /**
     * <pre>
     * Time at which the container last terminated
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getFinishedAtOrBuilder() {
      return finishedAt_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : finishedAt_;
    }

    public static final int CONTAINERID_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object containerID_ = "";
    /**
     * <pre>
     * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 7;</code>
     * @return Whether the containerID field is set.
     */
    @java.lang.Override
    public boolean hasContainerID() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 7;</code>
     * @return The containerID.
     */
    @java.lang.Override
    public java.lang.String getContainerID() {
      java.lang.Object ref = containerID_;
      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()) {
          containerID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 7;</code>
     * @return The bytes for containerID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getContainerIDBytes() {
      java.lang.Object ref = containerID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        containerID_ = 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)) {
        output.writeInt32(1, exitCode_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, signal_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, reason_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, message_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getStartedAt());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(6, getFinishedAt());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, containerID_);
      }
      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
          .computeInt32Size(1, exitCode_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, signal_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, reason_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, message_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getStartedAt());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getFinishedAt());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, containerID_);
      }
      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.V1.ContainerStateTerminated)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ContainerStateTerminated other = (io.kubernetes.client.proto.V1.ContainerStateTerminated) obj;

      if (hasExitCode() != other.hasExitCode()) return false;
      if (hasExitCode()) {
        if (getExitCode()
            != other.getExitCode()) return false;
      }
      if (hasSignal() != other.hasSignal()) return false;
      if (hasSignal()) {
        if (getSignal()
            != other.getSignal()) 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 (hasStartedAt() != other.hasStartedAt()) return false;
      if (hasStartedAt()) {
        if (!getStartedAt()
            .equals(other.getStartedAt())) return false;
      }
      if (hasFinishedAt() != other.hasFinishedAt()) return false;
      if (hasFinishedAt()) {
        if (!getFinishedAt()
            .equals(other.getFinishedAt())) return false;
      }
      if (hasContainerID() != other.hasContainerID()) return false;
      if (hasContainerID()) {
        if (!getContainerID()
            .equals(other.getContainerID())) 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 (hasExitCode()) {
        hash = (37 * hash) + EXITCODE_FIELD_NUMBER;
        hash = (53 * hash) + getExitCode();
      }
      if (hasSignal()) {
        hash = (37 * hash) + SIGNAL_FIELD_NUMBER;
        hash = (53 * hash) + getSignal();
      }
      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();
      }
      if (hasStartedAt()) {
        hash = (37 * hash) + STARTEDAT_FIELD_NUMBER;
        hash = (53 * hash) + getStartedAt().hashCode();
      }
      if (hasFinishedAt()) {
        hash = (37 * hash) + FINISHEDAT_FIELD_NUMBER;
        hash = (53 * hash) + getFinishedAt().hashCode();
      }
      if (hasContainerID()) {
        hash = (37 * hash) + CONTAINERID_FIELD_NUMBER;
        hash = (53 * hash) + getContainerID().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ContainerStateTerminated 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.V1.ContainerStateTerminated parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ContainerStateTerminated 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.V1.ContainerStateTerminated 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>
     * ContainerStateTerminated is a terminated state of a container.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ContainerStateTerminated}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ContainerStateTerminated)
        io.kubernetes.client.proto.V1.ContainerStateTerminatedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerStateTerminated_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getStartedAtFieldBuilder();
          getFinishedAtFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        exitCode_ = 0;
        signal_ = 0;
        reason_ = "";
        message_ = "";
        startedAt_ = null;
        if (startedAtBuilder_ != null) {
          startedAtBuilder_.dispose();
          startedAtBuilder_ = null;
        }
        finishedAt_ = null;
        if (finishedAtBuilder_ != null) {
          finishedAtBuilder_.dispose();
          finishedAtBuilder_ = null;
        }
        containerID_ = "";
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ContainerStateTerminated result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.exitCode_ = exitCode_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.signal_ = signal_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.message_ = message_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.startedAt_ = startedAtBuilder_ == null
              ? startedAt_
              : startedAtBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.finishedAt_ = finishedAtBuilder_ == null
              ? finishedAt_
              : finishedAtBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.containerID_ = containerID_;
          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.V1.ContainerStateTerminated) {
          return mergeFrom((io.kubernetes.client.proto.V1.ContainerStateTerminated)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ContainerStateTerminated other) {
        if (other == io.kubernetes.client.proto.V1.ContainerStateTerminated.getDefaultInstance()) return this;
        if (other.hasExitCode()) {
          setExitCode(other.getExitCode());
        }
        if (other.hasSignal()) {
          setSignal(other.getSignal());
        }
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasStartedAt()) {
          mergeStartedAt(other.getStartedAt());
        }
        if (other.hasFinishedAt()) {
          mergeFinishedAt(other.getFinishedAt());
        }
        if (other.hasContainerID()) {
          containerID_ = other.containerID_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private int exitCode_ ;
      /**
       * <pre>
       * Exit status from the last termination of the container
       * </pre>
       *
       * <code>optional int32 exitCode = 1;</code>
       * @return Whether the exitCode field is set.
       */
      @java.lang.Override
      public boolean hasExitCode() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Exit status from the last termination of the container
       * </pre>
       *
       * <code>optional int32 exitCode = 1;</code>
       * @return The exitCode.
       */
      @java.lang.Override
      public int getExitCode() {
        return exitCode_;
      }
      /**
       * <pre>
       * Exit status from the last termination of the container
       * </pre>
       *
       * <code>optional int32 exitCode = 1;</code>
       * @param value The exitCode to set.
       * @return This builder for chaining.
       */
      public Builder setExitCode(int value) {

        exitCode_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Exit status from the last termination of the container
       * </pre>
       *
       * <code>optional int32 exitCode = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearExitCode() {
        bitField0_ = (bitField0_ & ~0x00000001);
        exitCode_ = 0;
        onChanged();
        return this;
      }

      private int signal_ ;
      /**
       * <pre>
       * Signal from the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional int32 signal = 2;</code>
       * @return Whether the signal field is set.
       */
      @java.lang.Override
      public boolean hasSignal() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Signal from the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional int32 signal = 2;</code>
       * @return The signal.
       */
      @java.lang.Override
      public int getSignal() {
        return signal_;
      }
      /**
       * <pre>
       * Signal from the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional int32 signal = 2;</code>
       * @param value The signal to set.
       * @return This builder for chaining.
       */
      public Builder setSignal(int value) {

        signal_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Signal from the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional int32 signal = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSignal() {
        bitField0_ = (bitField0_ & ~0x00000002);
        signal_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object reason_ = "";
      /**
       * <pre>
       * (brief) reason from the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * (brief) reason from the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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>
       * (brief) reason from the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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>
       * (brief) reason from the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * (brief) reason from the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * (brief) reason from the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * Message regarding the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Message regarding the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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 regarding the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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 regarding the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Message regarding the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Message regarding the last termination of the container
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.Time startedAt_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> startedAtBuilder_;
      /**
       * <pre>
       * Time at which previous execution of the container started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
       * @return Whether the startedAt field is set.
       */
      public boolean hasStartedAt() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Time at which previous execution of the container started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
       * @return The startedAt.
       */
      public io.kubernetes.client.proto.Meta.Time getStartedAt() {
        if (startedAtBuilder_ == null) {
          return startedAt_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startedAt_;
        } else {
          return startedAtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Time at which previous execution of the container started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
       */
      public Builder setStartedAt(io.kubernetes.client.proto.Meta.Time value) {
        if (startedAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          startedAt_ = value;
        } else {
          startedAtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which previous execution of the container started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
       */
      public Builder setStartedAt(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (startedAtBuilder_ == null) {
          startedAt_ = builderForValue.build();
        } else {
          startedAtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which previous execution of the container started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
       */
      public Builder mergeStartedAt(io.kubernetes.client.proto.Meta.Time value) {
        if (startedAtBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            startedAt_ != null &&
            startedAt_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getStartedAtBuilder().mergeFrom(value);
          } else {
            startedAt_ = value;
          }
        } else {
          startedAtBuilder_.mergeFrom(value);
        }
        if (startedAt_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Time at which previous execution of the container started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
       */
      public Builder clearStartedAt() {
        bitField0_ = (bitField0_ & ~0x00000010);
        startedAt_ = null;
        if (startedAtBuilder_ != null) {
          startedAtBuilder_.dispose();
          startedAtBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which previous execution of the container started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getStartedAtBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getStartedAtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Time at which previous execution of the container started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getStartedAtOrBuilder() {
        if (startedAtBuilder_ != null) {
          return startedAtBuilder_.getMessageOrBuilder();
        } else {
          return startedAt_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startedAt_;
        }
      }
      /**
       * <pre>
       * Time at which previous execution of the container started
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;</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> 
          getStartedAtFieldBuilder() {
        if (startedAtBuilder_ == null) {
          startedAtBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getStartedAt(),
                  getParentForChildren(),
                  isClean());
          startedAt_ = null;
        }
        return startedAtBuilder_;
      }

      private io.kubernetes.client.proto.Meta.Time finishedAt_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> finishedAtBuilder_;
      /**
       * <pre>
       * Time at which the container last terminated
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
       * @return Whether the finishedAt field is set.
       */
      public boolean hasFinishedAt() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Time at which the container last terminated
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
       * @return The finishedAt.
       */
      public io.kubernetes.client.proto.Meta.Time getFinishedAt() {
        if (finishedAtBuilder_ == null) {
          return finishedAt_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : finishedAt_;
        } else {
          return finishedAtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Time at which the container last terminated
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
       */
      public Builder setFinishedAt(io.kubernetes.client.proto.Meta.Time value) {
        if (finishedAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          finishedAt_ = value;
        } else {
          finishedAtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which the container last terminated
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
       */
      public Builder setFinishedAt(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (finishedAtBuilder_ == null) {
          finishedAt_ = builderForValue.build();
        } else {
          finishedAtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which the container last terminated
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
       */
      public Builder mergeFinishedAt(io.kubernetes.client.proto.Meta.Time value) {
        if (finishedAtBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            finishedAt_ != null &&
            finishedAt_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getFinishedAtBuilder().mergeFrom(value);
          } else {
            finishedAt_ = value;
          }
        } else {
          finishedAtBuilder_.mergeFrom(value);
        }
        if (finishedAt_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Time at which the container last terminated
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
       */
      public Builder clearFinishedAt() {
        bitField0_ = (bitField0_ & ~0x00000020);
        finishedAt_ = null;
        if (finishedAtBuilder_ != null) {
          finishedAtBuilder_.dispose();
          finishedAtBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which the container last terminated
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getFinishedAtBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getFinishedAtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Time at which the container last terminated
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getFinishedAtOrBuilder() {
        if (finishedAtBuilder_ != null) {
          return finishedAtBuilder_.getMessageOrBuilder();
        } else {
          return finishedAt_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : finishedAt_;
        }
      }
      /**
       * <pre>
       * Time at which the container last terminated
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;</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> 
          getFinishedAtFieldBuilder() {
        if (finishedAtBuilder_ == null) {
          finishedAtBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getFinishedAt(),
                  getParentForChildren(),
                  isClean());
          finishedAt_ = null;
        }
        return finishedAtBuilder_;
      }

      private java.lang.Object containerID_ = "";
      /**
       * <pre>
       * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 7;</code>
       * @return Whether the containerID field is set.
       */
      public boolean hasContainerID() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 7;</code>
       * @return The containerID.
       */
      public java.lang.String getContainerID() {
        java.lang.Object ref = containerID_;
        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()) {
            containerID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 7;</code>
       * @return The bytes for containerID.
       */
      public com.google.protobuf.ByteString
          getContainerIDBytes() {
        java.lang.Object ref = containerID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          containerID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 7;</code>
       * @param value The containerID to set.
       * @return This builder for chaining.
       */
      public Builder setContainerID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        containerID_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearContainerID() {
        containerID_ = getDefaultInstance().getContainerID();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 7;</code>
       * @param value The bytes for containerID to set.
       * @return This builder for chaining.
       */
      public Builder setContainerIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        containerID_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ContainerStateTerminated)
    }

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

    public static io.kubernetes.client.proto.V1.ContainerStateTerminated getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ContainerStateWaitingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ContainerStateWaiting)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * (brief) reason the container is not yet running.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 1;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * (brief) reason the container is not yet running.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 1;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * (brief) reason the container is not yet running.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 1;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * Message regarding why the container is not yet running.
     * +optional
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * Message regarding why the container is not yet running.
     * +optional
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * Message regarding why the container is not yet running.
     * +optional
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * <pre>
   * ContainerStateWaiting is a waiting state of a container.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ContainerStateWaiting}
   */
  public static final class ContainerStateWaiting extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ContainerStateWaiting)
      ContainerStateWaitingOrBuilder {
  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= */ "",
        ContainerStateWaiting.class.getName());
    }
    // Use ContainerStateWaiting.newBuilder() to construct.
    private ContainerStateWaiting(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ContainerStateWaiting() {
      reason_ = "";
      message_ = "";
    }

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

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

    private int bitField0_;
    public static final int REASON_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * (brief) reason the container is not yet running.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 1;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * (brief) reason the container is not yet running.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 1;</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>
     * (brief) reason the container is not yet running.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 1;</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 = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * Message regarding why the container is not yet running.
     * +optional
     * </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 regarding why the container is not yet running.
     * +optional
     * </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 regarding why the container is not yet running.
     * +optional
     * </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;
      }
    }

    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, reason_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, 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, reason_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, message_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

    public static io.kubernetes.client.proto.V1.ContainerStateWaiting 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.V1.ContainerStateWaiting parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ContainerStateWaiting 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.V1.ContainerStateWaiting 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>
     * ContainerStateWaiting is a waiting state of a container.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ContainerStateWaiting}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ContainerStateWaiting)
        io.kubernetes.client.proto.V1.ContainerStateWaitingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerStateWaiting_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ContainerStateWaiting.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ContainerStateWaiting result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.message_ = message_;
          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.V1.ContainerStateWaiting) {
          return mergeFrom((io.kubernetes.client.proto.V1.ContainerStateWaiting)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ContainerStateWaiting other) {
        if (other == io.kubernetes.client.proto.V1.ContainerStateWaiting.getDefaultInstance()) return this;
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                reason_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                message_ = 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 reason_ = "";
      /**
       * <pre>
       * (brief) reason the container is not yet running.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 1;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * (brief) reason the container is not yet running.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 1;</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>
       * (brief) reason the container is not yet running.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 1;</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>
       * (brief) reason the container is not yet running.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * (brief) reason the container is not yet running.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * (brief) reason the container is not yet running.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * Message regarding why the container is not yet running.
       * +optional
       * </pre>
       *
       * <code>optional string message = 2;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Message regarding why the container is not yet running.
       * +optional
       * </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 regarding why the container is not yet running.
       * +optional
       * </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 regarding why the container is not yet running.
       * +optional
       * </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 regarding why the container is not yet running.
       * +optional
       * </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 regarding why the container is not yet running.
       * +optional
       * </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;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ContainerStateWaiting)
    }

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

    public static io.kubernetes.client.proto.V1.ContainerStateWaiting getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ContainerStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ContainerStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name is a DNS_LABEL representing the unique name of the container.
     * Each container in a pod must have a unique name across all container types.
     * Cannot be updated.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name is a DNS_LABEL representing the unique name of the container.
     * Each container in a pod must have a unique name across all container types.
     * Cannot be updated.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name is a DNS_LABEL representing the unique name of the container.
     * Each container in a pod must have a unique name across all container types.
     * Cannot be updated.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * State holds details about the container's current condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
     * @return Whether the state field is set.
     */
    boolean hasState();
    /**
     * <pre>
     * State holds details about the container's current condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
     * @return The state.
     */
    io.kubernetes.client.proto.V1.ContainerState getState();
    /**
     * <pre>
     * State holds details about the container's current condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStateOrBuilder getStateOrBuilder();

    /**
     * <pre>
     * LastTerminationState holds the last termination state of the container to
     * help debug container crashes and restarts. This field is not
     * populated if the container is still running and RestartCount is 0.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
     * @return Whether the lastState field is set.
     */
    boolean hasLastState();
    /**
     * <pre>
     * LastTerminationState holds the last termination state of the container to
     * help debug container crashes and restarts. This field is not
     * populated if the container is still running and RestartCount is 0.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
     * @return The lastState.
     */
    io.kubernetes.client.proto.V1.ContainerState getLastState();
    /**
     * <pre>
     * LastTerminationState holds the last termination state of the container to
     * help debug container crashes and restarts. This field is not
     * populated if the container is still running and RestartCount is 0.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStateOrBuilder getLastStateOrBuilder();

    /**
     * <pre>
     * Ready specifies whether the container is currently passing its readiness check.
     * The value will change as readiness probes keep executing. If no readiness
     * probes are specified, this field defaults to true once the container is
     * fully started (see Started field).
     *
     * The value is typically used to determine whether a container is ready to
     * accept traffic.
     * </pre>
     *
     * <code>optional bool ready = 4;</code>
     * @return Whether the ready field is set.
     */
    boolean hasReady();
    /**
     * <pre>
     * Ready specifies whether the container is currently passing its readiness check.
     * The value will change as readiness probes keep executing. If no readiness
     * probes are specified, this field defaults to true once the container is
     * fully started (see Started field).
     *
     * The value is typically used to determine whether a container is ready to
     * accept traffic.
     * </pre>
     *
     * <code>optional bool ready = 4;</code>
     * @return The ready.
     */
    boolean getReady();

    /**
     * <pre>
     * RestartCount holds the number of times the container has been restarted.
     * Kubelet makes an effort to always increment the value, but there
     * are cases when the state may be lost due to node restarts and then the value
     * may be reset to 0. The value is never negative.
     * </pre>
     *
     * <code>optional int32 restartCount = 5;</code>
     * @return Whether the restartCount field is set.
     */
    boolean hasRestartCount();
    /**
     * <pre>
     * RestartCount holds the number of times the container has been restarted.
     * Kubelet makes an effort to always increment the value, but there
     * are cases when the state may be lost due to node restarts and then the value
     * may be reset to 0. The value is never negative.
     * </pre>
     *
     * <code>optional int32 restartCount = 5;</code>
     * @return The restartCount.
     */
    int getRestartCount();

    /**
     * <pre>
     * Image is the name of container image that the container is running.
     * The container image may not match the image used in the PodSpec,
     * as it may have been resolved by the runtime.
     * More info: https://kubernetes.io/docs/concepts/containers/images.
     * </pre>
     *
     * <code>optional string image = 6;</code>
     * @return Whether the image field is set.
     */
    boolean hasImage();
    /**
     * <pre>
     * Image is the name of container image that the container is running.
     * The container image may not match the image used in the PodSpec,
     * as it may have been resolved by the runtime.
     * More info: https://kubernetes.io/docs/concepts/containers/images.
     * </pre>
     *
     * <code>optional string image = 6;</code>
     * @return The image.
     */
    java.lang.String getImage();
    /**
     * <pre>
     * Image is the name of container image that the container is running.
     * The container image may not match the image used in the PodSpec,
     * as it may have been resolved by the runtime.
     * More info: https://kubernetes.io/docs/concepts/containers/images.
     * </pre>
     *
     * <code>optional string image = 6;</code>
     * @return The bytes for image.
     */
    com.google.protobuf.ByteString
        getImageBytes();

    /**
     * <pre>
     * ImageID is the image ID of the container's image. The image ID may not
     * match the image ID of the image used in the PodSpec, as it may have been
     * resolved by the runtime.
     * </pre>
     *
     * <code>optional string imageID = 7;</code>
     * @return Whether the imageID field is set.
     */
    boolean hasImageID();
    /**
     * <pre>
     * ImageID is the image ID of the container's image. The image ID may not
     * match the image ID of the image used in the PodSpec, as it may have been
     * resolved by the runtime.
     * </pre>
     *
     * <code>optional string imageID = 7;</code>
     * @return The imageID.
     */
    java.lang.String getImageID();
    /**
     * <pre>
     * ImageID is the image ID of the container's image. The image ID may not
     * match the image ID of the image used in the PodSpec, as it may have been
     * resolved by the runtime.
     * </pre>
     *
     * <code>optional string imageID = 7;</code>
     * @return The bytes for imageID.
     */
    com.google.protobuf.ByteString
        getImageIDBytes();

    /**
     * <pre>
     * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
     * Where type is a container runtime identifier, returned from Version call of CRI API
     * (for example "containerd").
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 8;</code>
     * @return Whether the containerID field is set.
     */
    boolean hasContainerID();
    /**
     * <pre>
     * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
     * Where type is a container runtime identifier, returned from Version call of CRI API
     * (for example "containerd").
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 8;</code>
     * @return The containerID.
     */
    java.lang.String getContainerID();
    /**
     * <pre>
     * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
     * Where type is a container runtime identifier, returned from Version call of CRI API
     * (for example "containerd").
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 8;</code>
     * @return The bytes for containerID.
     */
    com.google.protobuf.ByteString
        getContainerIDBytes();

    /**
     * <pre>
     * Started indicates whether the container has finished its postStart lifecycle hook
     * and passed its startup probe.
     * Initialized as false, becomes true after startupProbe is considered
     * successful. Resets to false when the container is restarted, or if kubelet
     * loses state temporarily. In both cases, startup probes will run again.
     * Is always true when no startupProbe is defined and container is running and
     * has passed the postStart lifecycle hook. The null value must be treated the
     * same as false.
     * +optional
     * </pre>
     *
     * <code>optional bool started = 9;</code>
     * @return Whether the started field is set.
     */
    boolean hasStarted();
    /**
     * <pre>
     * Started indicates whether the container has finished its postStart lifecycle hook
     * and passed its startup probe.
     * Initialized as false, becomes true after startupProbe is considered
     * successful. Resets to false when the container is restarted, or if kubelet
     * loses state temporarily. In both cases, startup probes will run again.
     * Is always true when no startupProbe is defined and container is running and
     * has passed the postStart lifecycle hook. The null value must be treated the
     * same as false.
     * +optional
     * </pre>
     *
     * <code>optional bool started = 9;</code>
     * @return The started.
     */
    boolean getStarted();

    /**
     * <pre>
     * AllocatedResources represents the compute resources allocated for this container by the
     * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
     * and after successfully admitting desired pod resize.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
     */
    int getAllocatedResourcesCount();
    /**
     * <pre>
     * AllocatedResources represents the compute resources allocated for this container by the
     * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
     * and after successfully admitting desired pod resize.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
     */
    boolean containsAllocatedResources(
        java.lang.String key);
    /**
     * Use {@link #getAllocatedResourcesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getAllocatedResources();
    /**
     * <pre>
     * AllocatedResources represents the compute resources allocated for this container by the
     * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
     * and after successfully admitting desired pod resize.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getAllocatedResourcesMap();
    /**
     * <pre>
     * AllocatedResources represents the compute resources allocated for this container by the
     * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
     * and after successfully admitting desired pod resize.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * AllocatedResources represents the compute resources allocated for this container by the
     * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
     * and after successfully admitting desired pod resize.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Resources represents the compute resource requests and limits that have been successfully
     * enacted on the running container after it has been started or has been successfully resized.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
     * @return Whether the resources field is set.
     */
    boolean hasResources();
    /**
     * <pre>
     * Resources represents the compute resource requests and limits that have been successfully
     * enacted on the running container after it has been started or has been successfully resized.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
     * @return The resources.
     */
    io.kubernetes.client.proto.V1.ResourceRequirements getResources();
    /**
     * <pre>
     * Resources represents the compute resource requests and limits that have been successfully
     * enacted on the running container after it has been started or has been successfully resized.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
     */
    io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder getResourcesOrBuilder();

    /**
     * <pre>
     * Status of volume mounts.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * +featureGate=RecursiveReadOnlyMounts
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.VolumeMountStatus> 
        getVolumeMountsList();
    /**
     * <pre>
     * Status of volume mounts.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * +featureGate=RecursiveReadOnlyMounts
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
     */
    io.kubernetes.client.proto.V1.VolumeMountStatus getVolumeMounts(int index);
    /**
     * <pre>
     * Status of volume mounts.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * +featureGate=RecursiveReadOnlyMounts
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
     */
    int getVolumeMountsCount();
    /**
     * <pre>
     * Status of volume mounts.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * +featureGate=RecursiveReadOnlyMounts
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.VolumeMountStatusOrBuilder> 
        getVolumeMountsOrBuilderList();
    /**
     * <pre>
     * Status of volume mounts.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * +featureGate=RecursiveReadOnlyMounts
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
     */
    io.kubernetes.client.proto.V1.VolumeMountStatusOrBuilder getVolumeMountsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ContainerStatus contains details for the current status of this container.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ContainerStatus}
   */
  public static final class ContainerStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ContainerStatus)
      ContainerStatusOrBuilder {
  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= */ "",
        ContainerStatus.class.getName());
    }
    // Use ContainerStatus.newBuilder() to construct.
    private ContainerStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ContainerStatus() {
      name_ = "";
      image_ = "";
      imageID_ = "";
      containerID_ = "";
      volumeMounts_ = java.util.Collections.emptyList();
    }

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

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 10:
          return internalGetAllocatedResources();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ContainerStatus.class, io.kubernetes.client.proto.V1.ContainerStatus.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 DNS_LABEL representing the unique name of the container.
     * Each container in a pod must have a unique name across all container types.
     * Cannot be updated.
     * </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 DNS_LABEL representing the unique name of the container.
     * Each container in a pod must have a unique name across all container types.
     * Cannot be updated.
     * </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 DNS_LABEL representing the unique name of the container.
     * Each container in a pod must have a unique name across all container types.
     * Cannot be updated.
     * </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 STATE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.ContainerState state_;
    /**
     * <pre>
     * State holds details about the container's current condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
     * @return Whether the state field is set.
     */
    @java.lang.Override
    public boolean hasState() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * State holds details about the container's current condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
     * @return The state.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerState getState() {
      return state_ == null ? io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance() : state_;
    }
    /**
     * <pre>
     * State holds details about the container's current condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStateOrBuilder getStateOrBuilder() {
      return state_ == null ? io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance() : state_;
    }

    public static final int LASTSTATE_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.ContainerState lastState_;
    /**
     * <pre>
     * LastTerminationState holds the last termination state of the container to
     * help debug container crashes and restarts. This field is not
     * populated if the container is still running and RestartCount is 0.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
     * @return Whether the lastState field is set.
     */
    @java.lang.Override
    public boolean hasLastState() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * LastTerminationState holds the last termination state of the container to
     * help debug container crashes and restarts. This field is not
     * populated if the container is still running and RestartCount is 0.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
     * @return The lastState.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerState getLastState() {
      return lastState_ == null ? io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance() : lastState_;
    }
    /**
     * <pre>
     * LastTerminationState holds the last termination state of the container to
     * help debug container crashes and restarts. This field is not
     * populated if the container is still running and RestartCount is 0.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStateOrBuilder getLastStateOrBuilder() {
      return lastState_ == null ? io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance() : lastState_;
    }

    public static final int READY_FIELD_NUMBER = 4;
    private boolean ready_ = false;
    /**
     * <pre>
     * Ready specifies whether the container is currently passing its readiness check.
     * The value will change as readiness probes keep executing. If no readiness
     * probes are specified, this field defaults to true once the container is
     * fully started (see Started field).
     *
     * The value is typically used to determine whether a container is ready to
     * accept traffic.
     * </pre>
     *
     * <code>optional bool ready = 4;</code>
     * @return Whether the ready field is set.
     */
    @java.lang.Override
    public boolean hasReady() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Ready specifies whether the container is currently passing its readiness check.
     * The value will change as readiness probes keep executing. If no readiness
     * probes are specified, this field defaults to true once the container is
     * fully started (see Started field).
     *
     * The value is typically used to determine whether a container is ready to
     * accept traffic.
     * </pre>
     *
     * <code>optional bool ready = 4;</code>
     * @return The ready.
     */
    @java.lang.Override
    public boolean getReady() {
      return ready_;
    }

    public static final int RESTARTCOUNT_FIELD_NUMBER = 5;
    private int restartCount_ = 0;
    /**
     * <pre>
     * RestartCount holds the number of times the container has been restarted.
     * Kubelet makes an effort to always increment the value, but there
     * are cases when the state may be lost due to node restarts and then the value
     * may be reset to 0. The value is never negative.
     * </pre>
     *
     * <code>optional int32 restartCount = 5;</code>
     * @return Whether the restartCount field is set.
     */
    @java.lang.Override
    public boolean hasRestartCount() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * RestartCount holds the number of times the container has been restarted.
     * Kubelet makes an effort to always increment the value, but there
     * are cases when the state may be lost due to node restarts and then the value
     * may be reset to 0. The value is never negative.
     * </pre>
     *
     * <code>optional int32 restartCount = 5;</code>
     * @return The restartCount.
     */
    @java.lang.Override
    public int getRestartCount() {
      return restartCount_;
    }

    public static final int IMAGE_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object image_ = "";
    /**
     * <pre>
     * Image is the name of container image that the container is running.
     * The container image may not match the image used in the PodSpec,
     * as it may have been resolved by the runtime.
     * More info: https://kubernetes.io/docs/concepts/containers/images.
     * </pre>
     *
     * <code>optional string image = 6;</code>
     * @return Whether the image field is set.
     */
    @java.lang.Override
    public boolean hasImage() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Image is the name of container image that the container is running.
     * The container image may not match the image used in the PodSpec,
     * as it may have been resolved by the runtime.
     * More info: https://kubernetes.io/docs/concepts/containers/images.
     * </pre>
     *
     * <code>optional string image = 6;</code>
     * @return The image.
     */
    @java.lang.Override
    public java.lang.String getImage() {
      java.lang.Object ref = image_;
      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()) {
          image_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Image is the name of container image that the container is running.
     * The container image may not match the image used in the PodSpec,
     * as it may have been resolved by the runtime.
     * More info: https://kubernetes.io/docs/concepts/containers/images.
     * </pre>
     *
     * <code>optional string image = 6;</code>
     * @return The bytes for image.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getImageBytes() {
      java.lang.Object ref = image_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        image_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IMAGEID_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object imageID_ = "";
    /**
     * <pre>
     * ImageID is the image ID of the container's image. The image ID may not
     * match the image ID of the image used in the PodSpec, as it may have been
     * resolved by the runtime.
     * </pre>
     *
     * <code>optional string imageID = 7;</code>
     * @return Whether the imageID field is set.
     */
    @java.lang.Override
    public boolean hasImageID() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * ImageID is the image ID of the container's image. The image ID may not
     * match the image ID of the image used in the PodSpec, as it may have been
     * resolved by the runtime.
     * </pre>
     *
     * <code>optional string imageID = 7;</code>
     * @return The imageID.
     */
    @java.lang.Override
    public java.lang.String getImageID() {
      java.lang.Object ref = imageID_;
      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()) {
          imageID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ImageID is the image ID of the container's image. The image ID may not
     * match the image ID of the image used in the PodSpec, as it may have been
     * resolved by the runtime.
     * </pre>
     *
     * <code>optional string imageID = 7;</code>
     * @return The bytes for imageID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getImageIDBytes() {
      java.lang.Object ref = imageID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        imageID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTAINERID_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object containerID_ = "";
    /**
     * <pre>
     * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
     * Where type is a container runtime identifier, returned from Version call of CRI API
     * (for example "containerd").
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 8;</code>
     * @return Whether the containerID field is set.
     */
    @java.lang.Override
    public boolean hasContainerID() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
     * Where type is a container runtime identifier, returned from Version call of CRI API
     * (for example "containerd").
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 8;</code>
     * @return The containerID.
     */
    @java.lang.Override
    public java.lang.String getContainerID() {
      java.lang.Object ref = containerID_;
      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()) {
          containerID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
     * Where type is a container runtime identifier, returned from Version call of CRI API
     * (for example "containerd").
     * +optional
     * </pre>
     *
     * <code>optional string containerID = 8;</code>
     * @return The bytes for containerID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getContainerIDBytes() {
      java.lang.Object ref = containerID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        containerID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STARTED_FIELD_NUMBER = 9;
    private boolean started_ = false;
    /**
     * <pre>
     * Started indicates whether the container has finished its postStart lifecycle hook
     * and passed its startup probe.
     * Initialized as false, becomes true after startupProbe is considered
     * successful. Resets to false when the container is restarted, or if kubelet
     * loses state temporarily. In both cases, startup probes will run again.
     * Is always true when no startupProbe is defined and container is running and
     * has passed the postStart lifecycle hook. The null value must be treated the
     * same as false.
     * +optional
     * </pre>
     *
     * <code>optional bool started = 9;</code>
     * @return Whether the started field is set.
     */
    @java.lang.Override
    public boolean hasStarted() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * Started indicates whether the container has finished its postStart lifecycle hook
     * and passed its startup probe.
     * Initialized as false, becomes true after startupProbe is considered
     * successful. Resets to false when the container is restarted, or if kubelet
     * loses state temporarily. In both cases, startup probes will run again.
     * Is always true when no startupProbe is defined and container is running and
     * has passed the postStart lifecycle hook. The null value must be treated the
     * same as false.
     * +optional
     * </pre>
     *
     * <code>optional bool started = 9;</code>
     * @return The started.
     */
    @java.lang.Override
    public boolean getStarted() {
      return started_;
    }

    public static final int ALLOCATEDRESOURCES_FIELD_NUMBER = 10;
    private static final class AllocatedResourcesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerStatus_AllocatedResourcesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> allocatedResources_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetAllocatedResources() {
      if (allocatedResources_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            AllocatedResourcesDefaultEntryHolder.defaultEntry);
      }
      return allocatedResources_;
    }
    public int getAllocatedResourcesCount() {
      return internalGetAllocatedResources().getMap().size();
    }
    /**
     * <pre>
     * AllocatedResources represents the compute resources allocated for this container by the
     * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
     * and after successfully admitting desired pod resize.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
     */
    @java.lang.Override
    public boolean containsAllocatedResources(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetAllocatedResources().getMap().containsKey(key);
    }
    /**
     * Use {@link #getAllocatedResourcesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatedResources() {
      return getAllocatedResourcesMap();
    }
    /**
     * <pre>
     * AllocatedResources represents the compute resources allocated for this container by the
     * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
     * and after successfully admitting desired pod resize.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatedResourcesMap() {
      return internalGetAllocatedResources().getMap();
    }
    /**
     * <pre>
     * AllocatedResources represents the compute resources allocated for this container by the
     * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
     * and after successfully admitting desired pod resize.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetAllocatedResources().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * AllocatedResources represents the compute resources allocated for this container by the
     * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
     * and after successfully admitting desired pod resize.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetAllocatedResources().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int RESOURCES_FIELD_NUMBER = 11;
    private io.kubernetes.client.proto.V1.ResourceRequirements resources_;
    /**
     * <pre>
     * Resources represents the compute resource requests and limits that have been successfully
     * enacted on the running container after it has been started or has been successfully resized.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
     * @return Whether the resources field is set.
     */
    @java.lang.Override
    public boolean hasResources() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * Resources represents the compute resource requests and limits that have been successfully
     * enacted on the running container after it has been started or has been successfully resized.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
     * @return The resources.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceRequirements getResources() {
      return resources_ == null ? io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
    }
    /**
     * <pre>
     * Resources represents the compute resource requests and limits that have been successfully
     * enacted on the running container after it has been started or has been successfully resized.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder getResourcesOrBuilder() {
      return resources_ == null ? io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
    }

    public static final int VOLUMEMOUNTS_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.VolumeMountStatus> volumeMounts_;
    /**
     * <pre>
     * Status of volume mounts.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * +featureGate=RecursiveReadOnlyMounts
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.VolumeMountStatus> getVolumeMountsList() {
      return volumeMounts_;
    }
    /**
     * <pre>
     * Status of volume mounts.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * +featureGate=RecursiveReadOnlyMounts
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeMountStatusOrBuilder> 
        getVolumeMountsOrBuilderList() {
      return volumeMounts_;
    }
    /**
     * <pre>
     * Status of volume mounts.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * +featureGate=RecursiveReadOnlyMounts
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
     */
    @java.lang.Override
    public int getVolumeMountsCount() {
      return volumeMounts_.size();
    }
    /**
     * <pre>
     * Status of volume mounts.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * +featureGate=RecursiveReadOnlyMounts
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeMountStatus getVolumeMounts(int index) {
      return volumeMounts_.get(index);
    }
    /**
     * <pre>
     * Status of volume mounts.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * +featureGate=RecursiveReadOnlyMounts
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeMountStatusOrBuilder getVolumeMountsOrBuilder(
        int index) {
      return volumeMounts_.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.writeMessage(2, getState());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getLastState());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, ready_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt32(5, restartCount_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, image_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, imageID_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, containerID_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeBool(9, started_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetAllocatedResources(),
          AllocatedResourcesDefaultEntryHolder.defaultEntry,
          10);
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeMessage(11, getResources());
      }
      for (int i = 0; i < volumeMounts_.size(); i++) {
        output.writeMessage(12, volumeMounts_.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
          .computeMessageSize(2, getState());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getLastState());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, ready_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, restartCount_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, image_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, imageID_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(8, containerID_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, started_);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetAllocatedResources().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        allocatedResources__ = AllocatedResourcesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(10, allocatedResources__);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getResources());
      }
      for (int i = 0; i < volumeMounts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, volumeMounts_.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.V1.ContainerStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ContainerStatus other = (io.kubernetes.client.proto.V1.ContainerStatus) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasState() != other.hasState()) return false;
      if (hasState()) {
        if (!getState()
            .equals(other.getState())) return false;
      }
      if (hasLastState() != other.hasLastState()) return false;
      if (hasLastState()) {
        if (!getLastState()
            .equals(other.getLastState())) return false;
      }
      if (hasReady() != other.hasReady()) return false;
      if (hasReady()) {
        if (getReady()
            != other.getReady()) return false;
      }
      if (hasRestartCount() != other.hasRestartCount()) return false;
      if (hasRestartCount()) {
        if (getRestartCount()
            != other.getRestartCount()) return false;
      }
      if (hasImage() != other.hasImage()) return false;
      if (hasImage()) {
        if (!getImage()
            .equals(other.getImage())) return false;
      }
      if (hasImageID() != other.hasImageID()) return false;
      if (hasImageID()) {
        if (!getImageID()
            .equals(other.getImageID())) return false;
      }
      if (hasContainerID() != other.hasContainerID()) return false;
      if (hasContainerID()) {
        if (!getContainerID()
            .equals(other.getContainerID())) return false;
      }
      if (hasStarted() != other.hasStarted()) return false;
      if (hasStarted()) {
        if (getStarted()
            != other.getStarted()) return false;
      }
      if (!internalGetAllocatedResources().equals(
          other.internalGetAllocatedResources())) return false;
      if (hasResources() != other.hasResources()) return false;
      if (hasResources()) {
        if (!getResources()
            .equals(other.getResources())) return false;
      }
      if (!getVolumeMountsList()
          .equals(other.getVolumeMountsList())) 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 (hasState()) {
        hash = (37 * hash) + STATE_FIELD_NUMBER;
        hash = (53 * hash) + getState().hashCode();
      }
      if (hasLastState()) {
        hash = (37 * hash) + LASTSTATE_FIELD_NUMBER;
        hash = (53 * hash) + getLastState().hashCode();
      }
      if (hasReady()) {
        hash = (37 * hash) + READY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReady());
      }
      if (hasRestartCount()) {
        hash = (37 * hash) + RESTARTCOUNT_FIELD_NUMBER;
        hash = (53 * hash) + getRestartCount();
      }
      if (hasImage()) {
        hash = (37 * hash) + IMAGE_FIELD_NUMBER;
        hash = (53 * hash) + getImage().hashCode();
      }
      if (hasImageID()) {
        hash = (37 * hash) + IMAGEID_FIELD_NUMBER;
        hash = (53 * hash) + getImageID().hashCode();
      }
      if (hasContainerID()) {
        hash = (37 * hash) + CONTAINERID_FIELD_NUMBER;
        hash = (53 * hash) + getContainerID().hashCode();
      }
      if (hasStarted()) {
        hash = (37 * hash) + STARTED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStarted());
      }
      if (!internalGetAllocatedResources().getMap().isEmpty()) {
        hash = (37 * hash) + ALLOCATEDRESOURCES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetAllocatedResources().hashCode();
      }
      if (hasResources()) {
        hash = (37 * hash) + RESOURCES_FIELD_NUMBER;
        hash = (53 * hash) + getResources().hashCode();
      }
      if (getVolumeMountsCount() > 0) {
        hash = (37 * hash) + VOLUMEMOUNTS_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeMountsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ContainerStatus 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.V1.ContainerStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ContainerStatus 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.V1.ContainerStatus 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>
     * ContainerStatus contains details for the current status of this container.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ContainerStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ContainerStatus)
        io.kubernetes.client.proto.V1.ContainerStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerStatus_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 10:
            return internalGetAllocatedResources();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 10:
            return internalGetMutableAllocatedResources();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ContainerStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ContainerStatus.class, io.kubernetes.client.proto.V1.ContainerStatus.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getStateFieldBuilder();
          getLastStateFieldBuilder();
          getResourcesFieldBuilder();
          getVolumeMountsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        state_ = null;
        if (stateBuilder_ != null) {
          stateBuilder_.dispose();
          stateBuilder_ = null;
        }
        lastState_ = null;
        if (lastStateBuilder_ != null) {
          lastStateBuilder_.dispose();
          lastStateBuilder_ = null;
        }
        ready_ = false;
        restartCount_ = 0;
        image_ = "";
        imageID_ = "";
        containerID_ = "";
        started_ = false;
        internalGetMutableAllocatedResources().clear();
        resources_ = null;
        if (resourcesBuilder_ != null) {
          resourcesBuilder_.dispose();
          resourcesBuilder_ = null;
        }
        if (volumeMountsBuilder_ == null) {
          volumeMounts_ = java.util.Collections.emptyList();
        } else {
          volumeMounts_ = null;
          volumeMountsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ContainerStatus result) {
        if (volumeMountsBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0)) {
            volumeMounts_ = java.util.Collections.unmodifiableList(volumeMounts_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.volumeMounts_ = volumeMounts_;
        } else {
          result.volumeMounts_ = volumeMountsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ContainerStatus 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.state_ = stateBuilder_ == null
              ? state_
              : stateBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.lastState_ = lastStateBuilder_ == null
              ? lastState_
              : lastStateBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.ready_ = ready_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.restartCount_ = restartCount_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.image_ = image_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.imageID_ = imageID_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.containerID_ = containerID_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.started_ = started_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.allocatedResources_ = internalGetAllocatedResources().build(AllocatedResourcesDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.resources_ = resourcesBuilder_ == null
              ? resources_
              : resourcesBuilder_.build();
          to_bitField0_ |= 0x00000200;
        }
        result.bitField0_ |= to_bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ContainerStatus other) {
        if (other == io.kubernetes.client.proto.V1.ContainerStatus.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasState()) {
          mergeState(other.getState());
        }
        if (other.hasLastState()) {
          mergeLastState(other.getLastState());
        }
        if (other.hasReady()) {
          setReady(other.getReady());
        }
        if (other.hasRestartCount()) {
          setRestartCount(other.getRestartCount());
        }
        if (other.hasImage()) {
          image_ = other.image_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasImageID()) {
          imageID_ = other.imageID_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasContainerID()) {
          containerID_ = other.containerID_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (other.hasStarted()) {
          setStarted(other.getStarted());
        }
        internalGetMutableAllocatedResources().mergeFrom(
            other.internalGetAllocatedResources());
        bitField0_ |= 0x00000200;
        if (other.hasResources()) {
          mergeResources(other.getResources());
        }
        if (volumeMountsBuilder_ == null) {
          if (!other.volumeMounts_.isEmpty()) {
            if (volumeMounts_.isEmpty()) {
              volumeMounts_ = other.volumeMounts_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureVolumeMountsIsMutable();
              volumeMounts_.addAll(other.volumeMounts_);
            }
            onChanged();
          }
        } else {
          if (!other.volumeMounts_.isEmpty()) {
            if (volumeMountsBuilder_.isEmpty()) {
              volumeMountsBuilder_.dispose();
              volumeMountsBuilder_ = null;
              volumeMounts_ = other.volumeMounts_;
              bitField0_ = (bitField0_ & ~0x00000800);
              volumeMountsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVolumeMountsFieldBuilder() : null;
            } else {
              volumeMountsBuilder_.addAllMessages(other.volumeMounts_);
            }
          }
        }
        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: {
                input.readMessage(
                    getStateFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getLastStateFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                ready_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                restartCount_ = input.readInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 50: {
                image_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                imageID_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                containerID_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 72: {
                started_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              case 82: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                allocatedResources__ = input.readMessage(
                    AllocatedResourcesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableAllocatedResources().ensureBuilderMap().put(
                    allocatedResources__.getKey(), allocatedResources__.getValue());
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getResourcesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              case 98: {
                io.kubernetes.client.proto.V1.VolumeMountStatus m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.VolumeMountStatus.parser(),
                        extensionRegistry);
                if (volumeMountsBuilder_ == null) {
                  ensureVolumeMountsIsMutable();
                  volumeMounts_.add(m);
                } else {
                  volumeMountsBuilder_.addMessage(m);
                }
                break;
              } // case 98
              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 DNS_LABEL representing the unique name of the container.
       * Each container in a pod must have a unique name across all container types.
       * Cannot be updated.
       * </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 DNS_LABEL representing the unique name of the container.
       * Each container in a pod must have a unique name across all container types.
       * Cannot be updated.
       * </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 DNS_LABEL representing the unique name of the container.
       * Each container in a pod must have a unique name across all container types.
       * Cannot be updated.
       * </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 DNS_LABEL representing the unique name of the container.
       * Each container in a pod must have a unique name across all container types.
       * Cannot be updated.
       * </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 DNS_LABEL representing the unique name of the container.
       * Each container in a pod must have a unique name across all container types.
       * Cannot be updated.
       * </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 DNS_LABEL representing the unique name of the container.
       * Each container in a pod must have a unique name across all container types.
       * Cannot be updated.
       * </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 io.kubernetes.client.proto.V1.ContainerState state_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerState, io.kubernetes.client.proto.V1.ContainerState.Builder, io.kubernetes.client.proto.V1.ContainerStateOrBuilder> stateBuilder_;
      /**
       * <pre>
       * State holds details about the container's current condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
       * @return Whether the state field is set.
       */
      public boolean hasState() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * State holds details about the container's current condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
       * @return The state.
       */
      public io.kubernetes.client.proto.V1.ContainerState getState() {
        if (stateBuilder_ == null) {
          return state_ == null ? io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance() : state_;
        } else {
          return stateBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * State holds details about the container's current condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
       */
      public Builder setState(io.kubernetes.client.proto.V1.ContainerState value) {
        if (stateBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          state_ = value;
        } else {
          stateBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * State holds details about the container's current condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
       */
      public Builder setState(
          io.kubernetes.client.proto.V1.ContainerState.Builder builderForValue) {
        if (stateBuilder_ == null) {
          state_ = builderForValue.build();
        } else {
          stateBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * State holds details about the container's current condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
       */
      public Builder mergeState(io.kubernetes.client.proto.V1.ContainerState value) {
        if (stateBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            state_ != null &&
            state_ != io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance()) {
            getStateBuilder().mergeFrom(value);
          } else {
            state_ = value;
          }
        } else {
          stateBuilder_.mergeFrom(value);
        }
        if (state_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * State holds details about the container's current condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
       */
      public Builder clearState() {
        bitField0_ = (bitField0_ & ~0x00000002);
        state_ = null;
        if (stateBuilder_ != null) {
          stateBuilder_.dispose();
          stateBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * State holds details about the container's current condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerState.Builder getStateBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getStateFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * State holds details about the container's current condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStateOrBuilder getStateOrBuilder() {
        if (stateBuilder_ != null) {
          return stateBuilder_.getMessageOrBuilder();
        } else {
          return state_ == null ?
              io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance() : state_;
        }
      }
      /**
       * <pre>
       * State holds details about the container's current condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState state = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerState, io.kubernetes.client.proto.V1.ContainerState.Builder, io.kubernetes.client.proto.V1.ContainerStateOrBuilder> 
          getStateFieldBuilder() {
        if (stateBuilder_ == null) {
          stateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerState, io.kubernetes.client.proto.V1.ContainerState.Builder, io.kubernetes.client.proto.V1.ContainerStateOrBuilder>(
                  getState(),
                  getParentForChildren(),
                  isClean());
          state_ = null;
        }
        return stateBuilder_;
      }

      private io.kubernetes.client.proto.V1.ContainerState lastState_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerState, io.kubernetes.client.proto.V1.ContainerState.Builder, io.kubernetes.client.proto.V1.ContainerStateOrBuilder> lastStateBuilder_;
      /**
       * <pre>
       * LastTerminationState holds the last termination state of the container to
       * help debug container crashes and restarts. This field is not
       * populated if the container is still running and RestartCount is 0.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
       * @return Whether the lastState field is set.
       */
      public boolean hasLastState() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * LastTerminationState holds the last termination state of the container to
       * help debug container crashes and restarts. This field is not
       * populated if the container is still running and RestartCount is 0.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
       * @return The lastState.
       */
      public io.kubernetes.client.proto.V1.ContainerState getLastState() {
        if (lastStateBuilder_ == null) {
          return lastState_ == null ? io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance() : lastState_;
        } else {
          return lastStateBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * LastTerminationState holds the last termination state of the container to
       * help debug container crashes and restarts. This field is not
       * populated if the container is still running and RestartCount is 0.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
       */
      public Builder setLastState(io.kubernetes.client.proto.V1.ContainerState value) {
        if (lastStateBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastState_ = value;
        } else {
          lastStateBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LastTerminationState holds the last termination state of the container to
       * help debug container crashes and restarts. This field is not
       * populated if the container is still running and RestartCount is 0.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
       */
      public Builder setLastState(
          io.kubernetes.client.proto.V1.ContainerState.Builder builderForValue) {
        if (lastStateBuilder_ == null) {
          lastState_ = builderForValue.build();
        } else {
          lastStateBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LastTerminationState holds the last termination state of the container to
       * help debug container crashes and restarts. This field is not
       * populated if the container is still running and RestartCount is 0.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
       */
      public Builder mergeLastState(io.kubernetes.client.proto.V1.ContainerState value) {
        if (lastStateBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            lastState_ != null &&
            lastState_ != io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance()) {
            getLastStateBuilder().mergeFrom(value);
          } else {
            lastState_ = value;
          }
        } else {
          lastStateBuilder_.mergeFrom(value);
        }
        if (lastState_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * LastTerminationState holds the last termination state of the container to
       * help debug container crashes and restarts. This field is not
       * populated if the container is still running and RestartCount is 0.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
       */
      public Builder clearLastState() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lastState_ = null;
        if (lastStateBuilder_ != null) {
          lastStateBuilder_.dispose();
          lastStateBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LastTerminationState holds the last termination state of the container to
       * help debug container crashes and restarts. This field is not
       * populated if the container is still running and RestartCount is 0.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerState.Builder getLastStateBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getLastStateFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * LastTerminationState holds the last termination state of the container to
       * help debug container crashes and restarts. This field is not
       * populated if the container is still running and RestartCount is 0.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStateOrBuilder getLastStateOrBuilder() {
        if (lastStateBuilder_ != null) {
          return lastStateBuilder_.getMessageOrBuilder();
        } else {
          return lastState_ == null ?
              io.kubernetes.client.proto.V1.ContainerState.getDefaultInstance() : lastState_;
        }
      }
      /**
       * <pre>
       * LastTerminationState holds the last termination state of the container to
       * help debug container crashes and restarts. This field is not
       * populated if the container is still running and RestartCount is 0.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ContainerState lastState = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerState, io.kubernetes.client.proto.V1.ContainerState.Builder, io.kubernetes.client.proto.V1.ContainerStateOrBuilder> 
          getLastStateFieldBuilder() {
        if (lastStateBuilder_ == null) {
          lastStateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerState, io.kubernetes.client.proto.V1.ContainerState.Builder, io.kubernetes.client.proto.V1.ContainerStateOrBuilder>(
                  getLastState(),
                  getParentForChildren(),
                  isClean());
          lastState_ = null;
        }
        return lastStateBuilder_;
      }

      private boolean ready_ ;
      /**
       * <pre>
       * Ready specifies whether the container is currently passing its readiness check.
       * The value will change as readiness probes keep executing. If no readiness
       * probes are specified, this field defaults to true once the container is
       * fully started (see Started field).
       *
       * The value is typically used to determine whether a container is ready to
       * accept traffic.
       * </pre>
       *
       * <code>optional bool ready = 4;</code>
       * @return Whether the ready field is set.
       */
      @java.lang.Override
      public boolean hasReady() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Ready specifies whether the container is currently passing its readiness check.
       * The value will change as readiness probes keep executing. If no readiness
       * probes are specified, this field defaults to true once the container is
       * fully started (see Started field).
       *
       * The value is typically used to determine whether a container is ready to
       * accept traffic.
       * </pre>
       *
       * <code>optional bool ready = 4;</code>
       * @return The ready.
       */
      @java.lang.Override
      public boolean getReady() {
        return ready_;
      }
      /**
       * <pre>
       * Ready specifies whether the container is currently passing its readiness check.
       * The value will change as readiness probes keep executing. If no readiness
       * probes are specified, this field defaults to true once the container is
       * fully started (see Started field).
       *
       * The value is typically used to determine whether a container is ready to
       * accept traffic.
       * </pre>
       *
       * <code>optional bool ready = 4;</code>
       * @param value The ready to set.
       * @return This builder for chaining.
       */
      public Builder setReady(boolean value) {

        ready_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ready specifies whether the container is currently passing its readiness check.
       * The value will change as readiness probes keep executing. If no readiness
       * probes are specified, this field defaults to true once the container is
       * fully started (see Started field).
       *
       * The value is typically used to determine whether a container is ready to
       * accept traffic.
       * </pre>
       *
       * <code>optional bool ready = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReady() {
        bitField0_ = (bitField0_ & ~0x00000008);
        ready_ = false;
        onChanged();
        return this;
      }

      private int restartCount_ ;
      /**
       * <pre>
       * RestartCount holds the number of times the container has been restarted.
       * Kubelet makes an effort to always increment the value, but there
       * are cases when the state may be lost due to node restarts and then the value
       * may be reset to 0. The value is never negative.
       * </pre>
       *
       * <code>optional int32 restartCount = 5;</code>
       * @return Whether the restartCount field is set.
       */
      @java.lang.Override
      public boolean hasRestartCount() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * RestartCount holds the number of times the container has been restarted.
       * Kubelet makes an effort to always increment the value, but there
       * are cases when the state may be lost due to node restarts and then the value
       * may be reset to 0. The value is never negative.
       * </pre>
       *
       * <code>optional int32 restartCount = 5;</code>
       * @return The restartCount.
       */
      @java.lang.Override
      public int getRestartCount() {
        return restartCount_;
      }
      /**
       * <pre>
       * RestartCount holds the number of times the container has been restarted.
       * Kubelet makes an effort to always increment the value, but there
       * are cases when the state may be lost due to node restarts and then the value
       * may be reset to 0. The value is never negative.
       * </pre>
       *
       * <code>optional int32 restartCount = 5;</code>
       * @param value The restartCount to set.
       * @return This builder for chaining.
       */
      public Builder setRestartCount(int value) {

        restartCount_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RestartCount holds the number of times the container has been restarted.
       * Kubelet makes an effort to always increment the value, but there
       * are cases when the state may be lost due to node restarts and then the value
       * may be reset to 0. The value is never negative.
       * </pre>
       *
       * <code>optional int32 restartCount = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearRestartCount() {
        bitField0_ = (bitField0_ & ~0x00000010);
        restartCount_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object image_ = "";
      /**
       * <pre>
       * Image is the name of container image that the container is running.
       * The container image may not match the image used in the PodSpec,
       * as it may have been resolved by the runtime.
       * More info: https://kubernetes.io/docs/concepts/containers/images.
       * </pre>
       *
       * <code>optional string image = 6;</code>
       * @return Whether the image field is set.
       */
      public boolean hasImage() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Image is the name of container image that the container is running.
       * The container image may not match the image used in the PodSpec,
       * as it may have been resolved by the runtime.
       * More info: https://kubernetes.io/docs/concepts/containers/images.
       * </pre>
       *
       * <code>optional string image = 6;</code>
       * @return The image.
       */
      public java.lang.String getImage() {
        java.lang.Object ref = image_;
        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()) {
            image_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Image is the name of container image that the container is running.
       * The container image may not match the image used in the PodSpec,
       * as it may have been resolved by the runtime.
       * More info: https://kubernetes.io/docs/concepts/containers/images.
       * </pre>
       *
       * <code>optional string image = 6;</code>
       * @return The bytes for image.
       */
      public com.google.protobuf.ByteString
          getImageBytes() {
        java.lang.Object ref = image_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          image_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Image is the name of container image that the container is running.
       * The container image may not match the image used in the PodSpec,
       * as it may have been resolved by the runtime.
       * More info: https://kubernetes.io/docs/concepts/containers/images.
       * </pre>
       *
       * <code>optional string image = 6;</code>
       * @param value The image to set.
       * @return This builder for chaining.
       */
      public Builder setImage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        image_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Image is the name of container image that the container is running.
       * The container image may not match the image used in the PodSpec,
       * as it may have been resolved by the runtime.
       * More info: https://kubernetes.io/docs/concepts/containers/images.
       * </pre>
       *
       * <code>optional string image = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearImage() {
        image_ = getDefaultInstance().getImage();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Image is the name of container image that the container is running.
       * The container image may not match the image used in the PodSpec,
       * as it may have been resolved by the runtime.
       * More info: https://kubernetes.io/docs/concepts/containers/images.
       * </pre>
       *
       * <code>optional string image = 6;</code>
       * @param value The bytes for image to set.
       * @return This builder for chaining.
       */
      public Builder setImageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        image_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object imageID_ = "";
      /**
       * <pre>
       * ImageID is the image ID of the container's image. The image ID may not
       * match the image ID of the image used in the PodSpec, as it may have been
       * resolved by the runtime.
       * </pre>
       *
       * <code>optional string imageID = 7;</code>
       * @return Whether the imageID field is set.
       */
      public boolean hasImageID() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * ImageID is the image ID of the container's image. The image ID may not
       * match the image ID of the image used in the PodSpec, as it may have been
       * resolved by the runtime.
       * </pre>
       *
       * <code>optional string imageID = 7;</code>
       * @return The imageID.
       */
      public java.lang.String getImageID() {
        java.lang.Object ref = imageID_;
        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()) {
            imageID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ImageID is the image ID of the container's image. The image ID may not
       * match the image ID of the image used in the PodSpec, as it may have been
       * resolved by the runtime.
       * </pre>
       *
       * <code>optional string imageID = 7;</code>
       * @return The bytes for imageID.
       */
      public com.google.protobuf.ByteString
          getImageIDBytes() {
        java.lang.Object ref = imageID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          imageID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ImageID is the image ID of the container's image. The image ID may not
       * match the image ID of the image used in the PodSpec, as it may have been
       * resolved by the runtime.
       * </pre>
       *
       * <code>optional string imageID = 7;</code>
       * @param value The imageID to set.
       * @return This builder for chaining.
       */
      public Builder setImageID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        imageID_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ImageID is the image ID of the container's image. The image ID may not
       * match the image ID of the image used in the PodSpec, as it may have been
       * resolved by the runtime.
       * </pre>
       *
       * <code>optional string imageID = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearImageID() {
        imageID_ = getDefaultInstance().getImageID();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ImageID is the image ID of the container's image. The image ID may not
       * match the image ID of the image used in the PodSpec, as it may have been
       * resolved by the runtime.
       * </pre>
       *
       * <code>optional string imageID = 7;</code>
       * @param value The bytes for imageID to set.
       * @return This builder for chaining.
       */
      public Builder setImageIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        imageID_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object containerID_ = "";
      /**
       * <pre>
       * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
       * Where type is a container runtime identifier, returned from Version call of CRI API
       * (for example "containerd").
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 8;</code>
       * @return Whether the containerID field is set.
       */
      public boolean hasContainerID() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
       * Where type is a container runtime identifier, returned from Version call of CRI API
       * (for example "containerd").
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 8;</code>
       * @return The containerID.
       */
      public java.lang.String getContainerID() {
        java.lang.Object ref = containerID_;
        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()) {
            containerID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
       * Where type is a container runtime identifier, returned from Version call of CRI API
       * (for example "containerd").
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 8;</code>
       * @return The bytes for containerID.
       */
      public com.google.protobuf.ByteString
          getContainerIDBytes() {
        java.lang.Object ref = containerID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          containerID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
       * Where type is a container runtime identifier, returned from Version call of CRI API
       * (for example "containerd").
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 8;</code>
       * @param value The containerID to set.
       * @return This builder for chaining.
       */
      public Builder setContainerID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        containerID_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
       * Where type is a container runtime identifier, returned from Version call of CRI API
       * (for example "containerd").
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearContainerID() {
        containerID_ = getDefaultInstance().getContainerID();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'.
       * Where type is a container runtime identifier, returned from Version call of CRI API
       * (for example "containerd").
       * +optional
       * </pre>
       *
       * <code>optional string containerID = 8;</code>
       * @param value The bytes for containerID to set.
       * @return This builder for chaining.
       */
      public Builder setContainerIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        containerID_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private boolean started_ ;
      /**
       * <pre>
       * Started indicates whether the container has finished its postStart lifecycle hook
       * and passed its startup probe.
       * Initialized as false, becomes true after startupProbe is considered
       * successful. Resets to false when the container is restarted, or if kubelet
       * loses state temporarily. In both cases, startup probes will run again.
       * Is always true when no startupProbe is defined and container is running and
       * has passed the postStart lifecycle hook. The null value must be treated the
       * same as false.
       * +optional
       * </pre>
       *
       * <code>optional bool started = 9;</code>
       * @return Whether the started field is set.
       */
      @java.lang.Override
      public boolean hasStarted() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * Started indicates whether the container has finished its postStart lifecycle hook
       * and passed its startup probe.
       * Initialized as false, becomes true after startupProbe is considered
       * successful. Resets to false when the container is restarted, or if kubelet
       * loses state temporarily. In both cases, startup probes will run again.
       * Is always true when no startupProbe is defined and container is running and
       * has passed the postStart lifecycle hook. The null value must be treated the
       * same as false.
       * +optional
       * </pre>
       *
       * <code>optional bool started = 9;</code>
       * @return The started.
       */
      @java.lang.Override
      public boolean getStarted() {
        return started_;
      }
      /**
       * <pre>
       * Started indicates whether the container has finished its postStart lifecycle hook
       * and passed its startup probe.
       * Initialized as false, becomes true after startupProbe is considered
       * successful. Resets to false when the container is restarted, or if kubelet
       * loses state temporarily. In both cases, startup probes will run again.
       * Is always true when no startupProbe is defined and container is running and
       * has passed the postStart lifecycle hook. The null value must be treated the
       * same as false.
       * +optional
       * </pre>
       *
       * <code>optional bool started = 9;</code>
       * @param value The started to set.
       * @return This builder for chaining.
       */
      public Builder setStarted(boolean value) {

        started_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Started indicates whether the container has finished its postStart lifecycle hook
       * and passed its startup probe.
       * Initialized as false, becomes true after startupProbe is considered
       * successful. Resets to false when the container is restarted, or if kubelet
       * loses state temporarily. In both cases, startup probes will run again.
       * Is always true when no startupProbe is defined and container is running and
       * has passed the postStart lifecycle hook. The null value must be treated the
       * same as false.
       * +optional
       * </pre>
       *
       * <code>optional bool started = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearStarted() {
        bitField0_ = (bitField0_ & ~0x00000100);
        started_ = false;
        onChanged();
        return this;
      }

      private static final class AllocatedResourcesConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return AllocatedResourcesDefaultEntryHolder.defaultEntry;
        }
      };
      private static final AllocatedResourcesConverter allocatedResourcesConverter = new AllocatedResourcesConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> allocatedResources_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetAllocatedResources() {
        if (allocatedResources_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(allocatedResourcesConverter);
        }
        return allocatedResources_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableAllocatedResources() {
        if (allocatedResources_ == null) {
          allocatedResources_ = new com.google.protobuf.MapFieldBuilder<>(allocatedResourcesConverter);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return allocatedResources_;
      }
      public int getAllocatedResourcesCount() {
        return internalGetAllocatedResources().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * AllocatedResources represents the compute resources allocated for this container by the
       * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
       * and after successfully admitting desired pod resize.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
       */
      @java.lang.Override
      public boolean containsAllocatedResources(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetAllocatedResources().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getAllocatedResourcesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatedResources() {
        return getAllocatedResourcesMap();
      }
      /**
       * <pre>
       * AllocatedResources represents the compute resources allocated for this container by the
       * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
       * and after successfully admitting desired pod resize.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatedResourcesMap() {
        return internalGetAllocatedResources().getImmutableMap();
      }
      /**
       * <pre>
       * AllocatedResources represents the compute resources allocated for this container by the
       * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
       * and after successfully admitting desired pod resize.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableAllocatedResources().ensureBuilderMap();
        return map.containsKey(key) ? allocatedResourcesConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * AllocatedResources represents the compute resources allocated for this container by the
       * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
       * and after successfully admitting desired pod resize.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableAllocatedResources().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return allocatedResourcesConverter.build(map.get(key));
      }
      public Builder clearAllocatedResources() {
        bitField0_ = (bitField0_ & ~0x00000200);
        internalGetMutableAllocatedResources().clear();
        return this;
      }
      /**
       * <pre>
       * AllocatedResources represents the compute resources allocated for this container by the
       * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
       * and after successfully admitting desired pod resize.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
       */
      public Builder removeAllocatedResources(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableAllocatedResources().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableAllocatedResources() {
        bitField0_ |= 0x00000200;
        return internalGetMutableAllocatedResources().ensureMessageMap();
      }
      /**
       * <pre>
       * AllocatedResources represents the compute resources allocated for this container by the
       * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
       * and after successfully admitting desired pod resize.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
       */
      public Builder putAllocatedResources(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableAllocatedResources().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <pre>
       * AllocatedResources represents the compute resources allocated for this container by the
       * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
       * and after successfully admitting desired pod resize.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
       */
      public Builder putAllAllocatedResources(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableAllocatedResources().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <pre>
       * AllocatedResources represents the compute resources allocated for this container by the
       * node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission
       * and after successfully admitting desired pod resize.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 10;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putAllocatedResourcesBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableAllocatedResources().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private io.kubernetes.client.proto.V1.ResourceRequirements resources_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceRequirements, io.kubernetes.client.proto.V1.ResourceRequirements.Builder, io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder> resourcesBuilder_;
      /**
       * <pre>
       * Resources represents the compute resource requests and limits that have been successfully
       * enacted on the running container after it has been started or has been successfully resized.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
       * @return Whether the resources field is set.
       */
      public boolean hasResources() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * Resources represents the compute resource requests and limits that have been successfully
       * enacted on the running container after it has been started or has been successfully resized.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
       * @return The resources.
       */
      public io.kubernetes.client.proto.V1.ResourceRequirements getResources() {
        if (resourcesBuilder_ == null) {
          return resources_ == null ? io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
        } else {
          return resourcesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Resources represents the compute resource requests and limits that have been successfully
       * enacted on the running container after it has been started or has been successfully resized.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
       */
      public Builder setResources(io.kubernetes.client.proto.V1.ResourceRequirements value) {
        if (resourcesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resources_ = value;
        } else {
          resourcesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resources represents the compute resource requests and limits that have been successfully
       * enacted on the running container after it has been started or has been successfully resized.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
       */
      public Builder setResources(
          io.kubernetes.client.proto.V1.ResourceRequirements.Builder builderForValue) {
        if (resourcesBuilder_ == null) {
          resources_ = builderForValue.build();
        } else {
          resourcesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resources represents the compute resource requests and limits that have been successfully
       * enacted on the running container after it has been started or has been successfully resized.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
       */
      public Builder mergeResources(io.kubernetes.client.proto.V1.ResourceRequirements value) {
        if (resourcesBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            resources_ != null &&
            resources_ != io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance()) {
            getResourcesBuilder().mergeFrom(value);
          } else {
            resources_ = value;
          }
        } else {
          resourcesBuilder_.mergeFrom(value);
        }
        if (resources_ != null) {
          bitField0_ |= 0x00000400;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Resources represents the compute resource requests and limits that have been successfully
       * enacted on the running container after it has been started or has been successfully resized.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
       */
      public Builder clearResources() {
        bitField0_ = (bitField0_ & ~0x00000400);
        resources_ = null;
        if (resourcesBuilder_ != null) {
          resourcesBuilder_.dispose();
          resourcesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resources represents the compute resource requests and limits that have been successfully
       * enacted on the running container after it has been started or has been successfully resized.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceRequirements.Builder getResourcesBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getResourcesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Resources represents the compute resource requests and limits that have been successfully
       * enacted on the running container after it has been started or has been successfully resized.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder getResourcesOrBuilder() {
        if (resourcesBuilder_ != null) {
          return resourcesBuilder_.getMessageOrBuilder();
        } else {
          return resources_ == null ?
              io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
        }
      }
      /**
       * <pre>
       * Resources represents the compute resource requests and limits that have been successfully
       * enacted on the running container after it has been started or has been successfully resized.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceRequirements, io.kubernetes.client.proto.V1.ResourceRequirements.Builder, io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder> 
          getResourcesFieldBuilder() {
        if (resourcesBuilder_ == null) {
          resourcesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ResourceRequirements, io.kubernetes.client.proto.V1.ResourceRequirements.Builder, io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder>(
                  getResources(),
                  getParentForChildren(),
                  isClean());
          resources_ = null;
        }
        return resourcesBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.VolumeMountStatus> volumeMounts_ =
        java.util.Collections.emptyList();
      private void ensureVolumeMountsIsMutable() {
        if (!((bitField0_ & 0x00000800) != 0)) {
          volumeMounts_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.VolumeMountStatus>(volumeMounts_);
          bitField0_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeMountStatus, io.kubernetes.client.proto.V1.VolumeMountStatus.Builder, io.kubernetes.client.proto.V1.VolumeMountStatusOrBuilder> volumeMountsBuilder_;

      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeMountStatus> getVolumeMountsList() {
        if (volumeMountsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(volumeMounts_);
        } else {
          return volumeMountsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public int getVolumeMountsCount() {
        if (volumeMountsBuilder_ == null) {
          return volumeMounts_.size();
        } else {
          return volumeMountsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMountStatus getVolumeMounts(int index) {
        if (volumeMountsBuilder_ == null) {
          return volumeMounts_.get(index);
        } else {
          return volumeMountsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public Builder setVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMountStatus value) {
        if (volumeMountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeMountsIsMutable();
          volumeMounts_.set(index, value);
          onChanged();
        } else {
          volumeMountsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public Builder setVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMountStatus.Builder builderForValue) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.set(index, builderForValue.build());
          onChanged();
        } else {
          volumeMountsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public Builder addVolumeMounts(io.kubernetes.client.proto.V1.VolumeMountStatus value) {
        if (volumeMountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(value);
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public Builder addVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMountStatus value) {
        if (volumeMountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(index, value);
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public Builder addVolumeMounts(
          io.kubernetes.client.proto.V1.VolumeMountStatus.Builder builderForValue) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(builderForValue.build());
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public Builder addVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMountStatus.Builder builderForValue) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(index, builderForValue.build());
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public Builder addAllVolumeMounts(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.VolumeMountStatus> values) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, volumeMounts_);
          onChanged();
        } else {
          volumeMountsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public Builder clearVolumeMounts() {
        if (volumeMountsBuilder_ == null) {
          volumeMounts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          volumeMountsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public Builder removeVolumeMounts(int index) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.remove(index);
          onChanged();
        } else {
          volumeMountsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMountStatus.Builder getVolumeMountsBuilder(
          int index) {
        return getVolumeMountsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMountStatusOrBuilder getVolumeMountsOrBuilder(
          int index) {
        if (volumeMountsBuilder_ == null) {
          return volumeMounts_.get(index);  } else {
          return volumeMountsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeMountStatusOrBuilder> 
           getVolumeMountsOrBuilderList() {
        if (volumeMountsBuilder_ != null) {
          return volumeMountsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(volumeMounts_);
        }
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMountStatus.Builder addVolumeMountsBuilder() {
        return getVolumeMountsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.VolumeMountStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMountStatus.Builder addVolumeMountsBuilder(
          int index) {
        return getVolumeMountsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.VolumeMountStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Status of volume mounts.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * +featureGate=RecursiveReadOnlyMounts
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMountStatus volumeMounts = 12;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeMountStatus.Builder> 
           getVolumeMountsBuilderList() {
        return getVolumeMountsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeMountStatus, io.kubernetes.client.proto.V1.VolumeMountStatus.Builder, io.kubernetes.client.proto.V1.VolumeMountStatusOrBuilder> 
          getVolumeMountsFieldBuilder() {
        if (volumeMountsBuilder_ == null) {
          volumeMountsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.VolumeMountStatus, io.kubernetes.client.proto.V1.VolumeMountStatus.Builder, io.kubernetes.client.proto.V1.VolumeMountStatusOrBuilder>(
                  volumeMounts_,
                  ((bitField0_ & 0x00000800) != 0),
                  getParentForChildren(),
                  isClean());
          volumeMounts_ = null;
        }
        return volumeMountsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ContainerStatus)
    }

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

    public static io.kubernetes.client.proto.V1.ContainerStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface DaemonEndpointOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.DaemonEndpoint)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Port number of the given endpoint.
     * </pre>
     *
     * <code>optional int32 Port = 1;</code>
     * @return Whether the port field is set.
     */
    boolean hasPort();
    /**
     * <pre>
     * Port number of the given endpoint.
     * </pre>
     *
     * <code>optional int32 Port = 1;</code>
     * @return The port.
     */
    int getPort();
  }
  /**
   * <pre>
   * DaemonEndpoint contains information about a single Daemon endpoint.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.DaemonEndpoint}
   */
  public static final class DaemonEndpoint extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.DaemonEndpoint)
      DaemonEndpointOrBuilder {
  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= */ "",
        DaemonEndpoint.class.getName());
    }
    // Use DaemonEndpoint.newBuilder() to construct.
    private DaemonEndpoint(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private DaemonEndpoint() {
    }

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

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

    private int bitField0_;
    public static final int PORT_FIELD_NUMBER = 1;
    private int port_ = 0;
    /**
     * <pre>
     * Port number of the given endpoint.
     * </pre>
     *
     * <code>optional int32 Port = 1;</code>
     * @return Whether the port field is set.
     */
    @java.lang.Override
    public boolean hasPort() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Port number of the given endpoint.
     * </pre>
     *
     * <code>optional int32 Port = 1;</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)) {
        output.writeInt32(1, 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.CodedOutputStream
          .computeInt32Size(1, 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.V1.DaemonEndpoint)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.DaemonEndpoint other = (io.kubernetes.client.proto.V1.DaemonEndpoint) obj;

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

    public static io.kubernetes.client.proto.V1.DaemonEndpoint 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.V1.DaemonEndpoint parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.DaemonEndpoint 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.V1.DaemonEndpoint 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>
     * DaemonEndpoint contains information about a single Daemon endpoint.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.DaemonEndpoint}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.DaemonEndpoint)
        io.kubernetes.client.proto.V1.DaemonEndpointOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_DaemonEndpoint_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.DaemonEndpoint.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.DaemonEndpoint result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.port_ = port_;
          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.V1.DaemonEndpoint) {
          return mergeFrom((io.kubernetes.client.proto.V1.DaemonEndpoint)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.DaemonEndpoint other) {
        if (other == io.kubernetes.client.proto.V1.DaemonEndpoint.getDefaultInstance()) return this;
        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 8: {
                port_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int port_ ;
      /**
       * <pre>
       * Port number of the given endpoint.
       * </pre>
       *
       * <code>optional int32 Port = 1;</code>
       * @return Whether the port field is set.
       */
      @java.lang.Override
      public boolean hasPort() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Port number of the given endpoint.
       * </pre>
       *
       * <code>optional int32 Port = 1;</code>
       * @return The port.
       */
      @java.lang.Override
      public int getPort() {
        return port_;
      }
      /**
       * <pre>
       * Port number of the given endpoint.
       * </pre>
       *
       * <code>optional int32 Port = 1;</code>
       * @param value The port to set.
       * @return This builder for chaining.
       */
      public Builder setPort(int value) {

        port_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Port number of the given endpoint.
       * </pre>
       *
       * <code>optional int32 Port = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        bitField0_ = (bitField0_ & ~0x00000001);
        port_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.DaemonEndpoint)
    }

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

    public static io.kubernetes.client.proto.V1.DaemonEndpoint getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface DownwardAPIProjectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.DownwardAPIProjection)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Items is a list of DownwardAPIVolume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> 
        getItemsList();
    /**
     * <pre>
     * Items is a list of DownwardAPIVolume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    io.kubernetes.client.proto.V1.DownwardAPIVolumeFile getItems(int index);
    /**
     * <pre>
     * Items is a list of DownwardAPIVolume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is a list of DownwardAPIVolume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is a list of DownwardAPIVolume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Represents downward API info for projecting into a projected volume.
   * Note that this is identical to a downwardAPI volume source without the default
   * mode.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.DownwardAPIProjection}
   */
  public static final class DownwardAPIProjection extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.DownwardAPIProjection)
      DownwardAPIProjectionOrBuilder {
  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= */ "",
        DownwardAPIProjection.class.getName());
    }
    // Use DownwardAPIProjection.newBuilder() to construct.
    private DownwardAPIProjection(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private DownwardAPIProjection() {
      items_ = java.util.Collections.emptyList();
    }

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

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

    public static final int ITEMS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> items_;
    /**
     * <pre>
     * Items is a list of DownwardAPIVolume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of DownwardAPIVolume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of DownwardAPIVolume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is a list of DownwardAPIVolume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.DownwardAPIVolumeFile getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is a list of DownwardAPIVolume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder 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 {
      for (int i = 0; i < items_.size(); i++) {
        output.writeMessage(1, items_.get(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 < items_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, 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.V1.DownwardAPIProjection)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.DownwardAPIProjection other = (io.kubernetes.client.proto.V1.DownwardAPIProjection) obj;

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

    public static io.kubernetes.client.proto.V1.DownwardAPIProjection 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.V1.DownwardAPIProjection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.DownwardAPIProjection 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.V1.DownwardAPIProjection 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>
     * Represents downward API info for projecting into a projected volume.
     * Note that this is identical to a downwardAPI volume source without the default
     * mode.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.DownwardAPIProjection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.DownwardAPIProjection)
        io.kubernetes.client.proto.V1.DownwardAPIProjectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_DownwardAPIProjection_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.DownwardAPIProjection.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
        } else {
          items_ = null;
          itemsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.DownwardAPIProjection result) {
        int from_bitField0_ = bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.DownwardAPIProjection other) {
        if (other == io.kubernetes.client.proto.V1.DownwardAPIProjection.getDefaultInstance()) return this;
        if (itemsBuilder_ == null) {
          if (!other.items_.isEmpty()) {
            if (items_.isEmpty()) {
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureItemsIsMutable();
              items_.addAll(other.items_);
            }
            onChanged();
          }
        } else {
          if (!other.items_.isEmpty()) {
            if (itemsBuilder_.isEmpty()) {
              itemsBuilder_.dispose();
              itemsBuilder_ = null;
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000001);
              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: {
                io.kubernetes.client.proto.V1.DownwardAPIVolumeFile m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.parser(),
                        extensionRegistry);
                if (itemsBuilder_ == null) {
                  ensureItemsIsMutable();
                  items_.add(m);
                } else {
                  itemsBuilder_.addMessage(m);
                }
                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.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile>(items_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.DownwardAPIVolumeFile, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder, io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeFile getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.DownwardAPIVolumeFile value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of DownwardAPIVolume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.DownwardAPIVolumeFile, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder, io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.DownwardAPIVolumeFile, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder, io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.DownwardAPIProjection)
    }

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

    public static io.kubernetes.client.proto.V1.DownwardAPIProjection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface DownwardAPIVolumeFileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.DownwardAPIVolumeFile)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
     * @return Whether the fieldRef field is set.
     */
    boolean hasFieldRef();
    /**
     * <pre>
     * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
     * @return The fieldRef.
     */
    io.kubernetes.client.proto.V1.ObjectFieldSelector getFieldRef();
    /**
     * <pre>
     * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
     */
    io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder getFieldRefOrBuilder();

    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
     * @return Whether the resourceFieldRef field is set.
     */
    boolean hasResourceFieldRef();
    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
     * @return The resourceFieldRef.
     */
    io.kubernetes.client.proto.V1.ResourceFieldSelector getResourceFieldRef();
    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
     */
    io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder getResourceFieldRefOrBuilder();

    /**
     * <pre>
     * Optional: mode bits used to set permissions on this file, must be an octal value
     * between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * If not specified, the volume defaultMode will be used.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 mode = 4;</code>
     * @return Whether the mode field is set.
     */
    boolean hasMode();
    /**
     * <pre>
     * Optional: mode bits used to set permissions on this file, must be an octal value
     * between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * If not specified, the volume defaultMode will be used.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 mode = 4;</code>
     * @return The mode.
     */
    int getMode();
  }
  /**
   * <pre>
   * DownwardAPIVolumeFile represents information to create the file containing the pod field
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.DownwardAPIVolumeFile}
   */
  public static final class DownwardAPIVolumeFile extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.DownwardAPIVolumeFile)
      DownwardAPIVolumeFileOrBuilder {
  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= */ "",
        DownwardAPIVolumeFile.class.getName());
    }
    // Use DownwardAPIVolumeFile.newBuilder() to construct.
    private DownwardAPIVolumeFile(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private DownwardAPIVolumeFile() {
      path_ = "";
    }

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

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

    private int bitField0_;
    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
     * </pre>
     *
     * <code>optional string path = 1;</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>
     * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
     * </pre>
     *
     * <code>optional string path = 1;</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 FIELDREF_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.ObjectFieldSelector fieldRef_;
    /**
     * <pre>
     * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
     * @return Whether the fieldRef field is set.
     */
    @java.lang.Override
    public boolean hasFieldRef() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
     * @return The fieldRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectFieldSelector getFieldRef() {
      return fieldRef_ == null ? io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance() : fieldRef_;
    }
    /**
     * <pre>
     * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder getFieldRefOrBuilder() {
      return fieldRef_ == null ? io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance() : fieldRef_;
    }

    public static final int RESOURCEFIELDREF_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.ResourceFieldSelector resourceFieldRef_;
    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
     * @return Whether the resourceFieldRef field is set.
     */
    @java.lang.Override
    public boolean hasResourceFieldRef() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
     * @return The resourceFieldRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceFieldSelector getResourceFieldRef() {
      return resourceFieldRef_ == null ? io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance() : resourceFieldRef_;
    }
    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder getResourceFieldRefOrBuilder() {
      return resourceFieldRef_ == null ? io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance() : resourceFieldRef_;
    }

    public static final int MODE_FIELD_NUMBER = 4;
    private int mode_ = 0;
    /**
     * <pre>
     * Optional: mode bits used to set permissions on this file, must be an octal value
     * between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * If not specified, the volume defaultMode will be used.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 mode = 4;</code>
     * @return Whether the mode field is set.
     */
    @java.lang.Override
    public boolean hasMode() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Optional: mode bits used to set permissions on this file, must be an octal value
     * between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * If not specified, the volume defaultMode will be used.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 mode = 4;</code>
     * @return The mode.
     */
    @java.lang.Override
    public int getMode() {
      return mode_;
    }

    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, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getFieldRef());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getResourceFieldRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt32(4, mode_);
      }
      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, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getFieldRef());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getResourceFieldRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, mode_);
      }
      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.V1.DownwardAPIVolumeFile)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.DownwardAPIVolumeFile other = (io.kubernetes.client.proto.V1.DownwardAPIVolumeFile) obj;

      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (hasFieldRef() != other.hasFieldRef()) return false;
      if (hasFieldRef()) {
        if (!getFieldRef()
            .equals(other.getFieldRef())) return false;
      }
      if (hasResourceFieldRef() != other.hasResourceFieldRef()) return false;
      if (hasResourceFieldRef()) {
        if (!getResourceFieldRef()
            .equals(other.getResourceFieldRef())) return false;
      }
      if (hasMode() != other.hasMode()) return false;
      if (hasMode()) {
        if (getMode()
            != other.getMode()) 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 (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasFieldRef()) {
        hash = (37 * hash) + FIELDREF_FIELD_NUMBER;
        hash = (53 * hash) + getFieldRef().hashCode();
      }
      if (hasResourceFieldRef()) {
        hash = (37 * hash) + RESOURCEFIELDREF_FIELD_NUMBER;
        hash = (53 * hash) + getResourceFieldRef().hashCode();
      }
      if (hasMode()) {
        hash = (37 * hash) + MODE_FIELD_NUMBER;
        hash = (53 * hash) + getMode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.DownwardAPIVolumeFile 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.V1.DownwardAPIVolumeFile parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.DownwardAPIVolumeFile 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.V1.DownwardAPIVolumeFile 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>
     * DownwardAPIVolumeFile represents information to create the file containing the pod field
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.DownwardAPIVolumeFile}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.DownwardAPIVolumeFile)
        io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_DownwardAPIVolumeFile_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getFieldRefFieldBuilder();
          getResourceFieldRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        fieldRef_ = null;
        if (fieldRefBuilder_ != null) {
          fieldRefBuilder_.dispose();
          fieldRefBuilder_ = null;
        }
        resourceFieldRef_ = null;
        if (resourceFieldRefBuilder_ != null) {
          resourceFieldRefBuilder_.dispose();
          resourceFieldRefBuilder_ = null;
        }
        mode_ = 0;
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.DownwardAPIVolumeFile result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fieldRef_ = fieldRefBuilder_ == null
              ? fieldRef_
              : fieldRefBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.resourceFieldRef_ = resourceFieldRefBuilder_ == null
              ? resourceFieldRef_
              : resourceFieldRefBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.mode_ = mode_;
          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.V1.DownwardAPIVolumeFile) {
          return mergeFrom((io.kubernetes.client.proto.V1.DownwardAPIVolumeFile)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.DownwardAPIVolumeFile other) {
        if (other == io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.getDefaultInstance()) return this;
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFieldRef()) {
          mergeFieldRef(other.getFieldRef());
        }
        if (other.hasResourceFieldRef()) {
          mergeResourceFieldRef(other.getResourceFieldRef());
        }
        if (other.hasMode()) {
          setMode(other.getMode());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getFieldRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getResourceFieldRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                mode_ = 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 path_ = "";
      /**
       * <pre>
       * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
       * </pre>
       *
       * <code>optional string path = 1;</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>
       * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
       * </pre>
       *
       * <code>optional string path = 1;</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>
       * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
       * </pre>
       *
       * <code>optional string path = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.ObjectFieldSelector fieldRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectFieldSelector, io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder, io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder> fieldRefBuilder_;
      /**
       * <pre>
       * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
       * @return Whether the fieldRef field is set.
       */
      public boolean hasFieldRef() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
       * @return The fieldRef.
       */
      public io.kubernetes.client.proto.V1.ObjectFieldSelector getFieldRef() {
        if (fieldRefBuilder_ == null) {
          return fieldRef_ == null ? io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance() : fieldRef_;
        } else {
          return fieldRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
       */
      public Builder setFieldRef(io.kubernetes.client.proto.V1.ObjectFieldSelector value) {
        if (fieldRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fieldRef_ = value;
        } else {
          fieldRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
       */
      public Builder setFieldRef(
          io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder builderForValue) {
        if (fieldRefBuilder_ == null) {
          fieldRef_ = builderForValue.build();
        } else {
          fieldRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
       */
      public Builder mergeFieldRef(io.kubernetes.client.proto.V1.ObjectFieldSelector value) {
        if (fieldRefBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            fieldRef_ != null &&
            fieldRef_ != io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance()) {
            getFieldRefBuilder().mergeFrom(value);
          } else {
            fieldRef_ = value;
          }
        } else {
          fieldRefBuilder_.mergeFrom(value);
        }
        if (fieldRef_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
       */
      public Builder clearFieldRef() {
        bitField0_ = (bitField0_ & ~0x00000002);
        fieldRef_ = null;
        if (fieldRefBuilder_ != null) {
          fieldRefBuilder_.dispose();
          fieldRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder getFieldRefBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getFieldRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder getFieldRefOrBuilder() {
        if (fieldRefBuilder_ != null) {
          return fieldRefBuilder_.getMessageOrBuilder();
        } else {
          return fieldRef_ == null ?
              io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance() : fieldRef_;
        }
      }
      /**
       * <pre>
       * Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectFieldSelector, io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder, io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder> 
          getFieldRefFieldBuilder() {
        if (fieldRefBuilder_ == null) {
          fieldRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ObjectFieldSelector, io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder, io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder>(
                  getFieldRef(),
                  getParentForChildren(),
                  isClean());
          fieldRef_ = null;
        }
        return fieldRefBuilder_;
      }

      private io.kubernetes.client.proto.V1.ResourceFieldSelector resourceFieldRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceFieldSelector, io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder, io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder> resourceFieldRefBuilder_;
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
       * @return Whether the resourceFieldRef field is set.
       */
      public boolean hasResourceFieldRef() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
       * @return The resourceFieldRef.
       */
      public io.kubernetes.client.proto.V1.ResourceFieldSelector getResourceFieldRef() {
        if (resourceFieldRefBuilder_ == null) {
          return resourceFieldRef_ == null ? io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance() : resourceFieldRef_;
        } else {
          return resourceFieldRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
       */
      public Builder setResourceFieldRef(io.kubernetes.client.proto.V1.ResourceFieldSelector value) {
        if (resourceFieldRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resourceFieldRef_ = value;
        } else {
          resourceFieldRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
       */
      public Builder setResourceFieldRef(
          io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder builderForValue) {
        if (resourceFieldRefBuilder_ == null) {
          resourceFieldRef_ = builderForValue.build();
        } else {
          resourceFieldRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
       */
      public Builder mergeResourceFieldRef(io.kubernetes.client.proto.V1.ResourceFieldSelector value) {
        if (resourceFieldRefBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            resourceFieldRef_ != null &&
            resourceFieldRef_ != io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance()) {
            getResourceFieldRefBuilder().mergeFrom(value);
          } else {
            resourceFieldRef_ = value;
          }
        } else {
          resourceFieldRefBuilder_.mergeFrom(value);
        }
        if (resourceFieldRef_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
       */
      public Builder clearResourceFieldRef() {
        bitField0_ = (bitField0_ & ~0x00000004);
        resourceFieldRef_ = null;
        if (resourceFieldRefBuilder_ != null) {
          resourceFieldRefBuilder_.dispose();
          resourceFieldRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder getResourceFieldRefBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getResourceFieldRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder getResourceFieldRefOrBuilder() {
        if (resourceFieldRefBuilder_ != null) {
          return resourceFieldRefBuilder_.getMessageOrBuilder();
        } else {
          return resourceFieldRef_ == null ?
              io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance() : resourceFieldRef_;
        }
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceFieldSelector, io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder, io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder> 
          getResourceFieldRefFieldBuilder() {
        if (resourceFieldRefBuilder_ == null) {
          resourceFieldRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ResourceFieldSelector, io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder, io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder>(
                  getResourceFieldRef(),
                  getParentForChildren(),
                  isClean());
          resourceFieldRef_ = null;
        }
        return resourceFieldRefBuilder_;
      }

      private int mode_ ;
      /**
       * <pre>
       * Optional: mode bits used to set permissions on this file, must be an octal value
       * between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * If not specified, the volume defaultMode will be used.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 mode = 4;</code>
       * @return Whether the mode field is set.
       */
      @java.lang.Override
      public boolean hasMode() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Optional: mode bits used to set permissions on this file, must be an octal value
       * between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * If not specified, the volume defaultMode will be used.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 mode = 4;</code>
       * @return The mode.
       */
      @java.lang.Override
      public int getMode() {
        return mode_;
      }
      /**
       * <pre>
       * Optional: mode bits used to set permissions on this file, must be an octal value
       * between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * If not specified, the volume defaultMode will be used.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 mode = 4;</code>
       * @param value The mode to set.
       * @return This builder for chaining.
       */
      public Builder setMode(int value) {

        mode_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: mode bits used to set permissions on this file, must be an octal value
       * between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * If not specified, the volume defaultMode will be used.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 mode = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMode() {
        bitField0_ = (bitField0_ & ~0x00000008);
        mode_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.DownwardAPIVolumeFile)
    }

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

    public static io.kubernetes.client.proto.V1.DownwardAPIVolumeFile getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface DownwardAPIVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.DownwardAPIVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Items is a list of downward API volume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> 
        getItemsList();
    /**
     * <pre>
     * Items is a list of downward API volume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    io.kubernetes.client.proto.V1.DownwardAPIVolumeFile getItems(int index);
    /**
     * <pre>
     * Items is a list of downward API volume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is a list of downward API volume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is a list of downward API volume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder getItemsOrBuilder(
        int index);

    /**
     * <pre>
     * Optional: mode bits to use on created files by default. Must be a
     * Optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 2;</code>
     * @return Whether the defaultMode field is set.
     */
    boolean hasDefaultMode();
    /**
     * <pre>
     * Optional: mode bits to use on created files by default. Must be a
     * Optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 2;</code>
     * @return The defaultMode.
     */
    int getDefaultMode();
  }
  /**
   * <pre>
   * DownwardAPIVolumeSource represents a volume containing downward API info.
   * Downward API volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.DownwardAPIVolumeSource}
   */
  public static final class DownwardAPIVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.DownwardAPIVolumeSource)
      DownwardAPIVolumeSourceOrBuilder {
  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= */ "",
        DownwardAPIVolumeSource.class.getName());
    }
    // Use DownwardAPIVolumeSource.newBuilder() to construct.
    private DownwardAPIVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private DownwardAPIVolumeSource() {
      items_ = java.util.Collections.emptyList();
    }

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

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

    private int bitField0_;
    public static final int ITEMS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> items_;
    /**
     * <pre>
     * Items is a list of downward API volume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of downward API volume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of downward API volume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is a list of downward API volume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.DownwardAPIVolumeFile getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is a list of downward API volume file
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

    public static final int DEFAULTMODE_FIELD_NUMBER = 2;
    private int defaultMode_ = 0;
    /**
     * <pre>
     * Optional: mode bits to use on created files by default. Must be a
     * Optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 2;</code>
     * @return Whether the defaultMode field is set.
     */
    @java.lang.Override
    public boolean hasDefaultMode() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Optional: mode bits to use on created files by default. Must be a
     * Optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 2;</code>
     * @return The defaultMode.
     */
    @java.lang.Override
    public int getDefaultMode() {
      return defaultMode_;
    }

    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 < items_.size(); i++) {
        output.writeMessage(1, items_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(2, defaultMode_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < items_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, items_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, defaultMode_);
      }
      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.V1.DownwardAPIVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.DownwardAPIVolumeSource other = (io.kubernetes.client.proto.V1.DownwardAPIVolumeSource) obj;

      if (!getItemsList()
          .equals(other.getItemsList())) return false;
      if (hasDefaultMode() != other.hasDefaultMode()) return false;
      if (hasDefaultMode()) {
        if (getDefaultMode()
            != other.getDefaultMode()) 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 (getItemsCount() > 0) {
        hash = (37 * hash) + ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getItemsList().hashCode();
      }
      if (hasDefaultMode()) {
        hash = (37 * hash) + DEFAULTMODE_FIELD_NUMBER;
        hash = (53 * hash) + getDefaultMode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.DownwardAPIVolumeSource 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.V1.DownwardAPIVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.DownwardAPIVolumeSource 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.V1.DownwardAPIVolumeSource 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>
     * DownwardAPIVolumeSource represents a volume containing downward API info.
     * Downward API volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.DownwardAPIVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.DownwardAPIVolumeSource)
        io.kubernetes.client.proto.V1.DownwardAPIVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_DownwardAPIVolumeSource_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
        } else {
          items_ = null;
          itemsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        defaultMode_ = 0;
        return this;
      }

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.DownwardAPIVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.defaultMode_ = defaultMode_;
          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.V1.DownwardAPIVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.DownwardAPIVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.DownwardAPIVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.getDefaultInstance()) return this;
        if (itemsBuilder_ == null) {
          if (!other.items_.isEmpty()) {
            if (items_.isEmpty()) {
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureItemsIsMutable();
              items_.addAll(other.items_);
            }
            onChanged();
          }
        } else {
          if (!other.items_.isEmpty()) {
            if (itemsBuilder_.isEmpty()) {
              itemsBuilder_.dispose();
              itemsBuilder_ = null;
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000001);
              itemsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getItemsFieldBuilder() : null;
            } else {
              itemsBuilder_.addAllMessages(other.items_);
            }
          }
        }
        if (other.hasDefaultMode()) {
          setDefaultMode(other.getDefaultMode());
        }
        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.V1.DownwardAPIVolumeFile m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.parser(),
                        extensionRegistry);
                if (itemsBuilder_ == null) {
                  ensureItemsIsMutable();
                  items_.add(m);
                } else {
                  itemsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 16: {
                defaultMode_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              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.V1.DownwardAPIVolumeFile> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile>(items_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.DownwardAPIVolumeFile, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder, io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeFile getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.DownwardAPIVolumeFile value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.DownwardAPIVolumeFile> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of downward API volume file
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.DownwardAPIVolumeFile items = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.DownwardAPIVolumeFile, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder, io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.DownwardAPIVolumeFile, io.kubernetes.client.proto.V1.DownwardAPIVolumeFile.Builder, io.kubernetes.client.proto.V1.DownwardAPIVolumeFileOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      private int defaultMode_ ;
      /**
       * <pre>
       * Optional: mode bits to use on created files by default. Must be a
       * Optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 2;</code>
       * @return Whether the defaultMode field is set.
       */
      @java.lang.Override
      public boolean hasDefaultMode() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Optional: mode bits to use on created files by default. Must be a
       * Optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 2;</code>
       * @return The defaultMode.
       */
      @java.lang.Override
      public int getDefaultMode() {
        return defaultMode_;
      }
      /**
       * <pre>
       * Optional: mode bits to use on created files by default. Must be a
       * Optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 2;</code>
       * @param value The defaultMode to set.
       * @return This builder for chaining.
       */
      public Builder setDefaultMode(int value) {

        defaultMode_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: mode bits to use on created files by default. Must be a
       * Optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDefaultMode() {
        bitField0_ = (bitField0_ & ~0x00000002);
        defaultMode_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.DownwardAPIVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.DownwardAPIVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EmptyDirVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EmptyDirVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * medium represents what type of storage medium should back this directory.
     * The default is "" which means to use the node's default medium.
     * Must be an empty string (default) or Memory.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional string medium = 1;</code>
     * @return Whether the medium field is set.
     */
    boolean hasMedium();
    /**
     * <pre>
     * medium represents what type of storage medium should back this directory.
     * The default is "" which means to use the node's default medium.
     * Must be an empty string (default) or Memory.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional string medium = 1;</code>
     * @return The medium.
     */
    java.lang.String getMedium();
    /**
     * <pre>
     * medium represents what type of storage medium should back this directory.
     * The default is "" which means to use the node's default medium.
     * Must be an empty string (default) or Memory.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional string medium = 1;</code>
     * @return The bytes for medium.
     */
    com.google.protobuf.ByteString
        getMediumBytes();

    /**
     * <pre>
     * sizeLimit is the total amount of local storage required for this EmptyDir volume.
     * The size limit is also applicable for memory medium.
     * The maximum usage on memory medium EmptyDir would be the minimum value between
     * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
     * The default is nil which means that the limit is undefined.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
     * @return Whether the sizeLimit field is set.
     */
    boolean hasSizeLimit();
    /**
     * <pre>
     * sizeLimit is the total amount of local storage required for this EmptyDir volume.
     * The size limit is also applicable for memory medium.
     * The maximum usage on memory medium EmptyDir would be the minimum value between
     * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
     * The default is nil which means that the limit is undefined.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
     * @return The sizeLimit.
     */
    io.kubernetes.client.proto.Resource.Quantity getSizeLimit();
    /**
     * <pre>
     * sizeLimit is the total amount of local storage required for this EmptyDir volume.
     * The size limit is also applicable for memory medium.
     * The maximum usage on memory medium EmptyDir would be the minimum value between
     * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
     * The default is nil which means that the limit is undefined.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
     */
    io.kubernetes.client.proto.Resource.QuantityOrBuilder getSizeLimitOrBuilder();
  }
  /**
   * <pre>
   * Represents an empty directory for a pod.
   * Empty directory volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EmptyDirVolumeSource}
   */
  public static final class EmptyDirVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EmptyDirVolumeSource)
      EmptyDirVolumeSourceOrBuilder {
  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= */ "",
        EmptyDirVolumeSource.class.getName());
    }
    // Use EmptyDirVolumeSource.newBuilder() to construct.
    private EmptyDirVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EmptyDirVolumeSource() {
      medium_ = "";
    }

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

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

    private int bitField0_;
    public static final int MEDIUM_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object medium_ = "";
    /**
     * <pre>
     * medium represents what type of storage medium should back this directory.
     * The default is "" which means to use the node's default medium.
     * Must be an empty string (default) or Memory.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional string medium = 1;</code>
     * @return Whether the medium field is set.
     */
    @java.lang.Override
    public boolean hasMedium() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * medium represents what type of storage medium should back this directory.
     * The default is "" which means to use the node's default medium.
     * Must be an empty string (default) or Memory.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional string medium = 1;</code>
     * @return The medium.
     */
    @java.lang.Override
    public java.lang.String getMedium() {
      java.lang.Object ref = medium_;
      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()) {
          medium_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * medium represents what type of storage medium should back this directory.
     * The default is "" which means to use the node's default medium.
     * Must be an empty string (default) or Memory.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional string medium = 1;</code>
     * @return The bytes for medium.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMediumBytes() {
      java.lang.Object ref = medium_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        medium_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SIZELIMIT_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.Resource.Quantity sizeLimit_;
    /**
     * <pre>
     * sizeLimit is the total amount of local storage required for this EmptyDir volume.
     * The size limit is also applicable for memory medium.
     * The maximum usage on memory medium EmptyDir would be the minimum value between
     * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
     * The default is nil which means that the limit is undefined.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
     * @return Whether the sizeLimit field is set.
     */
    @java.lang.Override
    public boolean hasSizeLimit() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * sizeLimit is the total amount of local storage required for this EmptyDir volume.
     * The size limit is also applicable for memory medium.
     * The maximum usage on memory medium EmptyDir would be the minimum value between
     * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
     * The default is nil which means that the limit is undefined.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
     * @return The sizeLimit.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getSizeLimit() {
      return sizeLimit_ == null ? io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance() : sizeLimit_;
    }
    /**
     * <pre>
     * sizeLimit is the total amount of local storage required for this EmptyDir volume.
     * The size limit is also applicable for memory medium.
     * The maximum usage on memory medium EmptyDir would be the minimum value between
     * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
     * The default is nil which means that the limit is undefined.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.QuantityOrBuilder getSizeLimitOrBuilder() {
      return sizeLimit_ == null ? io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance() : sizeLimit_;
    }

    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, medium_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getSizeLimit());
      }
      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, medium_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getSizeLimit());
      }
      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.V1.EmptyDirVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EmptyDirVolumeSource other = (io.kubernetes.client.proto.V1.EmptyDirVolumeSource) obj;

      if (hasMedium() != other.hasMedium()) return false;
      if (hasMedium()) {
        if (!getMedium()
            .equals(other.getMedium())) return false;
      }
      if (hasSizeLimit() != other.hasSizeLimit()) return false;
      if (hasSizeLimit()) {
        if (!getSizeLimit()
            .equals(other.getSizeLimit())) 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 (hasMedium()) {
        hash = (37 * hash) + MEDIUM_FIELD_NUMBER;
        hash = (53 * hash) + getMedium().hashCode();
      }
      if (hasSizeLimit()) {
        hash = (37 * hash) + SIZELIMIT_FIELD_NUMBER;
        hash = (53 * hash) + getSizeLimit().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EmptyDirVolumeSource 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.V1.EmptyDirVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EmptyDirVolumeSource 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.V1.EmptyDirVolumeSource 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>
     * Represents an empty directory for a pod.
     * Empty directory volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EmptyDirVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EmptyDirVolumeSource)
        io.kubernetes.client.proto.V1.EmptyDirVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EmptyDirVolumeSource_descriptor;
      }

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

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.EmptyDirVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.medium_ = medium_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.sizeLimit_ = sizeLimitBuilder_ == null
              ? sizeLimit_
              : sizeLimitBuilder_.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.V1.EmptyDirVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.EmptyDirVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EmptyDirVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.EmptyDirVolumeSource.getDefaultInstance()) return this;
        if (other.hasMedium()) {
          medium_ = other.medium_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasSizeLimit()) {
          mergeSizeLimit(other.getSizeLimit());
        }
        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: {
                medium_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getSizeLimitFieldBuilder().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 java.lang.Object medium_ = "";
      /**
       * <pre>
       * medium represents what type of storage medium should back this directory.
       * The default is "" which means to use the node's default medium.
       * Must be an empty string (default) or Memory.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional string medium = 1;</code>
       * @return Whether the medium field is set.
       */
      public boolean hasMedium() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * medium represents what type of storage medium should back this directory.
       * The default is "" which means to use the node's default medium.
       * Must be an empty string (default) or Memory.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional string medium = 1;</code>
       * @return The medium.
       */
      public java.lang.String getMedium() {
        java.lang.Object ref = medium_;
        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()) {
            medium_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * medium represents what type of storage medium should back this directory.
       * The default is "" which means to use the node's default medium.
       * Must be an empty string (default) or Memory.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional string medium = 1;</code>
       * @return The bytes for medium.
       */
      public com.google.protobuf.ByteString
          getMediumBytes() {
        java.lang.Object ref = medium_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          medium_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * medium represents what type of storage medium should back this directory.
       * The default is "" which means to use the node's default medium.
       * Must be an empty string (default) or Memory.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional string medium = 1;</code>
       * @param value The medium to set.
       * @return This builder for chaining.
       */
      public Builder setMedium(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        medium_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * medium represents what type of storage medium should back this directory.
       * The default is "" which means to use the node's default medium.
       * Must be an empty string (default) or Memory.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional string medium = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMedium() {
        medium_ = getDefaultInstance().getMedium();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * medium represents what type of storage medium should back this directory.
       * The default is "" which means to use the node's default medium.
       * Must be an empty string (default) or Memory.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional string medium = 1;</code>
       * @param value The bytes for medium to set.
       * @return This builder for chaining.
       */
      public Builder setMediumBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        medium_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Resource.Quantity sizeLimit_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder, io.kubernetes.client.proto.Resource.QuantityOrBuilder> sizeLimitBuilder_;
      /**
       * <pre>
       * sizeLimit is the total amount of local storage required for this EmptyDir volume.
       * The size limit is also applicable for memory medium.
       * The maximum usage on memory medium EmptyDir would be the minimum value between
       * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
       * The default is nil which means that the limit is undefined.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
       * @return Whether the sizeLimit field is set.
       */
      public boolean hasSizeLimit() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * sizeLimit is the total amount of local storage required for this EmptyDir volume.
       * The size limit is also applicable for memory medium.
       * The maximum usage on memory medium EmptyDir would be the minimum value between
       * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
       * The default is nil which means that the limit is undefined.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
       * @return The sizeLimit.
       */
      public io.kubernetes.client.proto.Resource.Quantity getSizeLimit() {
        if (sizeLimitBuilder_ == null) {
          return sizeLimit_ == null ? io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance() : sizeLimit_;
        } else {
          return sizeLimitBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * sizeLimit is the total amount of local storage required for this EmptyDir volume.
       * The size limit is also applicable for memory medium.
       * The maximum usage on memory medium EmptyDir would be the minimum value between
       * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
       * The default is nil which means that the limit is undefined.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
       */
      public Builder setSizeLimit(io.kubernetes.client.proto.Resource.Quantity value) {
        if (sizeLimitBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sizeLimit_ = value;
        } else {
          sizeLimitBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sizeLimit is the total amount of local storage required for this EmptyDir volume.
       * The size limit is also applicable for memory medium.
       * The maximum usage on memory medium EmptyDir would be the minimum value between
       * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
       * The default is nil which means that the limit is undefined.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
       */
      public Builder setSizeLimit(
          io.kubernetes.client.proto.Resource.Quantity.Builder builderForValue) {
        if (sizeLimitBuilder_ == null) {
          sizeLimit_ = builderForValue.build();
        } else {
          sizeLimitBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sizeLimit is the total amount of local storage required for this EmptyDir volume.
       * The size limit is also applicable for memory medium.
       * The maximum usage on memory medium EmptyDir would be the minimum value between
       * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
       * The default is nil which means that the limit is undefined.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
       */
      public Builder mergeSizeLimit(io.kubernetes.client.proto.Resource.Quantity value) {
        if (sizeLimitBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            sizeLimit_ != null &&
            sizeLimit_ != io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance()) {
            getSizeLimitBuilder().mergeFrom(value);
          } else {
            sizeLimit_ = value;
          }
        } else {
          sizeLimitBuilder_.mergeFrom(value);
        }
        if (sizeLimit_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * sizeLimit is the total amount of local storage required for this EmptyDir volume.
       * The size limit is also applicable for memory medium.
       * The maximum usage on memory medium EmptyDir would be the minimum value between
       * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
       * The default is nil which means that the limit is undefined.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
       */
      public Builder clearSizeLimit() {
        bitField0_ = (bitField0_ & ~0x00000002);
        sizeLimit_ = null;
        if (sizeLimitBuilder_ != null) {
          sizeLimitBuilder_.dispose();
          sizeLimitBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sizeLimit is the total amount of local storage required for this EmptyDir volume.
       * The size limit is also applicable for memory medium.
       * The maximum usage on memory medium EmptyDir would be the minimum value between
       * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
       * The default is nil which means that the limit is undefined.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder getSizeLimitBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSizeLimitFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * sizeLimit is the total amount of local storage required for this EmptyDir volume.
       * The size limit is also applicable for memory medium.
       * The maximum usage on memory medium EmptyDir would be the minimum value between
       * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
       * The default is nil which means that the limit is undefined.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
       */
      public io.kubernetes.client.proto.Resource.QuantityOrBuilder getSizeLimitOrBuilder() {
        if (sizeLimitBuilder_ != null) {
          return sizeLimitBuilder_.getMessageOrBuilder();
        } else {
          return sizeLimit_ == null ?
              io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance() : sizeLimit_;
        }
      }
      /**
       * <pre>
       * sizeLimit is the total amount of local storage required for this EmptyDir volume.
       * The size limit is also applicable for memory medium.
       * The maximum usage on memory medium EmptyDir would be the minimum value between
       * the SizeLimit specified here and the sum of memory limits of all containers in a pod.
       * The default is nil which means that the limit is undefined.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder, io.kubernetes.client.proto.Resource.QuantityOrBuilder> 
          getSizeLimitFieldBuilder() {
        if (sizeLimitBuilder_ == null) {
          sizeLimitBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder, io.kubernetes.client.proto.Resource.QuantityOrBuilder>(
                  getSizeLimit(),
                  getParentForChildren(),
                  isClean());
          sizeLimit_ = null;
        }
        return sizeLimitBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EmptyDirVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.EmptyDirVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EndpointAddressOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EndpointAddress)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The IP of this endpoint.
     * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
     * or link-local multicast (224.0.0.0/24 or ff02::/16).
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return Whether the ip field is set.
     */
    boolean hasIp();
    /**
     * <pre>
     * The IP of this endpoint.
     * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
     * or link-local multicast (224.0.0.0/24 or ff02::/16).
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The ip.
     */
    java.lang.String getIp();
    /**
     * <pre>
     * The IP of this endpoint.
     * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
     * or link-local multicast (224.0.0.0/24 or ff02::/16).
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The bytes for ip.
     */
    com.google.protobuf.ByteString
        getIpBytes();

    /**
     * <pre>
     * The Hostname of this endpoint
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 3;</code>
     * @return Whether the hostname field is set.
     */
    boolean hasHostname();
    /**
     * <pre>
     * The Hostname of this endpoint
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 3;</code>
     * @return The hostname.
     */
    java.lang.String getHostname();
    /**
     * <pre>
     * The Hostname of this endpoint
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 3;</code>
     * @return The bytes for hostname.
     */
    com.google.protobuf.ByteString
        getHostnameBytes();

    /**
     * <pre>
     * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 4;</code>
     * @return Whether the nodeName field is set.
     */
    boolean hasNodeName();
    /**
     * <pre>
     * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 4;</code>
     * @return The nodeName.
     */
    java.lang.String getNodeName();
    /**
     * <pre>
     * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 4;</code>
     * @return The bytes for nodeName.
     */
    com.google.protobuf.ByteString
        getNodeNameBytes();

    /**
     * <pre>
     * Reference to object providing the endpoint.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
     * @return Whether the targetRef field is set.
     */
    boolean hasTargetRef();
    /**
     * <pre>
     * Reference to object providing the endpoint.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
     * @return The targetRef.
     */
    io.kubernetes.client.proto.V1.ObjectReference getTargetRef();
    /**
     * <pre>
     * Reference to object providing the endpoint.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getTargetRefOrBuilder();
  }
  /**
   * <pre>
   * EndpointAddress is a tuple that describes single IP address.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EndpointAddress}
   */
  public static final class EndpointAddress extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EndpointAddress)
      EndpointAddressOrBuilder {
  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= */ "",
        EndpointAddress.class.getName());
    }
    // Use EndpointAddress.newBuilder() to construct.
    private EndpointAddress(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EndpointAddress() {
      ip_ = "";
      hostname_ = "";
      nodeName_ = "";
    }

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

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

    private int bitField0_;
    public static final int IP_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object ip_ = "";
    /**
     * <pre>
     * The IP of this endpoint.
     * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
     * or link-local multicast (224.0.0.0/24 or ff02::/16).
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return Whether the ip field is set.
     */
    @java.lang.Override
    public boolean hasIp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The IP of this endpoint.
     * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
     * or link-local multicast (224.0.0.0/24 or ff02::/16).
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The ip.
     */
    @java.lang.Override
    public java.lang.String getIp() {
      java.lang.Object ref = ip_;
      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()) {
          ip_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The IP of this endpoint.
     * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
     * or link-local multicast (224.0.0.0/24 or ff02::/16).
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The bytes for ip.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIpBytes() {
      java.lang.Object ref = ip_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ip_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HOSTNAME_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object hostname_ = "";
    /**
     * <pre>
     * The Hostname of this endpoint
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 3;</code>
     * @return Whether the hostname field is set.
     */
    @java.lang.Override
    public boolean hasHostname() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The Hostname of this endpoint
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 3;</code>
     * @return The hostname.
     */
    @java.lang.Override
    public java.lang.String getHostname() {
      java.lang.Object ref = hostname_;
      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()) {
          hostname_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The Hostname of this endpoint
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 3;</code>
     * @return The bytes for hostname.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHostnameBytes() {
      java.lang.Object ref = hostname_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hostname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NODENAME_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object nodeName_ = "";
    /**
     * <pre>
     * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 4;</code>
     * @return Whether the nodeName field is set.
     */
    @java.lang.Override
    public boolean hasNodeName() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 4;</code>
     * @return The nodeName.
     */
    @java.lang.Override
    public java.lang.String getNodeName() {
      java.lang.Object ref = nodeName_;
      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()) {
          nodeName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 4;</code>
     * @return The bytes for nodeName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNodeNameBytes() {
      java.lang.Object ref = nodeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nodeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TARGETREF_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.ObjectReference targetRef_;
    /**
     * <pre>
     * Reference to object providing the endpoint.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
     * @return Whether the targetRef field is set.
     */
    @java.lang.Override
    public boolean hasTargetRef() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Reference to object providing the endpoint.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
     * @return The targetRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReference getTargetRef() {
      return targetRef_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : targetRef_;
    }
    /**
     * <pre>
     * Reference to object providing the endpoint.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getTargetRefOrBuilder() {
      return targetRef_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : targetRef_;
    }

    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, ip_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(2, getTargetRef());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, hostname_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, nodeName_);
      }
      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, ip_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTargetRef());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, hostname_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, nodeName_);
      }
      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.V1.EndpointAddress)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EndpointAddress other = (io.kubernetes.client.proto.V1.EndpointAddress) obj;

      if (hasIp() != other.hasIp()) return false;
      if (hasIp()) {
        if (!getIp()
            .equals(other.getIp())) return false;
      }
      if (hasHostname() != other.hasHostname()) return false;
      if (hasHostname()) {
        if (!getHostname()
            .equals(other.getHostname())) return false;
      }
      if (hasNodeName() != other.hasNodeName()) return false;
      if (hasNodeName()) {
        if (!getNodeName()
            .equals(other.getNodeName())) return false;
      }
      if (hasTargetRef() != other.hasTargetRef()) return false;
      if (hasTargetRef()) {
        if (!getTargetRef()
            .equals(other.getTargetRef())) 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 (hasIp()) {
        hash = (37 * hash) + IP_FIELD_NUMBER;
        hash = (53 * hash) + getIp().hashCode();
      }
      if (hasHostname()) {
        hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
        hash = (53 * hash) + getHostname().hashCode();
      }
      if (hasNodeName()) {
        hash = (37 * hash) + NODENAME_FIELD_NUMBER;
        hash = (53 * hash) + getNodeName().hashCode();
      }
      if (hasTargetRef()) {
        hash = (37 * hash) + TARGETREF_FIELD_NUMBER;
        hash = (53 * hash) + getTargetRef().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EndpointAddress 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.V1.EndpointAddress parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EndpointAddress 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.V1.EndpointAddress 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>
     * EndpointAddress is a tuple that describes single IP address.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EndpointAddress}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EndpointAddress)
        io.kubernetes.client.proto.V1.EndpointAddressOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EndpointAddress_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getTargetRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ip_ = "";
        hostname_ = "";
        nodeName_ = "";
        targetRef_ = null;
        if (targetRefBuilder_ != null) {
          targetRefBuilder_.dispose();
          targetRefBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.EndpointAddress result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ip_ = ip_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.hostname_ = hostname_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nodeName_ = nodeName_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.targetRef_ = targetRefBuilder_ == null
              ? targetRef_
              : targetRefBuilder_.build();
          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.V1.EndpointAddress) {
          return mergeFrom((io.kubernetes.client.proto.V1.EndpointAddress)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EndpointAddress other) {
        if (other == io.kubernetes.client.proto.V1.EndpointAddress.getDefaultInstance()) return this;
        if (other.hasIp()) {
          ip_ = other.ip_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasHostname()) {
          hostname_ = other.hostname_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasNodeName()) {
          nodeName_ = other.nodeName_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasTargetRef()) {
          mergeTargetRef(other.getTargetRef());
        }
        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: {
                ip_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getTargetRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 18
              case 26: {
                hostname_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 26
              case 34: {
                nodeName_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object ip_ = "";
      /**
       * <pre>
       * The IP of this endpoint.
       * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
       * or link-local multicast (224.0.0.0/24 or ff02::/16).
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return Whether the ip field is set.
       */
      public boolean hasIp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The IP of this endpoint.
       * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
       * or link-local multicast (224.0.0.0/24 or ff02::/16).
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return The ip.
       */
      public java.lang.String getIp() {
        java.lang.Object ref = ip_;
        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()) {
            ip_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The IP of this endpoint.
       * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
       * or link-local multicast (224.0.0.0/24 or ff02::/16).
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return The bytes for ip.
       */
      public com.google.protobuf.ByteString
          getIpBytes() {
        java.lang.Object ref = ip_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ip_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The IP of this endpoint.
       * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
       * or link-local multicast (224.0.0.0/24 or ff02::/16).
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @param value The ip to set.
       * @return This builder for chaining.
       */
      public Builder setIp(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ip_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The IP of this endpoint.
       * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
       * or link-local multicast (224.0.0.0/24 or ff02::/16).
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIp() {
        ip_ = getDefaultInstance().getIp();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The IP of this endpoint.
       * May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
       * or link-local multicast (224.0.0.0/24 or ff02::/16).
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @param value The bytes for ip to set.
       * @return This builder for chaining.
       */
      public Builder setIpBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ip_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object hostname_ = "";
      /**
       * <pre>
       * The Hostname of this endpoint
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 3;</code>
       * @return Whether the hostname field is set.
       */
      public boolean hasHostname() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The Hostname of this endpoint
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 3;</code>
       * @return The hostname.
       */
      public java.lang.String getHostname() {
        java.lang.Object ref = hostname_;
        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()) {
            hostname_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The Hostname of this endpoint
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 3;</code>
       * @return The bytes for hostname.
       */
      public com.google.protobuf.ByteString
          getHostnameBytes() {
        java.lang.Object ref = hostname_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hostname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The Hostname of this endpoint
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 3;</code>
       * @param value The hostname to set.
       * @return This builder for chaining.
       */
      public Builder setHostname(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        hostname_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Hostname of this endpoint
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostname() {
        hostname_ = getDefaultInstance().getHostname();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Hostname of this endpoint
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 3;</code>
       * @param value The bytes for hostname to set.
       * @return This builder for chaining.
       */
      public Builder setHostnameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        hostname_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object nodeName_ = "";
      /**
       * <pre>
       * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 4;</code>
       * @return Whether the nodeName field is set.
       */
      public boolean hasNodeName() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 4;</code>
       * @return The nodeName.
       */
      public java.lang.String getNodeName() {
        java.lang.Object ref = nodeName_;
        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()) {
            nodeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 4;</code>
       * @return The bytes for nodeName.
       */
      public com.google.protobuf.ByteString
          getNodeNameBytes() {
        java.lang.Object ref = nodeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nodeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 4;</code>
       * @param value The nodeName to set.
       * @return This builder for chaining.
       */
      public Builder setNodeName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        nodeName_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearNodeName() {
        nodeName_ = getDefaultInstance().getNodeName();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 4;</code>
       * @param value The bytes for nodeName to set.
       * @return This builder for chaining.
       */
      public Builder setNodeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        nodeName_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.ObjectReference targetRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> targetRefBuilder_;
      /**
       * <pre>
       * Reference to object providing the endpoint.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
       * @return Whether the targetRef field is set.
       */
      public boolean hasTargetRef() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Reference to object providing the endpoint.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
       * @return The targetRef.
       */
      public io.kubernetes.client.proto.V1.ObjectReference getTargetRef() {
        if (targetRefBuilder_ == null) {
          return targetRef_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : targetRef_;
        } else {
          return targetRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Reference to object providing the endpoint.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
       */
      public Builder setTargetRef(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (targetRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          targetRef_ = value;
        } else {
          targetRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Reference to object providing the endpoint.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
       */
      public Builder setTargetRef(
          io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (targetRefBuilder_ == null) {
          targetRef_ = builderForValue.build();
        } else {
          targetRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Reference to object providing the endpoint.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
       */
      public Builder mergeTargetRef(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (targetRefBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            targetRef_ != null &&
            targetRef_ != io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance()) {
            getTargetRefBuilder().mergeFrom(value);
          } else {
            targetRef_ = value;
          }
        } else {
          targetRefBuilder_.mergeFrom(value);
        }
        if (targetRef_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Reference to object providing the endpoint.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
       */
      public Builder clearTargetRef() {
        bitField0_ = (bitField0_ & ~0x00000008);
        targetRef_ = null;
        if (targetRefBuilder_ != null) {
          targetRefBuilder_.dispose();
          targetRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Reference to object providing the endpoint.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder getTargetRefBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getTargetRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Reference to object providing the endpoint.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getTargetRefOrBuilder() {
        if (targetRefBuilder_ != null) {
          return targetRefBuilder_.getMessageOrBuilder();
        } else {
          return targetRef_ == null ?
              io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : targetRef_;
        }
      }
      /**
       * <pre>
       * Reference to object providing the endpoint.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference targetRef = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
          getTargetRefFieldBuilder() {
        if (targetRefBuilder_ == null) {
          targetRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder>(
                  getTargetRef(),
                  getParentForChildren(),
                  isClean());
          targetRef_ = null;
        }
        return targetRefBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EndpointAddress)
    }

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

    public static io.kubernetes.client.proto.V1.EndpointAddress getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EndpointPortOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EndpointPort)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The name of this port.  This must match the 'name' field in the
     * corresponding ServicePort.
     * Must be a DNS_LABEL.
     * Optional only if one port is defined.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * The name of this port.  This must match the 'name' field in the
     * corresponding ServicePort.
     * Must be a DNS_LABEL.
     * Optional only if one port is defined.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * The name of this port.  This must match the 'name' field in the
     * corresponding ServicePort.
     * Must be a DNS_LABEL.
     * Optional only if one port is defined.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The port number of the endpoint.
     * </pre>
     *
     * <code>optional int32 port = 2;</code>
     * @return Whether the port field is set.
     */
    boolean hasPort();
    /**
     * <pre>
     * The port number of the endpoint.
     * </pre>
     *
     * <code>optional int32 port = 2;</code>
     * @return The port.
     */
    int getPort();

    /**
     * <pre>
     * The IP protocol for this port.
     * Must be UDP, TCP, or SCTP.
     * Default is TCP.
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 3;</code>
     * @return Whether the protocol field is set.
     */
    boolean hasProtocol();
    /**
     * <pre>
     * The IP protocol for this port.
     * Must be UDP, TCP, or SCTP.
     * Default is TCP.
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 3;</code>
     * @return The protocol.
     */
    java.lang.String getProtocol();
    /**
     * <pre>
     * The IP protocol for this port.
     * Must be UDP, TCP, or SCTP.
     * Default is TCP.
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 3;</code>
     * @return The bytes for protocol.
     */
    com.google.protobuf.ByteString
        getProtocolBytes();

    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 4;</code>
     * @return Whether the appProtocol field is set.
     */
    boolean hasAppProtocol();
    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 4;</code>
     * @return The appProtocol.
     */
    java.lang.String getAppProtocol();
    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 4;</code>
     * @return The bytes for appProtocol.
     */
    com.google.protobuf.ByteString
        getAppProtocolBytes();
  }
  /**
   * <pre>
   * EndpointPort is a tuple that describes a single port.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EndpointPort}
   */
  public static final class EndpointPort extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EndpointPort)
      EndpointPortOrBuilder {
  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= */ "",
        EndpointPort.class.getName());
    }
    // Use EndpointPort.newBuilder() to construct.
    private EndpointPort(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EndpointPort() {
      name_ = "";
      protocol_ = "";
      appProtocol_ = "";
    }

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

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * The name of this port.  This must match the 'name' field in the
     * corresponding ServicePort.
     * Must be a DNS_LABEL.
     * Optional only if one port is defined.
     * +optional
     * </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>
     * The name of this port.  This must match the 'name' field in the
     * corresponding ServicePort.
     * Must be a DNS_LABEL.
     * Optional only if one port is defined.
     * +optional
     * </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>
     * The name of this port.  This must match the 'name' field in the
     * corresponding ServicePort.
     * Must be a DNS_LABEL.
     * Optional only if one port is defined.
     * +optional
     * </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 PORT_FIELD_NUMBER = 2;
    private int port_ = 0;
    /**
     * <pre>
     * The port number of the endpoint.
     * </pre>
     *
     * <code>optional int32 port = 2;</code>
     * @return Whether the port field is set.
     */
    @java.lang.Override
    public boolean hasPort() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The port number of the endpoint.
     * </pre>
     *
     * <code>optional int32 port = 2;</code>
     * @return The port.
     */
    @java.lang.Override
    public int getPort() {
      return port_;
    }

    public static final int PROTOCOL_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object protocol_ = "";
    /**
     * <pre>
     * The IP protocol for this port.
     * Must be UDP, TCP, or SCTP.
     * Default is TCP.
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 3;</code>
     * @return Whether the protocol field is set.
     */
    @java.lang.Override
    public boolean hasProtocol() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The IP protocol for this port.
     * Must be UDP, TCP, or SCTP.
     * Default is TCP.
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 3;</code>
     * @return The protocol.
     */
    @java.lang.Override
    public java.lang.String getProtocol() {
      java.lang.Object ref = protocol_;
      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()) {
          protocol_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The IP protocol for this port.
     * Must be UDP, TCP, or SCTP.
     * Default is TCP.
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 3;</code>
     * @return The bytes for protocol.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getProtocolBytes() {
      java.lang.Object ref = protocol_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        protocol_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int APPPROTOCOL_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object appProtocol_ = "";
    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 4;</code>
     * @return Whether the appProtocol field is set.
     */
    @java.lang.Override
    public boolean hasAppProtocol() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 4;</code>
     * @return The appProtocol.
     */
    @java.lang.Override
    public java.lang.String getAppProtocol() {
      java.lang.Object ref = appProtocol_;
      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()) {
          appProtocol_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 4;</code>
     * @return The bytes for appProtocol.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAppProtocolBytes() {
      java.lang.Object ref = appProtocol_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        appProtocol_ = 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)) {
        output.writeInt32(2, port_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, protocol_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, appProtocol_);
      }
      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
          .computeInt32Size(2, port_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, protocol_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, appProtocol_);
      }
      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.V1.EndpointPort)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EndpointPort other = (io.kubernetes.client.proto.V1.EndpointPort) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasPort() != other.hasPort()) return false;
      if (hasPort()) {
        if (getPort()
            != other.getPort()) return false;
      }
      if (hasProtocol() != other.hasProtocol()) return false;
      if (hasProtocol()) {
        if (!getProtocol()
            .equals(other.getProtocol())) return false;
      }
      if (hasAppProtocol() != other.hasAppProtocol()) return false;
      if (hasAppProtocol()) {
        if (!getAppProtocol()
            .equals(other.getAppProtocol())) 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 (hasPort()) {
        hash = (37 * hash) + PORT_FIELD_NUMBER;
        hash = (53 * hash) + getPort();
      }
      if (hasProtocol()) {
        hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
        hash = (53 * hash) + getProtocol().hashCode();
      }
      if (hasAppProtocol()) {
        hash = (37 * hash) + APPPROTOCOL_FIELD_NUMBER;
        hash = (53 * hash) + getAppProtocol().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EndpointPort 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.V1.EndpointPort parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EndpointPort 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.V1.EndpointPort 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>
     * EndpointPort is a tuple that describes a single port.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EndpointPort}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EndpointPort)
        io.kubernetes.client.proto.V1.EndpointPortOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EndpointPort_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.EndpointPort.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.EndpointPort 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.port_ = port_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.protocol_ = protocol_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.appProtocol_ = appProtocol_;
          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.V1.EndpointPort) {
          return mergeFrom((io.kubernetes.client.proto.V1.EndpointPort)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EndpointPort other) {
        if (other == io.kubernetes.client.proto.V1.EndpointPort.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasPort()) {
          setPort(other.getPort());
        }
        if (other.hasProtocol()) {
          protocol_ = other.protocol_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasAppProtocol()) {
          appProtocol_ = other.appProtocol_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * The name of this port.  This must match the 'name' field in the
       * corresponding ServicePort.
       * Must be a DNS_LABEL.
       * Optional only if one port is defined.
       * +optional
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The name of this port.  This must match the 'name' field in the
       * corresponding ServicePort.
       * Must be a DNS_LABEL.
       * Optional only if one port is defined.
       * +optional
       * </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>
       * The name of this port.  This must match the 'name' field in the
       * corresponding ServicePort.
       * Must be a DNS_LABEL.
       * Optional only if one port is defined.
       * +optional
       * </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>
       * The name of this port.  This must match the 'name' field in the
       * corresponding ServicePort.
       * Must be a DNS_LABEL.
       * Optional only if one port is defined.
       * +optional
       * </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>
       * The name of this port.  This must match the 'name' field in the
       * corresponding ServicePort.
       * Must be a DNS_LABEL.
       * Optional only if one port is defined.
       * +optional
       * </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>
       * The name of this port.  This must match the 'name' field in the
       * corresponding ServicePort.
       * Must be a DNS_LABEL.
       * Optional only if one port is defined.
       * +optional
       * </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 int port_ ;
      /**
       * <pre>
       * The port number of the endpoint.
       * </pre>
       *
       * <code>optional int32 port = 2;</code>
       * @return Whether the port field is set.
       */
      @java.lang.Override
      public boolean hasPort() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The port number of the endpoint.
       * </pre>
       *
       * <code>optional int32 port = 2;</code>
       * @return The port.
       */
      @java.lang.Override
      public int getPort() {
        return port_;
      }
      /**
       * <pre>
       * The port number of the endpoint.
       * </pre>
       *
       * <code>optional int32 port = 2;</code>
       * @param value The port to set.
       * @return This builder for chaining.
       */
      public Builder setPort(int value) {

        port_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The port number of the endpoint.
       * </pre>
       *
       * <code>optional int32 port = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        bitField0_ = (bitField0_ & ~0x00000002);
        port_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object protocol_ = "";
      /**
       * <pre>
       * The IP protocol for this port.
       * Must be UDP, TCP, or SCTP.
       * Default is TCP.
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 3;</code>
       * @return Whether the protocol field is set.
       */
      public boolean hasProtocol() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The IP protocol for this port.
       * Must be UDP, TCP, or SCTP.
       * Default is TCP.
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 3;</code>
       * @return The protocol.
       */
      public java.lang.String getProtocol() {
        java.lang.Object ref = protocol_;
        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()) {
            protocol_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The IP protocol for this port.
       * Must be UDP, TCP, or SCTP.
       * Default is TCP.
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 3;</code>
       * @return The bytes for protocol.
       */
      public com.google.protobuf.ByteString
          getProtocolBytes() {
        java.lang.Object ref = protocol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          protocol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The IP protocol for this port.
       * Must be UDP, TCP, or SCTP.
       * Default is TCP.
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 3;</code>
       * @param value The protocol to set.
       * @return This builder for chaining.
       */
      public Builder setProtocol(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        protocol_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The IP protocol for this port.
       * Must be UDP, TCP, or SCTP.
       * Default is TCP.
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearProtocol() {
        protocol_ = getDefaultInstance().getProtocol();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The IP protocol for this port.
       * Must be UDP, TCP, or SCTP.
       * Default is TCP.
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 3;</code>
       * @param value The bytes for protocol to set.
       * @return This builder for chaining.
       */
      public Builder setProtocolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        protocol_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object appProtocol_ = "";
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 4;</code>
       * @return Whether the appProtocol field is set.
       */
      public boolean hasAppProtocol() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 4;</code>
       * @return The appProtocol.
       */
      public java.lang.String getAppProtocol() {
        java.lang.Object ref = appProtocol_;
        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()) {
            appProtocol_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 4;</code>
       * @return The bytes for appProtocol.
       */
      public com.google.protobuf.ByteString
          getAppProtocolBytes() {
        java.lang.Object ref = appProtocol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          appProtocol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 4;</code>
       * @param value The appProtocol to set.
       * @return This builder for chaining.
       */
      public Builder setAppProtocol(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        appProtocol_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearAppProtocol() {
        appProtocol_ = getDefaultInstance().getAppProtocol();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 4;</code>
       * @param value The bytes for appProtocol to set.
       * @return This builder for chaining.
       */
      public Builder setAppProtocolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        appProtocol_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EndpointPort)
    }

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

    public static io.kubernetes.client.proto.V1.EndpointPort getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EndpointSubsetOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EndpointSubset)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * IP addresses which offer the related ports that are marked as ready. These endpoints
     * should be considered safe for load balancers and clients to utilize.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.EndpointAddress> 
        getAddressesList();
    /**
     * <pre>
     * IP addresses which offer the related ports that are marked as ready. These endpoints
     * should be considered safe for load balancers and clients to utilize.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
     */
    io.kubernetes.client.proto.V1.EndpointAddress getAddresses(int index);
    /**
     * <pre>
     * IP addresses which offer the related ports that are marked as ready. These endpoints
     * should be considered safe for load balancers and clients to utilize.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
     */
    int getAddressesCount();
    /**
     * <pre>
     * IP addresses which offer the related ports that are marked as ready. These endpoints
     * should be considered safe for load balancers and clients to utilize.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EndpointAddressOrBuilder> 
        getAddressesOrBuilderList();
    /**
     * <pre>
     * IP addresses which offer the related ports that are marked as ready. These endpoints
     * should be considered safe for load balancers and clients to utilize.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
     */
    io.kubernetes.client.proto.V1.EndpointAddressOrBuilder getAddressesOrBuilder(
        int index);

    /**
     * <pre>
     * IP addresses which offer the related ports but are not currently marked as ready
     * because they have not yet finished starting, have recently failed a readiness check,
     * or have recently failed a liveness check.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.EndpointAddress> 
        getNotReadyAddressesList();
    /**
     * <pre>
     * IP addresses which offer the related ports but are not currently marked as ready
     * because they have not yet finished starting, have recently failed a readiness check,
     * or have recently failed a liveness check.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
     */
    io.kubernetes.client.proto.V1.EndpointAddress getNotReadyAddresses(int index);
    /**
     * <pre>
     * IP addresses which offer the related ports but are not currently marked as ready
     * because they have not yet finished starting, have recently failed a readiness check,
     * or have recently failed a liveness check.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
     */
    int getNotReadyAddressesCount();
    /**
     * <pre>
     * IP addresses which offer the related ports but are not currently marked as ready
     * because they have not yet finished starting, have recently failed a readiness check,
     * or have recently failed a liveness check.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EndpointAddressOrBuilder> 
        getNotReadyAddressesOrBuilderList();
    /**
     * <pre>
     * IP addresses which offer the related ports but are not currently marked as ready
     * because they have not yet finished starting, have recently failed a readiness check,
     * or have recently failed a liveness check.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
     */
    io.kubernetes.client.proto.V1.EndpointAddressOrBuilder getNotReadyAddressesOrBuilder(
        int index);

    /**
     * <pre>
     * Port numbers available on the related IP addresses.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.EndpointPort> 
        getPortsList();
    /**
     * <pre>
     * Port numbers available on the related IP addresses.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
     */
    io.kubernetes.client.proto.V1.EndpointPort getPorts(int index);
    /**
     * <pre>
     * Port numbers available on the related IP addresses.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
     */
    int getPortsCount();
    /**
     * <pre>
     * Port numbers available on the related IP addresses.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EndpointPortOrBuilder> 
        getPortsOrBuilderList();
    /**
     * <pre>
     * Port numbers available on the related IP addresses.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
     */
    io.kubernetes.client.proto.V1.EndpointPortOrBuilder getPortsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * EndpointSubset is a group of addresses with a common set of ports. The
   * expanded set of endpoints is the Cartesian product of Addresses x Ports.
   * For example, given:
   *
   * {
   * Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
   * Ports:     [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
   * }
   *
   * The resulting set of endpoints can be viewed as:
   *
   * a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],
   * b: [ 10.10.1.1:309, 10.10.2.2:309 ]
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EndpointSubset}
   */
  public static final class EndpointSubset extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EndpointSubset)
      EndpointSubsetOrBuilder {
  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= */ "",
        EndpointSubset.class.getName());
    }
    // Use EndpointSubset.newBuilder() to construct.
    private EndpointSubset(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EndpointSubset() {
      addresses_ = java.util.Collections.emptyList();
      notReadyAddresses_ = java.util.Collections.emptyList();
      ports_ = java.util.Collections.emptyList();
    }

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

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

    public static final int ADDRESSES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.EndpointAddress> addresses_;
    /**
     * <pre>
     * IP addresses which offer the related ports that are marked as ready. These endpoints
     * should be considered safe for load balancers and clients to utilize.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.EndpointAddress> getAddressesList() {
      return addresses_;
    }
    /**
     * <pre>
     * IP addresses which offer the related ports that are marked as ready. These endpoints
     * should be considered safe for load balancers and clients to utilize.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EndpointAddressOrBuilder> 
        getAddressesOrBuilderList() {
      return addresses_;
    }
    /**
     * <pre>
     * IP addresses which offer the related ports that are marked as ready. These endpoints
     * should be considered safe for load balancers and clients to utilize.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
     */
    @java.lang.Override
    public int getAddressesCount() {
      return addresses_.size();
    }
    /**
     * <pre>
     * IP addresses which offer the related ports that are marked as ready. These endpoints
     * should be considered safe for load balancers and clients to utilize.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EndpointAddress getAddresses(int index) {
      return addresses_.get(index);
    }
    /**
     * <pre>
     * IP addresses which offer the related ports that are marked as ready. These endpoints
     * should be considered safe for load balancers and clients to utilize.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EndpointAddressOrBuilder getAddressesOrBuilder(
        int index) {
      return addresses_.get(index);
    }

    public static final int NOTREADYADDRESSES_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.EndpointAddress> notReadyAddresses_;
    /**
     * <pre>
     * IP addresses which offer the related ports but are not currently marked as ready
     * because they have not yet finished starting, have recently failed a readiness check,
     * or have recently failed a liveness check.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.EndpointAddress> getNotReadyAddressesList() {
      return notReadyAddresses_;
    }
    /**
     * <pre>
     * IP addresses which offer the related ports but are not currently marked as ready
     * because they have not yet finished starting, have recently failed a readiness check,
     * or have recently failed a liveness check.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EndpointAddressOrBuilder> 
        getNotReadyAddressesOrBuilderList() {
      return notReadyAddresses_;
    }
    /**
     * <pre>
     * IP addresses which offer the related ports but are not currently marked as ready
     * because they have not yet finished starting, have recently failed a readiness check,
     * or have recently failed a liveness check.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
     */
    @java.lang.Override
    public int getNotReadyAddressesCount() {
      return notReadyAddresses_.size();
    }
    /**
     * <pre>
     * IP addresses which offer the related ports but are not currently marked as ready
     * because they have not yet finished starting, have recently failed a readiness check,
     * or have recently failed a liveness check.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EndpointAddress getNotReadyAddresses(int index) {
      return notReadyAddresses_.get(index);
    }
    /**
     * <pre>
     * IP addresses which offer the related ports but are not currently marked as ready
     * because they have not yet finished starting, have recently failed a readiness check,
     * or have recently failed a liveness check.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EndpointAddressOrBuilder getNotReadyAddressesOrBuilder(
        int index) {
      return notReadyAddresses_.get(index);
    }

    public static final int PORTS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.EndpointPort> ports_;
    /**
     * <pre>
     * Port numbers available on the related IP addresses.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.EndpointPort> getPortsList() {
      return ports_;
    }
    /**
     * <pre>
     * Port numbers available on the related IP addresses.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EndpointPortOrBuilder> 
        getPortsOrBuilderList() {
      return ports_;
    }
    /**
     * <pre>
     * Port numbers available on the related IP addresses.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
     */
    @java.lang.Override
    public int getPortsCount() {
      return ports_.size();
    }
    /**
     * <pre>
     * Port numbers available on the related IP addresses.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EndpointPort getPorts(int index) {
      return ports_.get(index);
    }
    /**
     * <pre>
     * Port numbers available on the related IP addresses.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EndpointPortOrBuilder getPortsOrBuilder(
        int index) {
      return ports_.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 {
      for (int i = 0; i < addresses_.size(); i++) {
        output.writeMessage(1, addresses_.get(i));
      }
      for (int i = 0; i < notReadyAddresses_.size(); i++) {
        output.writeMessage(2, notReadyAddresses_.get(i));
      }
      for (int i = 0; i < ports_.size(); i++) {
        output.writeMessage(3, ports_.get(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 < addresses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, addresses_.get(i));
      }
      for (int i = 0; i < notReadyAddresses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, notReadyAddresses_.get(i));
      }
      for (int i = 0; i < ports_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, ports_.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.V1.EndpointSubset)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EndpointSubset other = (io.kubernetes.client.proto.V1.EndpointSubset) obj;

      if (!getAddressesList()
          .equals(other.getAddressesList())) return false;
      if (!getNotReadyAddressesList()
          .equals(other.getNotReadyAddressesList())) return false;
      if (!getPortsList()
          .equals(other.getPortsList())) 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 (getAddressesCount() > 0) {
        hash = (37 * hash) + ADDRESSES_FIELD_NUMBER;
        hash = (53 * hash) + getAddressesList().hashCode();
      }
      if (getNotReadyAddressesCount() > 0) {
        hash = (37 * hash) + NOTREADYADDRESSES_FIELD_NUMBER;
        hash = (53 * hash) + getNotReadyAddressesList().hashCode();
      }
      if (getPortsCount() > 0) {
        hash = (37 * hash) + PORTS_FIELD_NUMBER;
        hash = (53 * hash) + getPortsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EndpointSubset 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.V1.EndpointSubset parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EndpointSubset 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.V1.EndpointSubset 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>
     * EndpointSubset is a group of addresses with a common set of ports. The
     * expanded set of endpoints is the Cartesian product of Addresses x Ports.
     * For example, given:
     *
     * {
     * Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
     * Ports:     [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
     * }
     *
     * The resulting set of endpoints can be viewed as:
     *
     * a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],
     * b: [ 10.10.1.1:309, 10.10.2.2:309 ]
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EndpointSubset}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EndpointSubset)
        io.kubernetes.client.proto.V1.EndpointSubsetOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EndpointSubset_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.EndpointSubset.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (addressesBuilder_ == null) {
          addresses_ = java.util.Collections.emptyList();
        } else {
          addresses_ = null;
          addressesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (notReadyAddressesBuilder_ == null) {
          notReadyAddresses_ = java.util.Collections.emptyList();
        } else {
          notReadyAddresses_ = null;
          notReadyAddressesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
        } else {
          ports_ = null;
          portsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.EndpointSubset result) {
        if (addressesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            addresses_ = java.util.Collections.unmodifiableList(addresses_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.addresses_ = addresses_;
        } else {
          result.addresses_ = addressesBuilder_.build();
        }
        if (notReadyAddressesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            notReadyAddresses_ = java.util.Collections.unmodifiableList(notReadyAddresses_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.notReadyAddresses_ = notReadyAddresses_;
        } else {
          result.notReadyAddresses_ = notReadyAddressesBuilder_.build();
        }
        if (portsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            ports_ = java.util.Collections.unmodifiableList(ports_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.ports_ = ports_;
        } else {
          result.ports_ = portsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.EndpointSubset result) {
        int from_bitField0_ = bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EndpointSubset other) {
        if (other == io.kubernetes.client.proto.V1.EndpointSubset.getDefaultInstance()) return this;
        if (addressesBuilder_ == null) {
          if (!other.addresses_.isEmpty()) {
            if (addresses_.isEmpty()) {
              addresses_ = other.addresses_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureAddressesIsMutable();
              addresses_.addAll(other.addresses_);
            }
            onChanged();
          }
        } else {
          if (!other.addresses_.isEmpty()) {
            if (addressesBuilder_.isEmpty()) {
              addressesBuilder_.dispose();
              addressesBuilder_ = null;
              addresses_ = other.addresses_;
              bitField0_ = (bitField0_ & ~0x00000001);
              addressesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAddressesFieldBuilder() : null;
            } else {
              addressesBuilder_.addAllMessages(other.addresses_);
            }
          }
        }
        if (notReadyAddressesBuilder_ == null) {
          if (!other.notReadyAddresses_.isEmpty()) {
            if (notReadyAddresses_.isEmpty()) {
              notReadyAddresses_ = other.notReadyAddresses_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureNotReadyAddressesIsMutable();
              notReadyAddresses_.addAll(other.notReadyAddresses_);
            }
            onChanged();
          }
        } else {
          if (!other.notReadyAddresses_.isEmpty()) {
            if (notReadyAddressesBuilder_.isEmpty()) {
              notReadyAddressesBuilder_.dispose();
              notReadyAddressesBuilder_ = null;
              notReadyAddresses_ = other.notReadyAddresses_;
              bitField0_ = (bitField0_ & ~0x00000002);
              notReadyAddressesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getNotReadyAddressesFieldBuilder() : null;
            } else {
              notReadyAddressesBuilder_.addAllMessages(other.notReadyAddresses_);
            }
          }
        }
        if (portsBuilder_ == null) {
          if (!other.ports_.isEmpty()) {
            if (ports_.isEmpty()) {
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensurePortsIsMutable();
              ports_.addAll(other.ports_);
            }
            onChanged();
          }
        } else {
          if (!other.ports_.isEmpty()) {
            if (portsBuilder_.isEmpty()) {
              portsBuilder_.dispose();
              portsBuilder_ = null;
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000004);
              portsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPortsFieldBuilder() : null;
            } else {
              portsBuilder_.addAllMessages(other.ports_);
            }
          }
        }
        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.V1.EndpointAddress m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.EndpointAddress.parser(),
                        extensionRegistry);
                if (addressesBuilder_ == null) {
                  ensureAddressesIsMutable();
                  addresses_.add(m);
                } else {
                  addressesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.EndpointAddress m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.EndpointAddress.parser(),
                        extensionRegistry);
                if (notReadyAddressesBuilder_ == null) {
                  ensureNotReadyAddressesIsMutable();
                  notReadyAddresses_.add(m);
                } else {
                  notReadyAddressesBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                io.kubernetes.client.proto.V1.EndpointPort m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.EndpointPort.parser(),
                        extensionRegistry);
                if (portsBuilder_ == null) {
                  ensurePortsIsMutable();
                  ports_.add(m);
                } else {
                  portsBuilder_.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.util.List<io.kubernetes.client.proto.V1.EndpointAddress> addresses_ =
        java.util.Collections.emptyList();
      private void ensureAddressesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          addresses_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.EndpointAddress>(addresses_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EndpointAddress, io.kubernetes.client.proto.V1.EndpointAddress.Builder, io.kubernetes.client.proto.V1.EndpointAddressOrBuilder> addressesBuilder_;

      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EndpointAddress> getAddressesList() {
        if (addressesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(addresses_);
        } else {
          return addressesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public int getAddressesCount() {
        if (addressesBuilder_ == null) {
          return addresses_.size();
        } else {
          return addressesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointAddress getAddresses(int index) {
        if (addressesBuilder_ == null) {
          return addresses_.get(index);
        } else {
          return addressesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public Builder setAddresses(
          int index, io.kubernetes.client.proto.V1.EndpointAddress value) {
        if (addressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddressesIsMutable();
          addresses_.set(index, value);
          onChanged();
        } else {
          addressesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public Builder setAddresses(
          int index, io.kubernetes.client.proto.V1.EndpointAddress.Builder builderForValue) {
        if (addressesBuilder_ == null) {
          ensureAddressesIsMutable();
          addresses_.set(index, builderForValue.build());
          onChanged();
        } else {
          addressesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public Builder addAddresses(io.kubernetes.client.proto.V1.EndpointAddress value) {
        if (addressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddressesIsMutable();
          addresses_.add(value);
          onChanged();
        } else {
          addressesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public Builder addAddresses(
          int index, io.kubernetes.client.proto.V1.EndpointAddress value) {
        if (addressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddressesIsMutable();
          addresses_.add(index, value);
          onChanged();
        } else {
          addressesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public Builder addAddresses(
          io.kubernetes.client.proto.V1.EndpointAddress.Builder builderForValue) {
        if (addressesBuilder_ == null) {
          ensureAddressesIsMutable();
          addresses_.add(builderForValue.build());
          onChanged();
        } else {
          addressesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public Builder addAddresses(
          int index, io.kubernetes.client.proto.V1.EndpointAddress.Builder builderForValue) {
        if (addressesBuilder_ == null) {
          ensureAddressesIsMutable();
          addresses_.add(index, builderForValue.build());
          onChanged();
        } else {
          addressesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public Builder addAllAddresses(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.EndpointAddress> values) {
        if (addressesBuilder_ == null) {
          ensureAddressesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, addresses_);
          onChanged();
        } else {
          addressesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public Builder clearAddresses() {
        if (addressesBuilder_ == null) {
          addresses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          addressesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public Builder removeAddresses(int index) {
        if (addressesBuilder_ == null) {
          ensureAddressesIsMutable();
          addresses_.remove(index);
          onChanged();
        } else {
          addressesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointAddress.Builder getAddressesBuilder(
          int index) {
        return getAddressesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointAddressOrBuilder getAddressesOrBuilder(
          int index) {
        if (addressesBuilder_ == null) {
          return addresses_.get(index);  } else {
          return addressesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.EndpointAddressOrBuilder> 
           getAddressesOrBuilderList() {
        if (addressesBuilder_ != null) {
          return addressesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(addresses_);
        }
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointAddress.Builder addAddressesBuilder() {
        return getAddressesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.EndpointAddress.getDefaultInstance());
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointAddress.Builder addAddressesBuilder(
          int index) {
        return getAddressesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.EndpointAddress.getDefaultInstance());
      }
      /**
       * <pre>
       * IP addresses which offer the related ports that are marked as ready. These endpoints
       * should be considered safe for load balancers and clients to utilize.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress addresses = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EndpointAddress.Builder> 
           getAddressesBuilderList() {
        return getAddressesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EndpointAddress, io.kubernetes.client.proto.V1.EndpointAddress.Builder, io.kubernetes.client.proto.V1.EndpointAddressOrBuilder> 
          getAddressesFieldBuilder() {
        if (addressesBuilder_ == null) {
          addressesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.EndpointAddress, io.kubernetes.client.proto.V1.EndpointAddress.Builder, io.kubernetes.client.proto.V1.EndpointAddressOrBuilder>(
                  addresses_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          addresses_ = null;
        }
        return addressesBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.EndpointAddress> notReadyAddresses_ =
        java.util.Collections.emptyList();
      private void ensureNotReadyAddressesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          notReadyAddresses_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.EndpointAddress>(notReadyAddresses_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EndpointAddress, io.kubernetes.client.proto.V1.EndpointAddress.Builder, io.kubernetes.client.proto.V1.EndpointAddressOrBuilder> notReadyAddressesBuilder_;

      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EndpointAddress> getNotReadyAddressesList() {
        if (notReadyAddressesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(notReadyAddresses_);
        } else {
          return notReadyAddressesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public int getNotReadyAddressesCount() {
        if (notReadyAddressesBuilder_ == null) {
          return notReadyAddresses_.size();
        } else {
          return notReadyAddressesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointAddress getNotReadyAddresses(int index) {
        if (notReadyAddressesBuilder_ == null) {
          return notReadyAddresses_.get(index);
        } else {
          return notReadyAddressesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public Builder setNotReadyAddresses(
          int index, io.kubernetes.client.proto.V1.EndpointAddress value) {
        if (notReadyAddressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNotReadyAddressesIsMutable();
          notReadyAddresses_.set(index, value);
          onChanged();
        } else {
          notReadyAddressesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public Builder setNotReadyAddresses(
          int index, io.kubernetes.client.proto.V1.EndpointAddress.Builder builderForValue) {
        if (notReadyAddressesBuilder_ == null) {
          ensureNotReadyAddressesIsMutable();
          notReadyAddresses_.set(index, builderForValue.build());
          onChanged();
        } else {
          notReadyAddressesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public Builder addNotReadyAddresses(io.kubernetes.client.proto.V1.EndpointAddress value) {
        if (notReadyAddressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNotReadyAddressesIsMutable();
          notReadyAddresses_.add(value);
          onChanged();
        } else {
          notReadyAddressesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public Builder addNotReadyAddresses(
          int index, io.kubernetes.client.proto.V1.EndpointAddress value) {
        if (notReadyAddressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNotReadyAddressesIsMutable();
          notReadyAddresses_.add(index, value);
          onChanged();
        } else {
          notReadyAddressesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public Builder addNotReadyAddresses(
          io.kubernetes.client.proto.V1.EndpointAddress.Builder builderForValue) {
        if (notReadyAddressesBuilder_ == null) {
          ensureNotReadyAddressesIsMutable();
          notReadyAddresses_.add(builderForValue.build());
          onChanged();
        } else {
          notReadyAddressesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public Builder addNotReadyAddresses(
          int index, io.kubernetes.client.proto.V1.EndpointAddress.Builder builderForValue) {
        if (notReadyAddressesBuilder_ == null) {
          ensureNotReadyAddressesIsMutable();
          notReadyAddresses_.add(index, builderForValue.build());
          onChanged();
        } else {
          notReadyAddressesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public Builder addAllNotReadyAddresses(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.EndpointAddress> values) {
        if (notReadyAddressesBuilder_ == null) {
          ensureNotReadyAddressesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, notReadyAddresses_);
          onChanged();
        } else {
          notReadyAddressesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public Builder clearNotReadyAddresses() {
        if (notReadyAddressesBuilder_ == null) {
          notReadyAddresses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          notReadyAddressesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public Builder removeNotReadyAddresses(int index) {
        if (notReadyAddressesBuilder_ == null) {
          ensureNotReadyAddressesIsMutable();
          notReadyAddresses_.remove(index);
          onChanged();
        } else {
          notReadyAddressesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointAddress.Builder getNotReadyAddressesBuilder(
          int index) {
        return getNotReadyAddressesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointAddressOrBuilder getNotReadyAddressesOrBuilder(
          int index) {
        if (notReadyAddressesBuilder_ == null) {
          return notReadyAddresses_.get(index);  } else {
          return notReadyAddressesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.EndpointAddressOrBuilder> 
           getNotReadyAddressesOrBuilderList() {
        if (notReadyAddressesBuilder_ != null) {
          return notReadyAddressesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(notReadyAddresses_);
        }
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointAddress.Builder addNotReadyAddressesBuilder() {
        return getNotReadyAddressesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.EndpointAddress.getDefaultInstance());
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointAddress.Builder addNotReadyAddressesBuilder(
          int index) {
        return getNotReadyAddressesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.EndpointAddress.getDefaultInstance());
      }
      /**
       * <pre>
       * IP addresses which offer the related ports but are not currently marked as ready
       * because they have not yet finished starting, have recently failed a readiness check,
       * or have recently failed a liveness check.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointAddress notReadyAddresses = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EndpointAddress.Builder> 
           getNotReadyAddressesBuilderList() {
        return getNotReadyAddressesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EndpointAddress, io.kubernetes.client.proto.V1.EndpointAddress.Builder, io.kubernetes.client.proto.V1.EndpointAddressOrBuilder> 
          getNotReadyAddressesFieldBuilder() {
        if (notReadyAddressesBuilder_ == null) {
          notReadyAddressesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.EndpointAddress, io.kubernetes.client.proto.V1.EndpointAddress.Builder, io.kubernetes.client.proto.V1.EndpointAddressOrBuilder>(
                  notReadyAddresses_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          notReadyAddresses_ = null;
        }
        return notReadyAddressesBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.EndpointPort> ports_ =
        java.util.Collections.emptyList();
      private void ensurePortsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          ports_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.EndpointPort>(ports_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EndpointPort, io.kubernetes.client.proto.V1.EndpointPort.Builder, io.kubernetes.client.proto.V1.EndpointPortOrBuilder> portsBuilder_;

      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EndpointPort> getPortsList() {
        if (portsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ports_);
        } else {
          return portsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public int getPortsCount() {
        if (portsBuilder_ == null) {
          return ports_.size();
        } else {
          return portsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointPort getPorts(int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);
        } else {
          return portsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public Builder setPorts(
          int index, io.kubernetes.client.proto.V1.EndpointPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.set(index, value);
          onChanged();
        } else {
          portsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public Builder setPorts(
          int index, io.kubernetes.client.proto.V1.EndpointPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.set(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public Builder addPorts(io.kubernetes.client.proto.V1.EndpointPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(value);
          onChanged();
        } else {
          portsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public Builder addPorts(
          int index, io.kubernetes.client.proto.V1.EndpointPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(index, value);
          onChanged();
        } else {
          portsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public Builder addPorts(
          io.kubernetes.client.proto.V1.EndpointPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public Builder addPorts(
          int index, io.kubernetes.client.proto.V1.EndpointPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public Builder addAllPorts(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.EndpointPort> values) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ports_);
          onChanged();
        } else {
          portsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public Builder clearPorts() {
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          portsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public Builder removePorts(int index) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.remove(index);
          onChanged();
        } else {
          portsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointPort.Builder getPortsBuilder(
          int index) {
        return getPortsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointPortOrBuilder getPortsOrBuilder(
          int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);  } else {
          return portsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.EndpointPortOrBuilder> 
           getPortsOrBuilderList() {
        if (portsBuilder_ != null) {
          return portsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ports_);
        }
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointPort.Builder addPortsBuilder() {
        return getPortsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.EndpointPort.getDefaultInstance());
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointPort.Builder addPortsBuilder(
          int index) {
        return getPortsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.EndpointPort.getDefaultInstance());
      }
      /**
       * <pre>
       * Port numbers available on the related IP addresses.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointPort ports = 3;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EndpointPort.Builder> 
           getPortsBuilderList() {
        return getPortsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EndpointPort, io.kubernetes.client.proto.V1.EndpointPort.Builder, io.kubernetes.client.proto.V1.EndpointPortOrBuilder> 
          getPortsFieldBuilder() {
        if (portsBuilder_ == null) {
          portsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.EndpointPort, io.kubernetes.client.proto.V1.EndpointPort.Builder, io.kubernetes.client.proto.V1.EndpointPortOrBuilder>(
                  ports_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          ports_ = null;
        }
        return portsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EndpointSubset)
    }

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

    public static io.kubernetes.client.proto.V1.EndpointSubset getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EndpointsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Endpoints)
      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>
     * The set of all endpoints is the union of all subsets. Addresses are placed into
     * subsets according to the IPs they share. A single address with multiple ports,
     * some of which are ready and some of which are not (because they come from
     * different containers) will result in the address being displayed in different
     * subsets for the different ports. No address will appear in both Addresses and
     * NotReadyAddresses in the same subset.
     * Sets of addresses and ports that comprise a service.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.EndpointSubset> 
        getSubsetsList();
    /**
     * <pre>
     * The set of all endpoints is the union of all subsets. Addresses are placed into
     * subsets according to the IPs they share. A single address with multiple ports,
     * some of which are ready and some of which are not (because they come from
     * different containers) will result in the address being displayed in different
     * subsets for the different ports. No address will appear in both Addresses and
     * NotReadyAddresses in the same subset.
     * Sets of addresses and ports that comprise a service.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
     */
    io.kubernetes.client.proto.V1.EndpointSubset getSubsets(int index);
    /**
     * <pre>
     * The set of all endpoints is the union of all subsets. Addresses are placed into
     * subsets according to the IPs they share. A single address with multiple ports,
     * some of which are ready and some of which are not (because they come from
     * different containers) will result in the address being displayed in different
     * subsets for the different ports. No address will appear in both Addresses and
     * NotReadyAddresses in the same subset.
     * Sets of addresses and ports that comprise a service.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
     */
    int getSubsetsCount();
    /**
     * <pre>
     * The set of all endpoints is the union of all subsets. Addresses are placed into
     * subsets according to the IPs they share. A single address with multiple ports,
     * some of which are ready and some of which are not (because they come from
     * different containers) will result in the address being displayed in different
     * subsets for the different ports. No address will appear in both Addresses and
     * NotReadyAddresses in the same subset.
     * Sets of addresses and ports that comprise a service.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EndpointSubsetOrBuilder> 
        getSubsetsOrBuilderList();
    /**
     * <pre>
     * The set of all endpoints is the union of all subsets. Addresses are placed into
     * subsets according to the IPs they share. A single address with multiple ports,
     * some of which are ready and some of which are not (because they come from
     * different containers) will result in the address being displayed in different
     * subsets for the different ports. No address will appear in both Addresses and
     * NotReadyAddresses in the same subset.
     * Sets of addresses and ports that comprise a service.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
     */
    io.kubernetes.client.proto.V1.EndpointSubsetOrBuilder getSubsetsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Endpoints is a collection of endpoints that implement the actual service. Example:
   *
   * Name: "mysvc",
   * Subsets: [
   * {
   * Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
   * Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
   * },
   * {
   * Addresses: [{"ip": "10.10.3.3"}],
   * Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
   * },
   * ]
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Endpoints}
   */
  public static final class Endpoints extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Endpoints)
      EndpointsOrBuilder {
  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= */ "",
        Endpoints.class.getName());
    }
    // Use Endpoints.newBuilder() to construct.
    private Endpoints(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Endpoints() {
      subsets_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Endpoints_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Endpoints.class, io.kubernetes.client.proto.V1.Endpoints.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 SUBSETS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.EndpointSubset> subsets_;
    /**
     * <pre>
     * The set of all endpoints is the union of all subsets. Addresses are placed into
     * subsets according to the IPs they share. A single address with multiple ports,
     * some of which are ready and some of which are not (because they come from
     * different containers) will result in the address being displayed in different
     * subsets for the different ports. No address will appear in both Addresses and
     * NotReadyAddresses in the same subset.
     * Sets of addresses and ports that comprise a service.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.EndpointSubset> getSubsetsList() {
      return subsets_;
    }
    /**
     * <pre>
     * The set of all endpoints is the union of all subsets. Addresses are placed into
     * subsets according to the IPs they share. A single address with multiple ports,
     * some of which are ready and some of which are not (because they come from
     * different containers) will result in the address being displayed in different
     * subsets for the different ports. No address will appear in both Addresses and
     * NotReadyAddresses in the same subset.
     * Sets of addresses and ports that comprise a service.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EndpointSubsetOrBuilder> 
        getSubsetsOrBuilderList() {
      return subsets_;
    }
    /**
     * <pre>
     * The set of all endpoints is the union of all subsets. Addresses are placed into
     * subsets according to the IPs they share. A single address with multiple ports,
     * some of which are ready and some of which are not (because they come from
     * different containers) will result in the address being displayed in different
     * subsets for the different ports. No address will appear in both Addresses and
     * NotReadyAddresses in the same subset.
     * Sets of addresses and ports that comprise a service.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
     */
    @java.lang.Override
    public int getSubsetsCount() {
      return subsets_.size();
    }
    /**
     * <pre>
     * The set of all endpoints is the union of all subsets. Addresses are placed into
     * subsets according to the IPs they share. A single address with multiple ports,
     * some of which are ready and some of which are not (because they come from
     * different containers) will result in the address being displayed in different
     * subsets for the different ports. No address will appear in both Addresses and
     * NotReadyAddresses in the same subset.
     * Sets of addresses and ports that comprise a service.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EndpointSubset getSubsets(int index) {
      return subsets_.get(index);
    }
    /**
     * <pre>
     * The set of all endpoints is the union of all subsets. Addresses are placed into
     * subsets according to the IPs they share. A single address with multiple ports,
     * some of which are ready and some of which are not (because they come from
     * different containers) will result in the address being displayed in different
     * subsets for the different ports. No address will appear in both Addresses and
     * NotReadyAddresses in the same subset.
     * Sets of addresses and ports that comprise a service.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EndpointSubsetOrBuilder getSubsetsOrBuilder(
        int index) {
      return subsets_.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 < subsets_.size(); i++) {
        output.writeMessage(2, subsets_.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 < subsets_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, subsets_.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.V1.Endpoints)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Endpoints other = (io.kubernetes.client.proto.V1.Endpoints) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (!getSubsetsList()
          .equals(other.getSubsetsList())) 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 (getSubsetsCount() > 0) {
        hash = (37 * hash) + SUBSETS_FIELD_NUMBER;
        hash = (53 * hash) + getSubsetsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.Endpoints 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.V1.Endpoints parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Endpoints 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.V1.Endpoints 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>
     * Endpoints is a collection of endpoints that implement the actual service. Example:
     *
     * Name: "mysvc",
     * Subsets: [
     * {
     * Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
     * Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
     * },
     * {
     * Addresses: [{"ip": "10.10.3.3"}],
     * Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
     * },
     * ]
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Endpoints}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Endpoints)
        io.kubernetes.client.proto.V1.EndpointsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Endpoints_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.Endpoints.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();
          getSubsetsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        if (subsetsBuilder_ == null) {
          subsets_ = java.util.Collections.emptyList();
        } else {
          subsets_ = null;
          subsetsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.Endpoints result) {
        if (subsetsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            subsets_ = java.util.Collections.unmodifiableList(subsets_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.subsets_ = subsets_;
        } else {
          result.subsets_ = subsetsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Endpoints 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.V1.Endpoints) {
          return mergeFrom((io.kubernetes.client.proto.V1.Endpoints)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Endpoints other) {
        if (other == io.kubernetes.client.proto.V1.Endpoints.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (subsetsBuilder_ == null) {
          if (!other.subsets_.isEmpty()) {
            if (subsets_.isEmpty()) {
              subsets_ = other.subsets_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSubsetsIsMutable();
              subsets_.addAll(other.subsets_);
            }
            onChanged();
          }
        } else {
          if (!other.subsets_.isEmpty()) {
            if (subsetsBuilder_.isEmpty()) {
              subsetsBuilder_.dispose();
              subsetsBuilder_ = null;
              subsets_ = other.subsets_;
              bitField0_ = (bitField0_ & ~0x00000002);
              subsetsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSubsetsFieldBuilder() : null;
            } else {
              subsetsBuilder_.addAllMessages(other.subsets_);
            }
          }
        }
        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.V1.EndpointSubset m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.EndpointSubset.parser(),
                        extensionRegistry);
                if (subsetsBuilder_ == null) {
                  ensureSubsetsIsMutable();
                  subsets_.add(m);
                } else {
                  subsetsBuilder_.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.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 java.util.List<io.kubernetes.client.proto.V1.EndpointSubset> subsets_ =
        java.util.Collections.emptyList();
      private void ensureSubsetsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          subsets_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.EndpointSubset>(subsets_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EndpointSubset, io.kubernetes.client.proto.V1.EndpointSubset.Builder, io.kubernetes.client.proto.V1.EndpointSubsetOrBuilder> subsetsBuilder_;

      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EndpointSubset> getSubsetsList() {
        if (subsetsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(subsets_);
        } else {
          return subsetsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public int getSubsetsCount() {
        if (subsetsBuilder_ == null) {
          return subsets_.size();
        } else {
          return subsetsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointSubset getSubsets(int index) {
        if (subsetsBuilder_ == null) {
          return subsets_.get(index);
        } else {
          return subsetsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public Builder setSubsets(
          int index, io.kubernetes.client.proto.V1.EndpointSubset value) {
        if (subsetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubsetsIsMutable();
          subsets_.set(index, value);
          onChanged();
        } else {
          subsetsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public Builder setSubsets(
          int index, io.kubernetes.client.proto.V1.EndpointSubset.Builder builderForValue) {
        if (subsetsBuilder_ == null) {
          ensureSubsetsIsMutable();
          subsets_.set(index, builderForValue.build());
          onChanged();
        } else {
          subsetsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public Builder addSubsets(io.kubernetes.client.proto.V1.EndpointSubset value) {
        if (subsetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubsetsIsMutable();
          subsets_.add(value);
          onChanged();
        } else {
          subsetsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public Builder addSubsets(
          int index, io.kubernetes.client.proto.V1.EndpointSubset value) {
        if (subsetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubsetsIsMutable();
          subsets_.add(index, value);
          onChanged();
        } else {
          subsetsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public Builder addSubsets(
          io.kubernetes.client.proto.V1.EndpointSubset.Builder builderForValue) {
        if (subsetsBuilder_ == null) {
          ensureSubsetsIsMutable();
          subsets_.add(builderForValue.build());
          onChanged();
        } else {
          subsetsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public Builder addSubsets(
          int index, io.kubernetes.client.proto.V1.EndpointSubset.Builder builderForValue) {
        if (subsetsBuilder_ == null) {
          ensureSubsetsIsMutable();
          subsets_.add(index, builderForValue.build());
          onChanged();
        } else {
          subsetsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public Builder addAllSubsets(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.EndpointSubset> values) {
        if (subsetsBuilder_ == null) {
          ensureSubsetsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, subsets_);
          onChanged();
        } else {
          subsetsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public Builder clearSubsets() {
        if (subsetsBuilder_ == null) {
          subsets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          subsetsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public Builder removeSubsets(int index) {
        if (subsetsBuilder_ == null) {
          ensureSubsetsIsMutable();
          subsets_.remove(index);
          onChanged();
        } else {
          subsetsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointSubset.Builder getSubsetsBuilder(
          int index) {
        return getSubsetsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointSubsetOrBuilder getSubsetsOrBuilder(
          int index) {
        if (subsetsBuilder_ == null) {
          return subsets_.get(index);  } else {
          return subsetsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.EndpointSubsetOrBuilder> 
           getSubsetsOrBuilderList() {
        if (subsetsBuilder_ != null) {
          return subsetsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(subsets_);
        }
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointSubset.Builder addSubsetsBuilder() {
        return getSubsetsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.EndpointSubset.getDefaultInstance());
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EndpointSubset.Builder addSubsetsBuilder(
          int index) {
        return getSubsetsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.EndpointSubset.getDefaultInstance());
      }
      /**
       * <pre>
       * The set of all endpoints is the union of all subsets. Addresses are placed into
       * subsets according to the IPs they share. A single address with multiple ports,
       * some of which are ready and some of which are not (because they come from
       * different containers) will result in the address being displayed in different
       * subsets for the different ports. No address will appear in both Addresses and
       * NotReadyAddresses in the same subset.
       * Sets of addresses and ports that comprise a service.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EndpointSubset subsets = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EndpointSubset.Builder> 
           getSubsetsBuilderList() {
        return getSubsetsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EndpointSubset, io.kubernetes.client.proto.V1.EndpointSubset.Builder, io.kubernetes.client.proto.V1.EndpointSubsetOrBuilder> 
          getSubsetsFieldBuilder() {
        if (subsetsBuilder_ == null) {
          subsetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.EndpointSubset, io.kubernetes.client.proto.V1.EndpointSubset.Builder, io.kubernetes.client.proto.V1.EndpointSubsetOrBuilder>(
                  subsets_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          subsets_ = null;
        }
        return subsetsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Endpoints)
    }

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

    public static io.kubernetes.client.proto.V1.Endpoints getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EndpointsListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EndpointsList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * List of endpoints.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Endpoints items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Endpoints> 
        getItemsList();
    /**
     * <pre>
     * List of endpoints.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Endpoints items = 2;</code>
     */
    io.kubernetes.client.proto.V1.Endpoints getItems(int index);
    /**
     * <pre>
     * List of endpoints.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Endpoints items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * List of endpoints.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Endpoints items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EndpointsOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * List of endpoints.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Endpoints items = 2;</code>
     */
    io.kubernetes.client.proto.V1.EndpointsOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * EndpointsList is a list of endpoints.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EndpointsList}
   */
  public static final class EndpointsList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EndpointsList)
      EndpointsListOrBuilder {
  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= */ "",
        EndpointsList.class.getName());
    }
    // Use EndpointsList.newBuilder() to construct.
    private EndpointsList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EndpointsList() {
      items_ = java.util.Collections.emptyList();
    }

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

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

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.Endpoints> items_;
    /**
     * <pre>
     * List of endpoints.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Endpoints items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Endpoints> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * List of endpoints.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Endpoints items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EndpointsOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * List of endpoints.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Endpoints items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * List of endpoints.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Endpoints items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Endpoints getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * List of endpoints.
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Endpoints items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EndpointsOrBuilder 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.V1.EndpointsList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EndpointsList other = (io.kubernetes.client.proto.V1.EndpointsList) 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.V1.EndpointsList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.EndpointsList 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.V1.EndpointsList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.EndpointsList 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.V1.EndpointsList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.EndpointsList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.EndpointsList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EndpointsList 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.V1.EndpointsList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.EndpointsList 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.V1.EndpointsList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EndpointsList 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.V1.EndpointsList 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>
     * EndpointsList is a list of endpoints.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EndpointsList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EndpointsList)
        io.kubernetes.client.proto.V1.EndpointsListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EndpointsList_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.EndpointsList.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.V1.internal_static_k8s_io_api_core_v1_EndpointsList_descriptor;
      }

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.EndpointsList 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.V1.EndpointsList 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.V1.EndpointsList) {
          return mergeFrom((io.kubernetes.client.proto.V1.EndpointsList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EndpointsList other) {
        if (other == io.kubernetes.client.proto.V1.EndpointsList.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.V1.Endpoints m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Endpoints.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.Endpoints> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Endpoints>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Endpoints, io.kubernetes.client.proto.V1.Endpoints.Builder, io.kubernetes.client.proto.V1.EndpointsOrBuilder> itemsBuilder_;

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

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EndpointsList)
    }

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

    public static io.kubernetes.client.proto.V1.EndpointsList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EnvFromSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EnvFromSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
     * +optional
     * </pre>
     *
     * <code>optional string prefix = 1;</code>
     * @return Whether the prefix field is set.
     */
    boolean hasPrefix();
    /**
     * <pre>
     * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
     * +optional
     * </pre>
     *
     * <code>optional string prefix = 1;</code>
     * @return The prefix.
     */
    java.lang.String getPrefix();
    /**
     * <pre>
     * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
     * +optional
     * </pre>
     *
     * <code>optional string prefix = 1;</code>
     * @return The bytes for prefix.
     */
    com.google.protobuf.ByteString
        getPrefixBytes();

    /**
     * <pre>
     * The ConfigMap to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
     * @return Whether the configMapRef field is set.
     */
    boolean hasConfigMapRef();
    /**
     * <pre>
     * The ConfigMap to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
     * @return The configMapRef.
     */
    io.kubernetes.client.proto.V1.ConfigMapEnvSource getConfigMapRef();
    /**
     * <pre>
     * The ConfigMap to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
     */
    io.kubernetes.client.proto.V1.ConfigMapEnvSourceOrBuilder getConfigMapRefOrBuilder();

    /**
     * <pre>
     * The Secret to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * The Secret to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.SecretEnvSource getSecretRef();
    /**
     * <pre>
     * The Secret to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
     */
    io.kubernetes.client.proto.V1.SecretEnvSourceOrBuilder getSecretRefOrBuilder();
  }
  /**
   * <pre>
   * EnvFromSource represents the source of a set of ConfigMaps
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EnvFromSource}
   */
  public static final class EnvFromSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EnvFromSource)
      EnvFromSourceOrBuilder {
  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= */ "",
        EnvFromSource.class.getName());
    }
    // Use EnvFromSource.newBuilder() to construct.
    private EnvFromSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EnvFromSource() {
      prefix_ = "";
    }

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

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

    private int bitField0_;
    public static final int PREFIX_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object prefix_ = "";
    /**
     * <pre>
     * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
     * +optional
     * </pre>
     *
     * <code>optional string prefix = 1;</code>
     * @return Whether the prefix field is set.
     */
    @java.lang.Override
    public boolean hasPrefix() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
     * +optional
     * </pre>
     *
     * <code>optional string prefix = 1;</code>
     * @return The prefix.
     */
    @java.lang.Override
    public java.lang.String getPrefix() {
      java.lang.Object ref = prefix_;
      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()) {
          prefix_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
     * +optional
     * </pre>
     *
     * <code>optional string prefix = 1;</code>
     * @return The bytes for prefix.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPrefixBytes() {
      java.lang.Object ref = prefix_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        prefix_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONFIGMAPREF_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.ConfigMapEnvSource configMapRef_;
    /**
     * <pre>
     * The ConfigMap to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
     * @return Whether the configMapRef field is set.
     */
    @java.lang.Override
    public boolean hasConfigMapRef() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The ConfigMap to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
     * @return The configMapRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapEnvSource getConfigMapRef() {
      return configMapRef_ == null ? io.kubernetes.client.proto.V1.ConfigMapEnvSource.getDefaultInstance() : configMapRef_;
    }
    /**
     * <pre>
     * The ConfigMap to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapEnvSourceOrBuilder getConfigMapRefOrBuilder() {
      return configMapRef_ == null ? io.kubernetes.client.proto.V1.ConfigMapEnvSource.getDefaultInstance() : configMapRef_;
    }

    public static final int SECRETREF_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.SecretEnvSource secretRef_;
    /**
     * <pre>
     * The Secret to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The Secret to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretEnvSource getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretEnvSource.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * The Secret to select from
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretEnvSourceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretEnvSource.getDefaultInstance() : secretRef_;
    }

    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, prefix_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getConfigMapRef());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getSecretRef());
      }
      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, prefix_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getConfigMapRef());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSecretRef());
      }
      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.V1.EnvFromSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EnvFromSource other = (io.kubernetes.client.proto.V1.EnvFromSource) obj;

      if (hasPrefix() != other.hasPrefix()) return false;
      if (hasPrefix()) {
        if (!getPrefix()
            .equals(other.getPrefix())) return false;
      }
      if (hasConfigMapRef() != other.hasConfigMapRef()) return false;
      if (hasConfigMapRef()) {
        if (!getConfigMapRef()
            .equals(other.getConfigMapRef())) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) 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 (hasPrefix()) {
        hash = (37 * hash) + PREFIX_FIELD_NUMBER;
        hash = (53 * hash) + getPrefix().hashCode();
      }
      if (hasConfigMapRef()) {
        hash = (37 * hash) + CONFIGMAPREF_FIELD_NUMBER;
        hash = (53 * hash) + getConfigMapRef().hashCode();
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EnvFromSource 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.V1.EnvFromSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EnvFromSource 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.V1.EnvFromSource 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>
     * EnvFromSource represents the source of a set of ConfigMaps
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EnvFromSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EnvFromSource)
        io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EnvFromSource_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getConfigMapRefFieldBuilder();
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        prefix_ = "";
        configMapRef_ = null;
        if (configMapRefBuilder_ != null) {
          configMapRefBuilder_.dispose();
          configMapRefBuilder_ = null;
        }
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.EnvFromSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.prefix_ = prefix_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.configMapRef_ = configMapRefBuilder_ == null
              ? configMapRef_
              : configMapRefBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.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.V1.EnvFromSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.EnvFromSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EnvFromSource other) {
        if (other == io.kubernetes.client.proto.V1.EnvFromSource.getDefaultInstance()) return this;
        if (other.hasPrefix()) {
          prefix_ = other.prefix_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasConfigMapRef()) {
          mergeConfigMapRef(other.getConfigMapRef());
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        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: {
                prefix_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getConfigMapRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getSecretRefFieldBuilder().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 prefix_ = "";
      /**
       * <pre>
       * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
       * +optional
       * </pre>
       *
       * <code>optional string prefix = 1;</code>
       * @return Whether the prefix field is set.
       */
      public boolean hasPrefix() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
       * +optional
       * </pre>
       *
       * <code>optional string prefix = 1;</code>
       * @return The prefix.
       */
      public java.lang.String getPrefix() {
        java.lang.Object ref = prefix_;
        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()) {
            prefix_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
       * +optional
       * </pre>
       *
       * <code>optional string prefix = 1;</code>
       * @return The bytes for prefix.
       */
      public com.google.protobuf.ByteString
          getPrefixBytes() {
        java.lang.Object ref = prefix_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          prefix_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
       * +optional
       * </pre>
       *
       * <code>optional string prefix = 1;</code>
       * @param value The prefix to set.
       * @return This builder for chaining.
       */
      public Builder setPrefix(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        prefix_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
       * +optional
       * </pre>
       *
       * <code>optional string prefix = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPrefix() {
        prefix_ = getDefaultInstance().getPrefix();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
       * +optional
       * </pre>
       *
       * <code>optional string prefix = 1;</code>
       * @param value The bytes for prefix to set.
       * @return This builder for chaining.
       */
      public Builder setPrefixBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        prefix_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.ConfigMapEnvSource configMapRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMapEnvSource, io.kubernetes.client.proto.V1.ConfigMapEnvSource.Builder, io.kubernetes.client.proto.V1.ConfigMapEnvSourceOrBuilder> configMapRefBuilder_;
      /**
       * <pre>
       * The ConfigMap to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
       * @return Whether the configMapRef field is set.
       */
      public boolean hasConfigMapRef() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The ConfigMap to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
       * @return The configMapRef.
       */
      public io.kubernetes.client.proto.V1.ConfigMapEnvSource getConfigMapRef() {
        if (configMapRefBuilder_ == null) {
          return configMapRef_ == null ? io.kubernetes.client.proto.V1.ConfigMapEnvSource.getDefaultInstance() : configMapRef_;
        } else {
          return configMapRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The ConfigMap to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
       */
      public Builder setConfigMapRef(io.kubernetes.client.proto.V1.ConfigMapEnvSource value) {
        if (configMapRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configMapRef_ = value;
        } else {
          configMapRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
       */
      public Builder setConfigMapRef(
          io.kubernetes.client.proto.V1.ConfigMapEnvSource.Builder builderForValue) {
        if (configMapRefBuilder_ == null) {
          configMapRef_ = builderForValue.build();
        } else {
          configMapRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
       */
      public Builder mergeConfigMapRef(io.kubernetes.client.proto.V1.ConfigMapEnvSource value) {
        if (configMapRefBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            configMapRef_ != null &&
            configMapRef_ != io.kubernetes.client.proto.V1.ConfigMapEnvSource.getDefaultInstance()) {
            getConfigMapRefBuilder().mergeFrom(value);
          } else {
            configMapRef_ = value;
          }
        } else {
          configMapRefBuilder_.mergeFrom(value);
        }
        if (configMapRef_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
       */
      public Builder clearConfigMapRef() {
        bitField0_ = (bitField0_ & ~0x00000002);
        configMapRef_ = null;
        if (configMapRefBuilder_ != null) {
          configMapRefBuilder_.dispose();
          configMapRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ConfigMap to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ConfigMapEnvSource.Builder getConfigMapRefBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getConfigMapRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The ConfigMap to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ConfigMapEnvSourceOrBuilder getConfigMapRefOrBuilder() {
        if (configMapRefBuilder_ != null) {
          return configMapRefBuilder_.getMessageOrBuilder();
        } else {
          return configMapRef_ == null ?
              io.kubernetes.client.proto.V1.ConfigMapEnvSource.getDefaultInstance() : configMapRef_;
        }
      }
      /**
       * <pre>
       * The ConfigMap to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapEnvSource configMapRef = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMapEnvSource, io.kubernetes.client.proto.V1.ConfigMapEnvSource.Builder, io.kubernetes.client.proto.V1.ConfigMapEnvSourceOrBuilder> 
          getConfigMapRefFieldBuilder() {
        if (configMapRefBuilder_ == null) {
          configMapRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ConfigMapEnvSource, io.kubernetes.client.proto.V1.ConfigMapEnvSource.Builder, io.kubernetes.client.proto.V1.ConfigMapEnvSourceOrBuilder>(
                  getConfigMapRef(),
                  getParentForChildren(),
                  isClean());
          configMapRef_ = null;
        }
        return configMapRefBuilder_;
      }

      private io.kubernetes.client.proto.V1.SecretEnvSource secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretEnvSource, io.kubernetes.client.proto.V1.SecretEnvSource.Builder, io.kubernetes.client.proto.V1.SecretEnvSourceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * The Secret to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The Secret to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.SecretEnvSource getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretEnvSource.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The Secret to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.SecretEnvSource value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Secret to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.SecretEnvSource.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Secret to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.SecretEnvSource value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.SecretEnvSource.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The Secret to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000004);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Secret to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.SecretEnvSource.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The Secret to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.SecretEnvSourceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretEnvSource.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * The Secret to select from
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretEnvSource secretRef = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretEnvSource, io.kubernetes.client.proto.V1.SecretEnvSource.Builder, io.kubernetes.client.proto.V1.SecretEnvSourceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretEnvSource, io.kubernetes.client.proto.V1.SecretEnvSource.Builder, io.kubernetes.client.proto.V1.SecretEnvSourceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EnvFromSource)
    }

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

    public static io.kubernetes.client.proto.V1.EnvFromSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EnvVarOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EnvVar)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of the environment variable. Must be a C_IDENTIFIER.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name of the environment variable. Must be a C_IDENTIFIER.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the environment variable. Must be a C_IDENTIFIER.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Variable references $(VAR_NAME) are expanded
     * using the previously defined environment variables in the container and
     * any service environment variables. If a variable cannot be resolved,
     * the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
     * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
     * Escaped references will never be expanded, regardless of whether the variable
     * exists or not.
     * Defaults to "".
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * Variable references $(VAR_NAME) are expanded
     * using the previously defined environment variables in the container and
     * any service environment variables. If a variable cannot be resolved,
     * the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
     * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
     * Escaped references will never be expanded, regardless of whether the variable
     * exists or not.
     * Defaults to "".
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <pre>
     * Variable references $(VAR_NAME) are expanded
     * using the previously defined environment variables in the container and
     * any service environment variables. If a variable cannot be resolved,
     * the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
     * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
     * Escaped references will never be expanded, regardless of whether the variable
     * exists or not.
     * Defaults to "".
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * <pre>
     * Source for the environment variable's value. Cannot be used if value is not empty.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
     * @return Whether the valueFrom field is set.
     */
    boolean hasValueFrom();
    /**
     * <pre>
     * Source for the environment variable's value. Cannot be used if value is not empty.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
     * @return The valueFrom.
     */
    io.kubernetes.client.proto.V1.EnvVarSource getValueFrom();
    /**
     * <pre>
     * Source for the environment variable's value. Cannot be used if value is not empty.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
     */
    io.kubernetes.client.proto.V1.EnvVarSourceOrBuilder getValueFromOrBuilder();
  }
  /**
   * <pre>
   * EnvVar represents an environment variable present in a Container.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EnvVar}
   */
  public static final class EnvVar extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EnvVar)
      EnvVarOrBuilder {
  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= */ "",
        EnvVar.class.getName());
    }
    // Use EnvVar.newBuilder() to construct.
    private EnvVar(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EnvVar() {
      name_ = "";
      value_ = "";
    }

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

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name of the environment variable. Must be a C_IDENTIFIER.
     * </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 of the environment variable. Must be a C_IDENTIFIER.
     * </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 of the environment variable. Must be a C_IDENTIFIER.
     * </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 VALUE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object value_ = "";
    /**
     * <pre>
     * Variable references $(VAR_NAME) are expanded
     * using the previously defined environment variables in the container and
     * any service environment variables. If a variable cannot be resolved,
     * the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
     * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
     * Escaped references will never be expanded, regardless of whether the variable
     * exists or not.
     * Defaults to "".
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Variable references $(VAR_NAME) are expanded
     * using the previously defined environment variables in the container and
     * any service environment variables. If a variable cannot be resolved,
     * the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
     * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
     * Escaped references will never be expanded, regardless of whether the variable
     * exists or not.
     * Defaults to "".
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Variable references $(VAR_NAME) are expanded
     * using the previously defined environment variables in the container and
     * any service environment variables. If a variable cannot be resolved,
     * the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
     * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
     * Escaped references will never be expanded, regardless of whether the variable
     * exists or not.
     * Defaults to "".
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUEFROM_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.EnvVarSource valueFrom_;
    /**
     * <pre>
     * Source for the environment variable's value. Cannot be used if value is not empty.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
     * @return Whether the valueFrom field is set.
     */
    @java.lang.Override
    public boolean hasValueFrom() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Source for the environment variable's value. Cannot be used if value is not empty.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
     * @return The valueFrom.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EnvVarSource getValueFrom() {
      return valueFrom_ == null ? io.kubernetes.client.proto.V1.EnvVarSource.getDefaultInstance() : valueFrom_;
    }
    /**
     * <pre>
     * Source for the environment variable's value. Cannot be used if value is not empty.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EnvVarSourceOrBuilder getValueFromOrBuilder() {
      return valueFrom_ == null ? io.kubernetes.client.proto.V1.EnvVarSource.getDefaultInstance() : valueFrom_;
    }

    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, value_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getValueFrom());
      }
      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, value_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getValueFrom());
      }
      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.V1.EnvVar)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EnvVar other = (io.kubernetes.client.proto.V1.EnvVar) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (hasValueFrom() != other.hasValueFrom()) return false;
      if (hasValueFrom()) {
        if (!getValueFrom()
            .equals(other.getValueFrom())) 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 (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      if (hasValueFrom()) {
        hash = (37 * hash) + VALUEFROM_FIELD_NUMBER;
        hash = (53 * hash) + getValueFrom().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EnvVar 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.V1.EnvVar parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EnvVar 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.V1.EnvVar 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>
     * EnvVar represents an environment variable present in a Container.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EnvVar}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EnvVar)
        io.kubernetes.client.proto.V1.EnvVarOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EnvVar_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getValueFromFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        value_ = "";
        valueFrom_ = null;
        if (valueFromBuilder_ != null) {
          valueFromBuilder_.dispose();
          valueFromBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.EnvVar 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.value_ = value_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.valueFrom_ = valueFromBuilder_ == null
              ? valueFrom_
              : valueFromBuilder_.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.V1.EnvVar) {
          return mergeFrom((io.kubernetes.client.proto.V1.EnvVar)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EnvVar other) {
        if (other == io.kubernetes.client.proto.V1.EnvVar.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasValue()) {
          value_ = other.value_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasValueFrom()) {
          mergeValueFrom(other.getValueFrom());
        }
        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: {
                value_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getValueFromFieldBuilder().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 name_ = "";
      /**
       * <pre>
       * Name of the environment variable. Must be a C_IDENTIFIER.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name of the environment variable. Must be a C_IDENTIFIER.
       * </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 of the environment variable. Must be a C_IDENTIFIER.
       * </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 of the environment variable. Must be a C_IDENTIFIER.
       * </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 of the environment variable. Must be a C_IDENTIFIER.
       * </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 of the environment variable. Must be a C_IDENTIFIER.
       * </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 value_ = "";
      /**
       * <pre>
       * Variable references $(VAR_NAME) are expanded
       * using the previously defined environment variables in the container and
       * any service environment variables. If a variable cannot be resolved,
       * the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
       * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
       * Escaped references will never be expanded, regardless of whether the variable
       * exists or not.
       * Defaults to "".
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Variable references $(VAR_NAME) are expanded
       * using the previously defined environment variables in the container and
       * any service environment variables. If a variable cannot be resolved,
       * the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
       * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
       * Escaped references will never be expanded, regardless of whether the variable
       * exists or not.
       * Defaults to "".
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Variable references $(VAR_NAME) are expanded
       * using the previously defined environment variables in the container and
       * any service environment variables. If a variable cannot be resolved,
       * the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
       * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
       * Escaped references will never be expanded, regardless of whether the variable
       * exists or not.
       * Defaults to "".
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Variable references $(VAR_NAME) are expanded
       * using the previously defined environment variables in the container and
       * any service environment variables. If a variable cannot be resolved,
       * the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
       * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
       * Escaped references will never be expanded, regardless of whether the variable
       * exists or not.
       * Defaults to "".
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Variable references $(VAR_NAME) are expanded
       * using the previously defined environment variables in the container and
       * any service environment variables. If a variable cannot be resolved,
       * the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
       * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
       * Escaped references will never be expanded, regardless of whether the variable
       * exists or not.
       * Defaults to "".
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        value_ = getDefaultInstance().getValue();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Variable references $(VAR_NAME) are expanded
       * using the previously defined environment variables in the container and
       * any service environment variables. If a variable cannot be resolved,
       * the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
       * "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
       * Escaped references will never be expanded, regardless of whether the variable
       * exists or not.
       * Defaults to "".
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.EnvVarSource valueFrom_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EnvVarSource, io.kubernetes.client.proto.V1.EnvVarSource.Builder, io.kubernetes.client.proto.V1.EnvVarSourceOrBuilder> valueFromBuilder_;
      /**
       * <pre>
       * Source for the environment variable's value. Cannot be used if value is not empty.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
       * @return Whether the valueFrom field is set.
       */
      public boolean hasValueFrom() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Source for the environment variable's value. Cannot be used if value is not empty.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
       * @return The valueFrom.
       */
      public io.kubernetes.client.proto.V1.EnvVarSource getValueFrom() {
        if (valueFromBuilder_ == null) {
          return valueFrom_ == null ? io.kubernetes.client.proto.V1.EnvVarSource.getDefaultInstance() : valueFrom_;
        } else {
          return valueFromBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Source for the environment variable's value. Cannot be used if value is not empty.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
       */
      public Builder setValueFrom(io.kubernetes.client.proto.V1.EnvVarSource value) {
        if (valueFromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          valueFrom_ = value;
        } else {
          valueFromBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Source for the environment variable's value. Cannot be used if value is not empty.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
       */
      public Builder setValueFrom(
          io.kubernetes.client.proto.V1.EnvVarSource.Builder builderForValue) {
        if (valueFromBuilder_ == null) {
          valueFrom_ = builderForValue.build();
        } else {
          valueFromBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Source for the environment variable's value. Cannot be used if value is not empty.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
       */
      public Builder mergeValueFrom(io.kubernetes.client.proto.V1.EnvVarSource value) {
        if (valueFromBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            valueFrom_ != null &&
            valueFrom_ != io.kubernetes.client.proto.V1.EnvVarSource.getDefaultInstance()) {
            getValueFromBuilder().mergeFrom(value);
          } else {
            valueFrom_ = value;
          }
        } else {
          valueFromBuilder_.mergeFrom(value);
        }
        if (valueFrom_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Source for the environment variable's value. Cannot be used if value is not empty.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
       */
      public Builder clearValueFrom() {
        bitField0_ = (bitField0_ & ~0x00000004);
        valueFrom_ = null;
        if (valueFromBuilder_ != null) {
          valueFromBuilder_.dispose();
          valueFromBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Source for the environment variable's value. Cannot be used if value is not empty.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVarSource.Builder getValueFromBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getValueFromFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Source for the environment variable's value. Cannot be used if value is not empty.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVarSourceOrBuilder getValueFromOrBuilder() {
        if (valueFromBuilder_ != null) {
          return valueFromBuilder_.getMessageOrBuilder();
        } else {
          return valueFrom_ == null ?
              io.kubernetes.client.proto.V1.EnvVarSource.getDefaultInstance() : valueFrom_;
        }
      }
      /**
       * <pre>
       * Source for the environment variable's value. Cannot be used if value is not empty.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EnvVarSource valueFrom = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EnvVarSource, io.kubernetes.client.proto.V1.EnvVarSource.Builder, io.kubernetes.client.proto.V1.EnvVarSourceOrBuilder> 
          getValueFromFieldBuilder() {
        if (valueFromBuilder_ == null) {
          valueFromBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.EnvVarSource, io.kubernetes.client.proto.V1.EnvVarSource.Builder, io.kubernetes.client.proto.V1.EnvVarSourceOrBuilder>(
                  getValueFrom(),
                  getParentForChildren(),
                  isClean());
          valueFrom_ = null;
        }
        return valueFromBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EnvVar)
    }

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

    public static io.kubernetes.client.proto.V1.EnvVar getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EnvVarSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EnvVarSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
     * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
     * @return Whether the fieldRef field is set.
     */
    boolean hasFieldRef();
    /**
     * <pre>
     * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
     * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
     * @return The fieldRef.
     */
    io.kubernetes.client.proto.V1.ObjectFieldSelector getFieldRef();
    /**
     * <pre>
     * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
     * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
     */
    io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder getFieldRefOrBuilder();

    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
     * @return Whether the resourceFieldRef field is set.
     */
    boolean hasResourceFieldRef();
    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
     * @return The resourceFieldRef.
     */
    io.kubernetes.client.proto.V1.ResourceFieldSelector getResourceFieldRef();
    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
     */
    io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder getResourceFieldRefOrBuilder();

    /**
     * <pre>
     * Selects a key of a ConfigMap.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
     * @return Whether the configMapKeyRef field is set.
     */
    boolean hasConfigMapKeyRef();
    /**
     * <pre>
     * Selects a key of a ConfigMap.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
     * @return The configMapKeyRef.
     */
    io.kubernetes.client.proto.V1.ConfigMapKeySelector getConfigMapKeyRef();
    /**
     * <pre>
     * Selects a key of a ConfigMap.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
     */
    io.kubernetes.client.proto.V1.ConfigMapKeySelectorOrBuilder getConfigMapKeyRefOrBuilder();

    /**
     * <pre>
     * Selects a key of a secret in the pod's namespace
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
     * @return Whether the secretKeyRef field is set.
     */
    boolean hasSecretKeyRef();
    /**
     * <pre>
     * Selects a key of a secret in the pod's namespace
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
     * @return The secretKeyRef.
     */
    io.kubernetes.client.proto.V1.SecretKeySelector getSecretKeyRef();
    /**
     * <pre>
     * Selects a key of a secret in the pod's namespace
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
     */
    io.kubernetes.client.proto.V1.SecretKeySelectorOrBuilder getSecretKeyRefOrBuilder();
  }
  /**
   * <pre>
   * EnvVarSource represents a source for the value of an EnvVar.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EnvVarSource}
   */
  public static final class EnvVarSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EnvVarSource)
      EnvVarSourceOrBuilder {
  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= */ "",
        EnvVarSource.class.getName());
    }
    // Use EnvVarSource.newBuilder() to construct.
    private EnvVarSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EnvVarSource() {
    }

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

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

    private int bitField0_;
    public static final int FIELDREF_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.ObjectFieldSelector fieldRef_;
    /**
     * <pre>
     * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
     * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
     * @return Whether the fieldRef field is set.
     */
    @java.lang.Override
    public boolean hasFieldRef() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
     * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
     * @return The fieldRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectFieldSelector getFieldRef() {
      return fieldRef_ == null ? io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance() : fieldRef_;
    }
    /**
     * <pre>
     * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
     * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder getFieldRefOrBuilder() {
      return fieldRef_ == null ? io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance() : fieldRef_;
    }

    public static final int RESOURCEFIELDREF_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.ResourceFieldSelector resourceFieldRef_;
    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
     * @return Whether the resourceFieldRef field is set.
     */
    @java.lang.Override
    public boolean hasResourceFieldRef() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
     * @return The resourceFieldRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceFieldSelector getResourceFieldRef() {
      return resourceFieldRef_ == null ? io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance() : resourceFieldRef_;
    }
    /**
     * <pre>
     * Selects a resource of the container: only resources limits and requests
     * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder getResourceFieldRefOrBuilder() {
      return resourceFieldRef_ == null ? io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance() : resourceFieldRef_;
    }

    public static final int CONFIGMAPKEYREF_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.ConfigMapKeySelector configMapKeyRef_;
    /**
     * <pre>
     * Selects a key of a ConfigMap.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
     * @return Whether the configMapKeyRef field is set.
     */
    @java.lang.Override
    public boolean hasConfigMapKeyRef() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Selects a key of a ConfigMap.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
     * @return The configMapKeyRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapKeySelector getConfigMapKeyRef() {
      return configMapKeyRef_ == null ? io.kubernetes.client.proto.V1.ConfigMapKeySelector.getDefaultInstance() : configMapKeyRef_;
    }
    /**
     * <pre>
     * Selects a key of a ConfigMap.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapKeySelectorOrBuilder getConfigMapKeyRefOrBuilder() {
      return configMapKeyRef_ == null ? io.kubernetes.client.proto.V1.ConfigMapKeySelector.getDefaultInstance() : configMapKeyRef_;
    }

    public static final int SECRETKEYREF_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.V1.SecretKeySelector secretKeyRef_;
    /**
     * <pre>
     * Selects a key of a secret in the pod's namespace
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
     * @return Whether the secretKeyRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretKeyRef() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Selects a key of a secret in the pod's namespace
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
     * @return The secretKeyRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretKeySelector getSecretKeyRef() {
      return secretKeyRef_ == null ? io.kubernetes.client.proto.V1.SecretKeySelector.getDefaultInstance() : secretKeyRef_;
    }
    /**
     * <pre>
     * Selects a key of a secret in the pod's namespace
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretKeySelectorOrBuilder getSecretKeyRefOrBuilder() {
      return secretKeyRef_ == null ? io.kubernetes.client.proto.V1.SecretKeySelector.getDefaultInstance() : secretKeyRef_;
    }

    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, getFieldRef());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getResourceFieldRef());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getConfigMapKeyRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getSecretKeyRef());
      }
      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, getFieldRef());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getResourceFieldRef());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getConfigMapKeyRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getSecretKeyRef());
      }
      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.V1.EnvVarSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EnvVarSource other = (io.kubernetes.client.proto.V1.EnvVarSource) obj;

      if (hasFieldRef() != other.hasFieldRef()) return false;
      if (hasFieldRef()) {
        if (!getFieldRef()
            .equals(other.getFieldRef())) return false;
      }
      if (hasResourceFieldRef() != other.hasResourceFieldRef()) return false;
      if (hasResourceFieldRef()) {
        if (!getResourceFieldRef()
            .equals(other.getResourceFieldRef())) return false;
      }
      if (hasConfigMapKeyRef() != other.hasConfigMapKeyRef()) return false;
      if (hasConfigMapKeyRef()) {
        if (!getConfigMapKeyRef()
            .equals(other.getConfigMapKeyRef())) return false;
      }
      if (hasSecretKeyRef() != other.hasSecretKeyRef()) return false;
      if (hasSecretKeyRef()) {
        if (!getSecretKeyRef()
            .equals(other.getSecretKeyRef())) 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 (hasFieldRef()) {
        hash = (37 * hash) + FIELDREF_FIELD_NUMBER;
        hash = (53 * hash) + getFieldRef().hashCode();
      }
      if (hasResourceFieldRef()) {
        hash = (37 * hash) + RESOURCEFIELDREF_FIELD_NUMBER;
        hash = (53 * hash) + getResourceFieldRef().hashCode();
      }
      if (hasConfigMapKeyRef()) {
        hash = (37 * hash) + CONFIGMAPKEYREF_FIELD_NUMBER;
        hash = (53 * hash) + getConfigMapKeyRef().hashCode();
      }
      if (hasSecretKeyRef()) {
        hash = (37 * hash) + SECRETKEYREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretKeyRef().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EnvVarSource 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.V1.EnvVarSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EnvVarSource 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.V1.EnvVarSource 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>
     * EnvVarSource represents a source for the value of an EnvVar.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EnvVarSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EnvVarSource)
        io.kubernetes.client.proto.V1.EnvVarSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EnvVarSource_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getFieldRefFieldBuilder();
          getResourceFieldRefFieldBuilder();
          getConfigMapKeyRefFieldBuilder();
          getSecretKeyRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        fieldRef_ = null;
        if (fieldRefBuilder_ != null) {
          fieldRefBuilder_.dispose();
          fieldRefBuilder_ = null;
        }
        resourceFieldRef_ = null;
        if (resourceFieldRefBuilder_ != null) {
          resourceFieldRefBuilder_.dispose();
          resourceFieldRefBuilder_ = null;
        }
        configMapKeyRef_ = null;
        if (configMapKeyRefBuilder_ != null) {
          configMapKeyRefBuilder_.dispose();
          configMapKeyRefBuilder_ = null;
        }
        secretKeyRef_ = null;
        if (secretKeyRefBuilder_ != null) {
          secretKeyRefBuilder_.dispose();
          secretKeyRefBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.EnvVarSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.fieldRef_ = fieldRefBuilder_ == null
              ? fieldRef_
              : fieldRefBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.resourceFieldRef_ = resourceFieldRefBuilder_ == null
              ? resourceFieldRef_
              : resourceFieldRefBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.configMapKeyRef_ = configMapKeyRefBuilder_ == null
              ? configMapKeyRef_
              : configMapKeyRefBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.secretKeyRef_ = secretKeyRefBuilder_ == null
              ? secretKeyRef_
              : secretKeyRefBuilder_.build();
          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.V1.EnvVarSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.EnvVarSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EnvVarSource other) {
        if (other == io.kubernetes.client.proto.V1.EnvVarSource.getDefaultInstance()) return this;
        if (other.hasFieldRef()) {
          mergeFieldRef(other.getFieldRef());
        }
        if (other.hasResourceFieldRef()) {
          mergeResourceFieldRef(other.getResourceFieldRef());
        }
        if (other.hasConfigMapKeyRef()) {
          mergeConfigMapKeyRef(other.getConfigMapKeyRef());
        }
        if (other.hasSecretKeyRef()) {
          mergeSecretKeyRef(other.getSecretKeyRef());
        }
        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(
                    getFieldRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getResourceFieldRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getConfigMapKeyRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getSecretKeyRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.V1.ObjectFieldSelector fieldRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectFieldSelector, io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder, io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder> fieldRefBuilder_;
      /**
       * <pre>
       * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
       * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
       * @return Whether the fieldRef field is set.
       */
      public boolean hasFieldRef() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
       * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
       * @return The fieldRef.
       */
      public io.kubernetes.client.proto.V1.ObjectFieldSelector getFieldRef() {
        if (fieldRefBuilder_ == null) {
          return fieldRef_ == null ? io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance() : fieldRef_;
        } else {
          return fieldRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
       * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
       */
      public Builder setFieldRef(io.kubernetes.client.proto.V1.ObjectFieldSelector value) {
        if (fieldRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fieldRef_ = value;
        } else {
          fieldRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
       * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
       */
      public Builder setFieldRef(
          io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder builderForValue) {
        if (fieldRefBuilder_ == null) {
          fieldRef_ = builderForValue.build();
        } else {
          fieldRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
       * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
       */
      public Builder mergeFieldRef(io.kubernetes.client.proto.V1.ObjectFieldSelector value) {
        if (fieldRefBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            fieldRef_ != null &&
            fieldRef_ != io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance()) {
            getFieldRefBuilder().mergeFrom(value);
          } else {
            fieldRef_ = value;
          }
        } else {
          fieldRefBuilder_.mergeFrom(value);
        }
        if (fieldRef_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
       * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
       */
      public Builder clearFieldRef() {
        bitField0_ = (bitField0_ & ~0x00000001);
        fieldRef_ = null;
        if (fieldRefBuilder_ != null) {
          fieldRefBuilder_.dispose();
          fieldRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
       * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder getFieldRefBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFieldRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
       * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder getFieldRefOrBuilder() {
        if (fieldRefBuilder_ != null) {
          return fieldRefBuilder_.getMessageOrBuilder();
        } else {
          return fieldRef_ == null ?
              io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance() : fieldRef_;
        }
      }
      /**
       * <pre>
       * Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`,
       * spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectFieldSelector fieldRef = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectFieldSelector, io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder, io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder> 
          getFieldRefFieldBuilder() {
        if (fieldRefBuilder_ == null) {
          fieldRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ObjectFieldSelector, io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder, io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder>(
                  getFieldRef(),
                  getParentForChildren(),
                  isClean());
          fieldRef_ = null;
        }
        return fieldRefBuilder_;
      }

      private io.kubernetes.client.proto.V1.ResourceFieldSelector resourceFieldRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceFieldSelector, io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder, io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder> resourceFieldRefBuilder_;
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
       * @return Whether the resourceFieldRef field is set.
       */
      public boolean hasResourceFieldRef() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
       * @return The resourceFieldRef.
       */
      public io.kubernetes.client.proto.V1.ResourceFieldSelector getResourceFieldRef() {
        if (resourceFieldRefBuilder_ == null) {
          return resourceFieldRef_ == null ? io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance() : resourceFieldRef_;
        } else {
          return resourceFieldRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
       */
      public Builder setResourceFieldRef(io.kubernetes.client.proto.V1.ResourceFieldSelector value) {
        if (resourceFieldRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resourceFieldRef_ = value;
        } else {
          resourceFieldRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
       */
      public Builder setResourceFieldRef(
          io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder builderForValue) {
        if (resourceFieldRefBuilder_ == null) {
          resourceFieldRef_ = builderForValue.build();
        } else {
          resourceFieldRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
       */
      public Builder mergeResourceFieldRef(io.kubernetes.client.proto.V1.ResourceFieldSelector value) {
        if (resourceFieldRefBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            resourceFieldRef_ != null &&
            resourceFieldRef_ != io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance()) {
            getResourceFieldRefBuilder().mergeFrom(value);
          } else {
            resourceFieldRef_ = value;
          }
        } else {
          resourceFieldRefBuilder_.mergeFrom(value);
        }
        if (resourceFieldRef_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
       */
      public Builder clearResourceFieldRef() {
        bitField0_ = (bitField0_ & ~0x00000002);
        resourceFieldRef_ = null;
        if (resourceFieldRefBuilder_ != null) {
          resourceFieldRefBuilder_.dispose();
          resourceFieldRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder getResourceFieldRefBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getResourceFieldRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder getResourceFieldRefOrBuilder() {
        if (resourceFieldRefBuilder_ != null) {
          return resourceFieldRefBuilder_.getMessageOrBuilder();
        } else {
          return resourceFieldRef_ == null ?
              io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance() : resourceFieldRef_;
        }
      }
      /**
       * <pre>
       * Selects a resource of the container: only resources limits and requests
       * (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceFieldSelector resourceFieldRef = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceFieldSelector, io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder, io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder> 
          getResourceFieldRefFieldBuilder() {
        if (resourceFieldRefBuilder_ == null) {
          resourceFieldRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ResourceFieldSelector, io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder, io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder>(
                  getResourceFieldRef(),
                  getParentForChildren(),
                  isClean());
          resourceFieldRef_ = null;
        }
        return resourceFieldRefBuilder_;
      }

      private io.kubernetes.client.proto.V1.ConfigMapKeySelector configMapKeyRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMapKeySelector, io.kubernetes.client.proto.V1.ConfigMapKeySelector.Builder, io.kubernetes.client.proto.V1.ConfigMapKeySelectorOrBuilder> configMapKeyRefBuilder_;
      /**
       * <pre>
       * Selects a key of a ConfigMap.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
       * @return Whether the configMapKeyRef field is set.
       */
      public boolean hasConfigMapKeyRef() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Selects a key of a ConfigMap.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
       * @return The configMapKeyRef.
       */
      public io.kubernetes.client.proto.V1.ConfigMapKeySelector getConfigMapKeyRef() {
        if (configMapKeyRefBuilder_ == null) {
          return configMapKeyRef_ == null ? io.kubernetes.client.proto.V1.ConfigMapKeySelector.getDefaultInstance() : configMapKeyRef_;
        } else {
          return configMapKeyRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Selects a key of a ConfigMap.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
       */
      public Builder setConfigMapKeyRef(io.kubernetes.client.proto.V1.ConfigMapKeySelector value) {
        if (configMapKeyRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configMapKeyRef_ = value;
        } else {
          configMapKeyRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a key of a ConfigMap.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
       */
      public Builder setConfigMapKeyRef(
          io.kubernetes.client.proto.V1.ConfigMapKeySelector.Builder builderForValue) {
        if (configMapKeyRefBuilder_ == null) {
          configMapKeyRef_ = builderForValue.build();
        } else {
          configMapKeyRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a key of a ConfigMap.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
       */
      public Builder mergeConfigMapKeyRef(io.kubernetes.client.proto.V1.ConfigMapKeySelector value) {
        if (configMapKeyRefBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            configMapKeyRef_ != null &&
            configMapKeyRef_ != io.kubernetes.client.proto.V1.ConfigMapKeySelector.getDefaultInstance()) {
            getConfigMapKeyRefBuilder().mergeFrom(value);
          } else {
            configMapKeyRef_ = value;
          }
        } else {
          configMapKeyRefBuilder_.mergeFrom(value);
        }
        if (configMapKeyRef_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Selects a key of a ConfigMap.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
       */
      public Builder clearConfigMapKeyRef() {
        bitField0_ = (bitField0_ & ~0x00000004);
        configMapKeyRef_ = null;
        if (configMapKeyRefBuilder_ != null) {
          configMapKeyRefBuilder_.dispose();
          configMapKeyRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a key of a ConfigMap.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ConfigMapKeySelector.Builder getConfigMapKeyRefBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getConfigMapKeyRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Selects a key of a ConfigMap.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ConfigMapKeySelectorOrBuilder getConfigMapKeyRefOrBuilder() {
        if (configMapKeyRefBuilder_ != null) {
          return configMapKeyRefBuilder_.getMessageOrBuilder();
        } else {
          return configMapKeyRef_ == null ?
              io.kubernetes.client.proto.V1.ConfigMapKeySelector.getDefaultInstance() : configMapKeyRef_;
        }
      }
      /**
       * <pre>
       * Selects a key of a ConfigMap.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapKeySelector configMapKeyRef = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMapKeySelector, io.kubernetes.client.proto.V1.ConfigMapKeySelector.Builder, io.kubernetes.client.proto.V1.ConfigMapKeySelectorOrBuilder> 
          getConfigMapKeyRefFieldBuilder() {
        if (configMapKeyRefBuilder_ == null) {
          configMapKeyRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ConfigMapKeySelector, io.kubernetes.client.proto.V1.ConfigMapKeySelector.Builder, io.kubernetes.client.proto.V1.ConfigMapKeySelectorOrBuilder>(
                  getConfigMapKeyRef(),
                  getParentForChildren(),
                  isClean());
          configMapKeyRef_ = null;
        }
        return configMapKeyRefBuilder_;
      }

      private io.kubernetes.client.proto.V1.SecretKeySelector secretKeyRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretKeySelector, io.kubernetes.client.proto.V1.SecretKeySelector.Builder, io.kubernetes.client.proto.V1.SecretKeySelectorOrBuilder> secretKeyRefBuilder_;
      /**
       * <pre>
       * Selects a key of a secret in the pod's namespace
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
       * @return Whether the secretKeyRef field is set.
       */
      public boolean hasSecretKeyRef() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Selects a key of a secret in the pod's namespace
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
       * @return The secretKeyRef.
       */
      public io.kubernetes.client.proto.V1.SecretKeySelector getSecretKeyRef() {
        if (secretKeyRefBuilder_ == null) {
          return secretKeyRef_ == null ? io.kubernetes.client.proto.V1.SecretKeySelector.getDefaultInstance() : secretKeyRef_;
        } else {
          return secretKeyRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Selects a key of a secret in the pod's namespace
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
       */
      public Builder setSecretKeyRef(io.kubernetes.client.proto.V1.SecretKeySelector value) {
        if (secretKeyRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretKeyRef_ = value;
        } else {
          secretKeyRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a key of a secret in the pod's namespace
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
       */
      public Builder setSecretKeyRef(
          io.kubernetes.client.proto.V1.SecretKeySelector.Builder builderForValue) {
        if (secretKeyRefBuilder_ == null) {
          secretKeyRef_ = builderForValue.build();
        } else {
          secretKeyRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a key of a secret in the pod's namespace
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
       */
      public Builder mergeSecretKeyRef(io.kubernetes.client.proto.V1.SecretKeySelector value) {
        if (secretKeyRefBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            secretKeyRef_ != null &&
            secretKeyRef_ != io.kubernetes.client.proto.V1.SecretKeySelector.getDefaultInstance()) {
            getSecretKeyRefBuilder().mergeFrom(value);
          } else {
            secretKeyRef_ = value;
          }
        } else {
          secretKeyRefBuilder_.mergeFrom(value);
        }
        if (secretKeyRef_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Selects a key of a secret in the pod's namespace
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
       */
      public Builder clearSecretKeyRef() {
        bitField0_ = (bitField0_ & ~0x00000008);
        secretKeyRef_ = null;
        if (secretKeyRefBuilder_ != null) {
          secretKeyRefBuilder_.dispose();
          secretKeyRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Selects a key of a secret in the pod's namespace
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
       */
      public io.kubernetes.client.proto.V1.SecretKeySelector.Builder getSecretKeyRefBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getSecretKeyRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Selects a key of a secret in the pod's namespace
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
       */
      public io.kubernetes.client.proto.V1.SecretKeySelectorOrBuilder getSecretKeyRefOrBuilder() {
        if (secretKeyRefBuilder_ != null) {
          return secretKeyRefBuilder_.getMessageOrBuilder();
        } else {
          return secretKeyRef_ == null ?
              io.kubernetes.client.proto.V1.SecretKeySelector.getDefaultInstance() : secretKeyRef_;
        }
      }
      /**
       * <pre>
       * Selects a key of a secret in the pod's namespace
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretKeySelector secretKeyRef = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretKeySelector, io.kubernetes.client.proto.V1.SecretKeySelector.Builder, io.kubernetes.client.proto.V1.SecretKeySelectorOrBuilder> 
          getSecretKeyRefFieldBuilder() {
        if (secretKeyRefBuilder_ == null) {
          secretKeyRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretKeySelector, io.kubernetes.client.proto.V1.SecretKeySelector.Builder, io.kubernetes.client.proto.V1.SecretKeySelectorOrBuilder>(
                  getSecretKeyRef(),
                  getParentForChildren(),
                  isClean());
          secretKeyRef_ = null;
        }
        return secretKeyRefBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EnvVarSource)
    }

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

    public static io.kubernetes.client.proto.V1.EnvVarSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EphemeralContainerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EphemeralContainer)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Ephemeral containers have all of the fields of Container, plus additional fields
     * specific to ephemeral containers. Fields in common with Container are in the
     * following inlined struct so than an EphemeralContainer may easily be converted
     * to a Container.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
     * @return Whether the ephemeralContainerCommon field is set.
     */
    boolean hasEphemeralContainerCommon();
    /**
     * <pre>
     * Ephemeral containers have all of the fields of Container, plus additional fields
     * specific to ephemeral containers. Fields in common with Container are in the
     * following inlined struct so than an EphemeralContainer may easily be converted
     * to a Container.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
     * @return The ephemeralContainerCommon.
     */
    io.kubernetes.client.proto.V1.EphemeralContainerCommon getEphemeralContainerCommon();
    /**
     * <pre>
     * Ephemeral containers have all of the fields of Container, plus additional fields
     * specific to ephemeral containers. Fields in common with Container are in the
     * following inlined struct so than an EphemeralContainer may easily be converted
     * to a Container.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
     */
    io.kubernetes.client.proto.V1.EphemeralContainerCommonOrBuilder getEphemeralContainerCommonOrBuilder();

    /**
     * <pre>
     * If set, the name of the container from PodSpec that this ephemeral container targets.
     * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
     * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
     *
     * The container runtime must implement support for this feature. If the runtime does not
     * support namespace targeting then the result of setting this field is undefined.
     * +optional
     * </pre>
     *
     * <code>optional string targetContainerName = 2;</code>
     * @return Whether the targetContainerName field is set.
     */
    boolean hasTargetContainerName();
    /**
     * <pre>
     * If set, the name of the container from PodSpec that this ephemeral container targets.
     * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
     * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
     *
     * The container runtime must implement support for this feature. If the runtime does not
     * support namespace targeting then the result of setting this field is undefined.
     * +optional
     * </pre>
     *
     * <code>optional string targetContainerName = 2;</code>
     * @return The targetContainerName.
     */
    java.lang.String getTargetContainerName();
    /**
     * <pre>
     * If set, the name of the container from PodSpec that this ephemeral container targets.
     * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
     * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
     *
     * The container runtime must implement support for this feature. If the runtime does not
     * support namespace targeting then the result of setting this field is undefined.
     * +optional
     * </pre>
     *
     * <code>optional string targetContainerName = 2;</code>
     * @return The bytes for targetContainerName.
     */
    com.google.protobuf.ByteString
        getTargetContainerNameBytes();
  }
  /**
   * <pre>
   * An EphemeralContainer is a temporary container that you may add to an existing Pod for
   * user-initiated activities such as debugging. Ephemeral containers have no resource or
   * scheduling guarantees, and they will not be restarted when they exit or when a Pod is
   * removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the
   * Pod to exceed its resource allocation.
   *
   * To add an ephemeral container, use the ephemeralcontainers subresource of an existing
   * Pod. Ephemeral containers may not be removed or restarted.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EphemeralContainer}
   */
  public static final class EphemeralContainer extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EphemeralContainer)
      EphemeralContainerOrBuilder {
  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= */ "",
        EphemeralContainer.class.getName());
    }
    // Use EphemeralContainer.newBuilder() to construct.
    private EphemeralContainer(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EphemeralContainer() {
      targetContainerName_ = "";
    }

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

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

    private int bitField0_;
    public static final int EPHEMERALCONTAINERCOMMON_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.EphemeralContainerCommon ephemeralContainerCommon_;
    /**
     * <pre>
     * Ephemeral containers have all of the fields of Container, plus additional fields
     * specific to ephemeral containers. Fields in common with Container are in the
     * following inlined struct so than an EphemeralContainer may easily be converted
     * to a Container.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
     * @return Whether the ephemeralContainerCommon field is set.
     */
    @java.lang.Override
    public boolean hasEphemeralContainerCommon() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Ephemeral containers have all of the fields of Container, plus additional fields
     * specific to ephemeral containers. Fields in common with Container are in the
     * following inlined struct so than an EphemeralContainer may easily be converted
     * to a Container.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
     * @return The ephemeralContainerCommon.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EphemeralContainerCommon getEphemeralContainerCommon() {
      return ephemeralContainerCommon_ == null ? io.kubernetes.client.proto.V1.EphemeralContainerCommon.getDefaultInstance() : ephemeralContainerCommon_;
    }
    /**
     * <pre>
     * Ephemeral containers have all of the fields of Container, plus additional fields
     * specific to ephemeral containers. Fields in common with Container are in the
     * following inlined struct so than an EphemeralContainer may easily be converted
     * to a Container.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EphemeralContainerCommonOrBuilder getEphemeralContainerCommonOrBuilder() {
      return ephemeralContainerCommon_ == null ? io.kubernetes.client.proto.V1.EphemeralContainerCommon.getDefaultInstance() : ephemeralContainerCommon_;
    }

    public static final int TARGETCONTAINERNAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object targetContainerName_ = "";
    /**
     * <pre>
     * If set, the name of the container from PodSpec that this ephemeral container targets.
     * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
     * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
     *
     * The container runtime must implement support for this feature. If the runtime does not
     * support namespace targeting then the result of setting this field is undefined.
     * +optional
     * </pre>
     *
     * <code>optional string targetContainerName = 2;</code>
     * @return Whether the targetContainerName field is set.
     */
    @java.lang.Override
    public boolean hasTargetContainerName() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * If set, the name of the container from PodSpec that this ephemeral container targets.
     * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
     * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
     *
     * The container runtime must implement support for this feature. If the runtime does not
     * support namespace targeting then the result of setting this field is undefined.
     * +optional
     * </pre>
     *
     * <code>optional string targetContainerName = 2;</code>
     * @return The targetContainerName.
     */
    @java.lang.Override
    public java.lang.String getTargetContainerName() {
      java.lang.Object ref = targetContainerName_;
      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()) {
          targetContainerName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * If set, the name of the container from PodSpec that this ephemeral container targets.
     * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
     * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
     *
     * The container runtime must implement support for this feature. If the runtime does not
     * support namespace targeting then the result of setting this field is undefined.
     * +optional
     * </pre>
     *
     * <code>optional string targetContainerName = 2;</code>
     * @return The bytes for targetContainerName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTargetContainerNameBytes() {
      java.lang.Object ref = targetContainerName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetContainerName_ = 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)) {
        output.writeMessage(1, getEphemeralContainerCommon());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, targetContainerName_);
      }
      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, getEphemeralContainerCommon());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, targetContainerName_);
      }
      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.V1.EphemeralContainer)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EphemeralContainer other = (io.kubernetes.client.proto.V1.EphemeralContainer) obj;

      if (hasEphemeralContainerCommon() != other.hasEphemeralContainerCommon()) return false;
      if (hasEphemeralContainerCommon()) {
        if (!getEphemeralContainerCommon()
            .equals(other.getEphemeralContainerCommon())) return false;
      }
      if (hasTargetContainerName() != other.hasTargetContainerName()) return false;
      if (hasTargetContainerName()) {
        if (!getTargetContainerName()
            .equals(other.getTargetContainerName())) 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 (hasEphemeralContainerCommon()) {
        hash = (37 * hash) + EPHEMERALCONTAINERCOMMON_FIELD_NUMBER;
        hash = (53 * hash) + getEphemeralContainerCommon().hashCode();
      }
      if (hasTargetContainerName()) {
        hash = (37 * hash) + TARGETCONTAINERNAME_FIELD_NUMBER;
        hash = (53 * hash) + getTargetContainerName().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EphemeralContainer 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.V1.EphemeralContainer parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EphemeralContainer 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.V1.EphemeralContainer 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>
     * An EphemeralContainer is a temporary container that you may add to an existing Pod for
     * user-initiated activities such as debugging. Ephemeral containers have no resource or
     * scheduling guarantees, and they will not be restarted when they exit or when a Pod is
     * removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the
     * Pod to exceed its resource allocation.
     *
     * To add an ephemeral container, use the ephemeralcontainers subresource of an existing
     * Pod. Ephemeral containers may not be removed or restarted.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EphemeralContainer}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EphemeralContainer)
        io.kubernetes.client.proto.V1.EphemeralContainerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EphemeralContainer_descriptor;
      }

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

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.EphemeralContainer result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ephemeralContainerCommon_ = ephemeralContainerCommonBuilder_ == null
              ? ephemeralContainerCommon_
              : ephemeralContainerCommonBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.targetContainerName_ = targetContainerName_;
          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.V1.EphemeralContainer) {
          return mergeFrom((io.kubernetes.client.proto.V1.EphemeralContainer)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EphemeralContainer other) {
        if (other == io.kubernetes.client.proto.V1.EphemeralContainer.getDefaultInstance()) return this;
        if (other.hasEphemeralContainerCommon()) {
          mergeEphemeralContainerCommon(other.getEphemeralContainerCommon());
        }
        if (other.hasTargetContainerName()) {
          targetContainerName_ = other.targetContainerName_;
          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: {
                input.readMessage(
                    getEphemeralContainerCommonFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                targetContainerName_ = 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 io.kubernetes.client.proto.V1.EphemeralContainerCommon ephemeralContainerCommon_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EphemeralContainerCommon, io.kubernetes.client.proto.V1.EphemeralContainerCommon.Builder, io.kubernetes.client.proto.V1.EphemeralContainerCommonOrBuilder> ephemeralContainerCommonBuilder_;
      /**
       * <pre>
       * Ephemeral containers have all of the fields of Container, plus additional fields
       * specific to ephemeral containers. Fields in common with Container are in the
       * following inlined struct so than an EphemeralContainer may easily be converted
       * to a Container.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
       * @return Whether the ephemeralContainerCommon field is set.
       */
      public boolean hasEphemeralContainerCommon() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Ephemeral containers have all of the fields of Container, plus additional fields
       * specific to ephemeral containers. Fields in common with Container are in the
       * following inlined struct so than an EphemeralContainer may easily be converted
       * to a Container.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
       * @return The ephemeralContainerCommon.
       */
      public io.kubernetes.client.proto.V1.EphemeralContainerCommon getEphemeralContainerCommon() {
        if (ephemeralContainerCommonBuilder_ == null) {
          return ephemeralContainerCommon_ == null ? io.kubernetes.client.proto.V1.EphemeralContainerCommon.getDefaultInstance() : ephemeralContainerCommon_;
        } else {
          return ephemeralContainerCommonBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Ephemeral containers have all of the fields of Container, plus additional fields
       * specific to ephemeral containers. Fields in common with Container are in the
       * following inlined struct so than an EphemeralContainer may easily be converted
       * to a Container.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
       */
      public Builder setEphemeralContainerCommon(io.kubernetes.client.proto.V1.EphemeralContainerCommon value) {
        if (ephemeralContainerCommonBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ephemeralContainerCommon_ = value;
        } else {
          ephemeralContainerCommonBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ephemeral containers have all of the fields of Container, plus additional fields
       * specific to ephemeral containers. Fields in common with Container are in the
       * following inlined struct so than an EphemeralContainer may easily be converted
       * to a Container.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
       */
      public Builder setEphemeralContainerCommon(
          io.kubernetes.client.proto.V1.EphemeralContainerCommon.Builder builderForValue) {
        if (ephemeralContainerCommonBuilder_ == null) {
          ephemeralContainerCommon_ = builderForValue.build();
        } else {
          ephemeralContainerCommonBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ephemeral containers have all of the fields of Container, plus additional fields
       * specific to ephemeral containers. Fields in common with Container are in the
       * following inlined struct so than an EphemeralContainer may easily be converted
       * to a Container.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
       */
      public Builder mergeEphemeralContainerCommon(io.kubernetes.client.proto.V1.EphemeralContainerCommon value) {
        if (ephemeralContainerCommonBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            ephemeralContainerCommon_ != null &&
            ephemeralContainerCommon_ != io.kubernetes.client.proto.V1.EphemeralContainerCommon.getDefaultInstance()) {
            getEphemeralContainerCommonBuilder().mergeFrom(value);
          } else {
            ephemeralContainerCommon_ = value;
          }
        } else {
          ephemeralContainerCommonBuilder_.mergeFrom(value);
        }
        if (ephemeralContainerCommon_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Ephemeral containers have all of the fields of Container, plus additional fields
       * specific to ephemeral containers. Fields in common with Container are in the
       * following inlined struct so than an EphemeralContainer may easily be converted
       * to a Container.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
       */
      public Builder clearEphemeralContainerCommon() {
        bitField0_ = (bitField0_ & ~0x00000001);
        ephemeralContainerCommon_ = null;
        if (ephemeralContainerCommonBuilder_ != null) {
          ephemeralContainerCommonBuilder_.dispose();
          ephemeralContainerCommonBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ephemeral containers have all of the fields of Container, plus additional fields
       * specific to ephemeral containers. Fields in common with Container are in the
       * following inlined struct so than an EphemeralContainer may easily be converted
       * to a Container.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
       */
      public io.kubernetes.client.proto.V1.EphemeralContainerCommon.Builder getEphemeralContainerCommonBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getEphemeralContainerCommonFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ephemeral containers have all of the fields of Container, plus additional fields
       * specific to ephemeral containers. Fields in common with Container are in the
       * following inlined struct so than an EphemeralContainer may easily be converted
       * to a Container.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
       */
      public io.kubernetes.client.proto.V1.EphemeralContainerCommonOrBuilder getEphemeralContainerCommonOrBuilder() {
        if (ephemeralContainerCommonBuilder_ != null) {
          return ephemeralContainerCommonBuilder_.getMessageOrBuilder();
        } else {
          return ephemeralContainerCommon_ == null ?
              io.kubernetes.client.proto.V1.EphemeralContainerCommon.getDefaultInstance() : ephemeralContainerCommon_;
        }
      }
      /**
       * <pre>
       * Ephemeral containers have all of the fields of Container, plus additional fields
       * specific to ephemeral containers. Fields in common with Container are in the
       * following inlined struct so than an EphemeralContainer may easily be converted
       * to a Container.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralContainerCommon ephemeralContainerCommon = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EphemeralContainerCommon, io.kubernetes.client.proto.V1.EphemeralContainerCommon.Builder, io.kubernetes.client.proto.V1.EphemeralContainerCommonOrBuilder> 
          getEphemeralContainerCommonFieldBuilder() {
        if (ephemeralContainerCommonBuilder_ == null) {
          ephemeralContainerCommonBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.EphemeralContainerCommon, io.kubernetes.client.proto.V1.EphemeralContainerCommon.Builder, io.kubernetes.client.proto.V1.EphemeralContainerCommonOrBuilder>(
                  getEphemeralContainerCommon(),
                  getParentForChildren(),
                  isClean());
          ephemeralContainerCommon_ = null;
        }
        return ephemeralContainerCommonBuilder_;
      }

      private java.lang.Object targetContainerName_ = "";
      /**
       * <pre>
       * If set, the name of the container from PodSpec that this ephemeral container targets.
       * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
       * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
       *
       * The container runtime must implement support for this feature. If the runtime does not
       * support namespace targeting then the result of setting this field is undefined.
       * +optional
       * </pre>
       *
       * <code>optional string targetContainerName = 2;</code>
       * @return Whether the targetContainerName field is set.
       */
      public boolean hasTargetContainerName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * If set, the name of the container from PodSpec that this ephemeral container targets.
       * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
       * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
       *
       * The container runtime must implement support for this feature. If the runtime does not
       * support namespace targeting then the result of setting this field is undefined.
       * +optional
       * </pre>
       *
       * <code>optional string targetContainerName = 2;</code>
       * @return The targetContainerName.
       */
      public java.lang.String getTargetContainerName() {
        java.lang.Object ref = targetContainerName_;
        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()) {
            targetContainerName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * If set, the name of the container from PodSpec that this ephemeral container targets.
       * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
       * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
       *
       * The container runtime must implement support for this feature. If the runtime does not
       * support namespace targeting then the result of setting this field is undefined.
       * +optional
       * </pre>
       *
       * <code>optional string targetContainerName = 2;</code>
       * @return The bytes for targetContainerName.
       */
      public com.google.protobuf.ByteString
          getTargetContainerNameBytes() {
        java.lang.Object ref = targetContainerName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetContainerName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * If set, the name of the container from PodSpec that this ephemeral container targets.
       * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
       * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
       *
       * The container runtime must implement support for this feature. If the runtime does not
       * support namespace targeting then the result of setting this field is undefined.
       * +optional
       * </pre>
       *
       * <code>optional string targetContainerName = 2;</code>
       * @param value The targetContainerName to set.
       * @return This builder for chaining.
       */
      public Builder setTargetContainerName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        targetContainerName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If set, the name of the container from PodSpec that this ephemeral container targets.
       * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
       * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
       *
       * The container runtime must implement support for this feature. If the runtime does not
       * support namespace targeting then the result of setting this field is undefined.
       * +optional
       * </pre>
       *
       * <code>optional string targetContainerName = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetContainerName() {
        targetContainerName_ = getDefaultInstance().getTargetContainerName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If set, the name of the container from PodSpec that this ephemeral container targets.
       * The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
       * If not set then the ephemeral container uses the namespaces configured in the Pod spec.
       *
       * The container runtime must implement support for this feature. If the runtime does not
       * support namespace targeting then the result of setting this field is undefined.
       * +optional
       * </pre>
       *
       * <code>optional string targetContainerName = 2;</code>
       * @param value The bytes for targetContainerName to set.
       * @return This builder for chaining.
       */
      public Builder setTargetContainerNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        targetContainerName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EphemeralContainer)
    }

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

    public static io.kubernetes.client.proto.V1.EphemeralContainer getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EphemeralContainerCommonOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EphemeralContainerCommon)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of the ephemeral container specified as a DNS_LABEL.
     * This name must be unique among all containers, init containers and ephemeral containers.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name of the ephemeral container specified as a DNS_LABEL.
     * This name must be unique among all containers, init containers and ephemeral containers.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the ephemeral container specified as a DNS_LABEL.
     * This name must be unique among all containers, init containers and ephemeral containers.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return Whether the image field is set.
     */
    boolean hasImage();
    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The image.
     */
    java.lang.String getImage();
    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The bytes for image.
     */
    com.google.protobuf.ByteString
        getImageBytes();

    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @return A list containing the command.
     */
    java.util.List<java.lang.String>
        getCommandList();
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @return The count of command.
     */
    int getCommandCount();
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @param index The index of the element to return.
     * @return The command at the given index.
     */
    java.lang.String getCommand(int index);
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the command at the given index.
     */
    com.google.protobuf.ByteString
        getCommandBytes(int index);

    /**
     * <pre>
     * Arguments to the entrypoint.
     * The image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @return A list containing the args.
     */
    java.util.List<java.lang.String>
        getArgsList();
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @return The count of args.
     */
    int getArgsCount();
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @param index The index of the element to return.
     * @return The args at the given index.
     */
    java.lang.String getArgs(int index);
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the args at the given index.
     */
    com.google.protobuf.ByteString
        getArgsBytes(int index);

    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return Whether the workingDir field is set.
     */
    boolean hasWorkingDir();
    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return The workingDir.
     */
    java.lang.String getWorkingDir();
    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return The bytes for workingDir.
     */
    com.google.protobuf.ByteString
        getWorkingDirBytes();

    /**
     * <pre>
     * Ports are not allowed for ephemeral containers.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ContainerPort> 
        getPortsList();
    /**
     * <pre>
     * Ports are not allowed for ephemeral containers.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    io.kubernetes.client.proto.V1.ContainerPort getPorts(int index);
    /**
     * <pre>
     * Ports are not allowed for ephemeral containers.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    int getPortsCount();
    /**
     * <pre>
     * Ports are not allowed for ephemeral containers.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ContainerPortOrBuilder> 
        getPortsOrBuilderList();
    /**
     * <pre>
     * Ports are not allowed for ephemeral containers.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    io.kubernetes.client.proto.V1.ContainerPortOrBuilder getPortsOrBuilder(
        int index);

    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.EnvFromSource> 
        getEnvFromList();
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    io.kubernetes.client.proto.V1.EnvFromSource getEnvFrom(int index);
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    int getEnvFromCount();
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder> 
        getEnvFromOrBuilderList();
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder getEnvFromOrBuilder(
        int index);

    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.EnvVar> 
        getEnvList();
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    io.kubernetes.client.proto.V1.EnvVar getEnv(int index);
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    int getEnvCount();
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EnvVarOrBuilder> 
        getEnvOrBuilderList();
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    io.kubernetes.client.proto.V1.EnvVarOrBuilder getEnvOrBuilder(
        int index);

    /**
     * <pre>
     * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
     * already allocated to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     * @return Whether the resources field is set.
     */
    boolean hasResources();
    /**
     * <pre>
     * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
     * already allocated to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     * @return The resources.
     */
    io.kubernetes.client.proto.V1.ResourceRequirements getResources();
    /**
     * <pre>
     * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
     * already allocated to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     */
    io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder getResourcesOrBuilder();

    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy> 
        getResizePolicyList();
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    io.kubernetes.client.proto.V1.ContainerResizePolicy getResizePolicy(int index);
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    int getResizePolicyCount();
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder> 
        getResizePolicyOrBuilderList();
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder getResizePolicyOrBuilder(
        int index);

    /**
     * <pre>
     * Restart policy for the container to manage the restart behavior of each
     * container within a pod.
     * This may only be set for init containers. You cannot set this field on
     * ephemeral containers.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return Whether the restartPolicy field is set.
     */
    boolean hasRestartPolicy();
    /**
     * <pre>
     * Restart policy for the container to manage the restart behavior of each
     * container within a pod.
     * This may only be set for init containers. You cannot set this field on
     * ephemeral containers.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return The restartPolicy.
     */
    java.lang.String getRestartPolicy();
    /**
     * <pre>
     * Restart policy for the container to manage the restart behavior of each
     * container within a pod.
     * This may only be set for init containers. You cannot set this field on
     * ephemeral containers.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return The bytes for restartPolicy.
     */
    com.google.protobuf.ByteString
        getRestartPolicyBytes();

    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.VolumeMount> 
        getVolumeMountsList();
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    io.kubernetes.client.proto.V1.VolumeMount getVolumeMounts(int index);
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    int getVolumeMountsCount();
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.VolumeMountOrBuilder> 
        getVolumeMountsOrBuilderList();
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    io.kubernetes.client.proto.V1.VolumeMountOrBuilder getVolumeMountsOrBuilder(
        int index);

    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.VolumeDevice> 
        getVolumeDevicesList();
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    io.kubernetes.client.proto.V1.VolumeDevice getVolumeDevices(int index);
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    int getVolumeDevicesCount();
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder> 
        getVolumeDevicesOrBuilderList();
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder getVolumeDevicesOrBuilder(
        int index);

    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     * @return Whether the livenessProbe field is set.
     */
    boolean hasLivenessProbe();
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     * @return The livenessProbe.
     */
    io.kubernetes.client.proto.V1.Probe getLivenessProbe();
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     */
    io.kubernetes.client.proto.V1.ProbeOrBuilder getLivenessProbeOrBuilder();

    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     * @return Whether the readinessProbe field is set.
     */
    boolean hasReadinessProbe();
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     * @return The readinessProbe.
     */
    io.kubernetes.client.proto.V1.Probe getReadinessProbe();
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     */
    io.kubernetes.client.proto.V1.ProbeOrBuilder getReadinessProbeOrBuilder();

    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     * @return Whether the startupProbe field is set.
     */
    boolean hasStartupProbe();
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     * @return The startupProbe.
     */
    io.kubernetes.client.proto.V1.Probe getStartupProbe();
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     */
    io.kubernetes.client.proto.V1.ProbeOrBuilder getStartupProbeOrBuilder();

    /**
     * <pre>
     * Lifecycle is not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     * @return Whether the lifecycle field is set.
     */
    boolean hasLifecycle();
    /**
     * <pre>
     * Lifecycle is not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     * @return The lifecycle.
     */
    io.kubernetes.client.proto.V1.Lifecycle getLifecycle();
    /**
     * <pre>
     * Lifecycle is not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     */
    io.kubernetes.client.proto.V1.LifecycleOrBuilder getLifecycleOrBuilder();

    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return Whether the terminationMessagePath field is set.
     */
    boolean hasTerminationMessagePath();
    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return The terminationMessagePath.
     */
    java.lang.String getTerminationMessagePath();
    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return The bytes for terminationMessagePath.
     */
    com.google.protobuf.ByteString
        getTerminationMessagePathBytes();

    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return Whether the terminationMessagePolicy field is set.
     */
    boolean hasTerminationMessagePolicy();
    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return The terminationMessagePolicy.
     */
    java.lang.String getTerminationMessagePolicy();
    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return The bytes for terminationMessagePolicy.
     */
    com.google.protobuf.ByteString
        getTerminationMessagePolicyBytes();

    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return Whether the imagePullPolicy field is set.
     */
    boolean hasImagePullPolicy();
    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return The imagePullPolicy.
     */
    java.lang.String getImagePullPolicy();
    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return The bytes for imagePullPolicy.
     */
    com.google.protobuf.ByteString
        getImagePullPolicyBytes();

    /**
     * <pre>
     * Optional: SecurityContext defines the security options the ephemeral container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     * @return Whether the securityContext field is set.
     */
    boolean hasSecurityContext();
    /**
     * <pre>
     * Optional: SecurityContext defines the security options the ephemeral container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     * @return The securityContext.
     */
    io.kubernetes.client.proto.V1.SecurityContext getSecurityContext();
    /**
     * <pre>
     * Optional: SecurityContext defines the security options the ephemeral container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     */
    io.kubernetes.client.proto.V1.SecurityContextOrBuilder getSecurityContextOrBuilder();

    /**
     * <pre>
     * Whether this container should allocate a buffer for stdin in the container runtime. If this
     * is not set, reads from stdin in the container will always result in EOF.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 16;</code>
     * @return Whether the stdin field is set.
     */
    boolean hasStdin();
    /**
     * <pre>
     * Whether this container should allocate a buffer for stdin in the container runtime. If this
     * is not set, reads from stdin in the container will always result in EOF.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 16;</code>
     * @return The stdin.
     */
    boolean getStdin();

    /**
     * <pre>
     * Whether the container runtime should close the stdin channel after it has been opened by
     * a single attach. When stdin is true the stdin stream will remain open across multiple attach
     * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
     * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
     * at which time stdin is closed and remains closed until the container is restarted. If this
     * flag is false, a container processes that reads from stdin will never receive an EOF.
     * Default is false
     * +optional
     * </pre>
     *
     * <code>optional bool stdinOnce = 17;</code>
     * @return Whether the stdinOnce field is set.
     */
    boolean hasStdinOnce();
    /**
     * <pre>
     * Whether the container runtime should close the stdin channel after it has been opened by
     * a single attach. When stdin is true the stdin stream will remain open across multiple attach
     * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
     * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
     * at which time stdin is closed and remains closed until the container is restarted. If this
     * flag is false, a container processes that reads from stdin will never receive an EOF.
     * Default is false
     * +optional
     * </pre>
     *
     * <code>optional bool stdinOnce = 17;</code>
     * @return The stdinOnce.
     */
    boolean getStdinOnce();

    /**
     * <pre>
     * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 18;</code>
     * @return Whether the tty field is set.
     */
    boolean hasTty();
    /**
     * <pre>
     * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 18;</code>
     * @return The tty.
     */
    boolean getTty();
  }
  /**
   * <pre>
   * EphemeralContainerCommon is a copy of all fields in Container to be inlined in
   * EphemeralContainer. This separate type allows easy conversion from EphemeralContainer
   * to Container and allows separate documentation for the fields of EphemeralContainer.
   * When a new field is added to Container it must be added here as well.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EphemeralContainerCommon}
   */
  public static final class EphemeralContainerCommon extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EphemeralContainerCommon)
      EphemeralContainerCommonOrBuilder {
  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= */ "",
        EphemeralContainerCommon.class.getName());
    }
    // Use EphemeralContainerCommon.newBuilder() to construct.
    private EphemeralContainerCommon(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EphemeralContainerCommon() {
      name_ = "";
      image_ = "";
      command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      args_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      workingDir_ = "";
      ports_ = java.util.Collections.emptyList();
      envFrom_ = java.util.Collections.emptyList();
      env_ = java.util.Collections.emptyList();
      resizePolicy_ = java.util.Collections.emptyList();
      restartPolicy_ = "";
      volumeMounts_ = java.util.Collections.emptyList();
      volumeDevices_ = java.util.Collections.emptyList();
      terminationMessagePath_ = "";
      terminationMessagePolicy_ = "";
      imagePullPolicy_ = "";
    }

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

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

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name of the ephemeral container specified as a DNS_LABEL.
     * This name must be unique among all containers, init containers and ephemeral containers.
     * </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 of the ephemeral container specified as a DNS_LABEL.
     * This name must be unique among all containers, init containers and ephemeral containers.
     * </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 of the ephemeral container specified as a DNS_LABEL.
     * This name must be unique among all containers, init containers and ephemeral containers.
     * </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 IMAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object image_ = "";
    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return Whether the image field is set.
     */
    @java.lang.Override
    public boolean hasImage() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The image.
     */
    @java.lang.Override
    public java.lang.String getImage() {
      java.lang.Object ref = image_;
      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()) {
          image_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Container image name.
     * More info: https://kubernetes.io/docs/concepts/containers/images
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The bytes for image.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getImageBytes() {
      java.lang.Object ref = image_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        image_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMMAND_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList command_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @return A list containing the command.
     */
    public com.google.protobuf.ProtocolStringList
        getCommandList() {
      return command_;
    }
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @return The count of command.
     */
    public int getCommandCount() {
      return command_.size();
    }
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @param index The index of the element to return.
     * @return The command at the given index.
     */
    public java.lang.String getCommand(int index) {
      return command_.get(index);
    }
    /**
     * <pre>
     * Entrypoint array. Not executed within a shell.
     * The image's ENTRYPOINT is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the command at the given index.
     */
    public com.google.protobuf.ByteString
        getCommandBytes(int index) {
      return command_.getByteString(index);
    }

    public static final int ARGS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList args_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @return A list containing the args.
     */
    public com.google.protobuf.ProtocolStringList
        getArgsList() {
      return args_;
    }
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @return The count of args.
     */
    public int getArgsCount() {
      return args_.size();
    }
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @param index The index of the element to return.
     * @return The args at the given index.
     */
    public java.lang.String getArgs(int index) {
      return args_.get(index);
    }
    /**
     * <pre>
     * Arguments to the entrypoint.
     * The image's CMD is used if this is not provided.
     * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
     * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
     * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
     * of whether the variable exists or not. Cannot be updated.
     * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string args = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the args at the given index.
     */
    public com.google.protobuf.ByteString
        getArgsBytes(int index) {
      return args_.getByteString(index);
    }

    public static final int WORKINGDIR_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object workingDir_ = "";
    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return Whether the workingDir field is set.
     */
    @java.lang.Override
    public boolean hasWorkingDir() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return The workingDir.
     */
    @java.lang.Override
    public java.lang.String getWorkingDir() {
      java.lang.Object ref = workingDir_;
      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()) {
          workingDir_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Container's working directory.
     * If not specified, the container runtime's default will be used, which
     * might be configured in the container image.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string workingDir = 5;</code>
     * @return The bytes for workingDir.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWorkingDirBytes() {
      java.lang.Object ref = workingDir_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        workingDir_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PORTS_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ContainerPort> ports_;
    /**
     * <pre>
     * Ports are not allowed for ephemeral containers.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ContainerPort> getPortsList() {
      return ports_;
    }
    /**
     * <pre>
     * Ports are not allowed for ephemeral containers.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerPortOrBuilder> 
        getPortsOrBuilderList() {
      return ports_;
    }
    /**
     * <pre>
     * Ports are not allowed for ephemeral containers.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    @java.lang.Override
    public int getPortsCount() {
      return ports_.size();
    }
    /**
     * <pre>
     * Ports are not allowed for ephemeral containers.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerPort getPorts(int index) {
      return ports_.get(index);
    }
    /**
     * <pre>
     * Ports are not allowed for ephemeral containers.
     * +optional
     * +patchMergeKey=containerPort
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=containerPort
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerPortOrBuilder getPortsOrBuilder(
        int index) {
      return ports_.get(index);
    }

    public static final int ENVFROM_FIELD_NUMBER = 19;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.EnvFromSource> envFrom_;
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.EnvFromSource> getEnvFromList() {
      return envFrom_;
    }
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder> 
        getEnvFromOrBuilderList() {
      return envFrom_;
    }
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    @java.lang.Override
    public int getEnvFromCount() {
      return envFrom_.size();
    }
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EnvFromSource getEnvFrom(int index) {
      return envFrom_.get(index);
    }
    /**
     * <pre>
     * List of sources to populate environment variables in the container.
     * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
     * will be reported as an event when the container is starting. When a key exists in multiple
     * sources, the value associated with the last source will take precedence.
     * Values defined by an Env with a duplicate key will take precedence.
     * Cannot be updated.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder getEnvFromOrBuilder(
        int index) {
      return envFrom_.get(index);
    }

    public static final int ENV_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.EnvVar> env_;
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.EnvVar> getEnvList() {
      return env_;
    }
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EnvVarOrBuilder> 
        getEnvOrBuilderList() {
      return env_;
    }
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    @java.lang.Override
    public int getEnvCount() {
      return env_.size();
    }
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EnvVar getEnv(int index) {
      return env_.get(index);
    }
    /**
     * <pre>
     * List of environment variables to set in the container.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EnvVarOrBuilder getEnvOrBuilder(
        int index) {
      return env_.get(index);
    }

    public static final int RESOURCES_FIELD_NUMBER = 8;
    private io.kubernetes.client.proto.V1.ResourceRequirements resources_;
    /**
     * <pre>
     * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
     * already allocated to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     * @return Whether the resources field is set.
     */
    @java.lang.Override
    public boolean hasResources() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
     * already allocated to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     * @return The resources.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceRequirements getResources() {
      return resources_ == null ? io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
    }
    /**
     * <pre>
     * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
     * already allocated to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder getResourcesOrBuilder() {
      return resources_ == null ? io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
    }

    public static final int RESIZEPOLICY_FIELD_NUMBER = 23;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy> resizePolicy_;
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy> getResizePolicyList() {
      return resizePolicy_;
    }
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder> 
        getResizePolicyOrBuilderList() {
      return resizePolicy_;
    }
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    @java.lang.Override
    public int getResizePolicyCount() {
      return resizePolicy_.size();
    }
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerResizePolicy getResizePolicy(int index) {
      return resizePolicy_.get(index);
    }
    /**
     * <pre>
     * Resources resize policy for the container.
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder getResizePolicyOrBuilder(
        int index) {
      return resizePolicy_.get(index);
    }

    public static final int RESTARTPOLICY_FIELD_NUMBER = 24;
    @SuppressWarnings("serial")
    private volatile java.lang.Object restartPolicy_ = "";
    /**
     * <pre>
     * Restart policy for the container to manage the restart behavior of each
     * container within a pod.
     * This may only be set for init containers. You cannot set this field on
     * ephemeral containers.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return Whether the restartPolicy field is set.
     */
    @java.lang.Override
    public boolean hasRestartPolicy() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * Restart policy for the container to manage the restart behavior of each
     * container within a pod.
     * This may only be set for init containers. You cannot set this field on
     * ephemeral containers.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return The restartPolicy.
     */
    @java.lang.Override
    public java.lang.String getRestartPolicy() {
      java.lang.Object ref = restartPolicy_;
      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()) {
          restartPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Restart policy for the container to manage the restart behavior of each
     * container within a pod.
     * This may only be set for init containers. You cannot set this field on
     * ephemeral containers.
     * +featureGate=SidecarContainers
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 24;</code>
     * @return The bytes for restartPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRestartPolicyBytes() {
      java.lang.Object ref = restartPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        restartPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUMEMOUNTS_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.VolumeMount> volumeMounts_;
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.VolumeMount> getVolumeMountsList() {
      return volumeMounts_;
    }
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeMountOrBuilder> 
        getVolumeMountsOrBuilderList() {
      return volumeMounts_;
    }
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    @java.lang.Override
    public int getVolumeMountsCount() {
      return volumeMounts_.size();
    }
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeMount getVolumeMounts(int index) {
      return volumeMounts_.get(index);
    }
    /**
     * <pre>
     * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     * Cannot be updated.
     * +optional
     * +patchMergeKey=mountPath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=mountPath
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeMountOrBuilder getVolumeMountsOrBuilder(
        int index) {
      return volumeMounts_.get(index);
    }

    public static final int VOLUMEDEVICES_FIELD_NUMBER = 21;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.VolumeDevice> volumeDevices_;
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.VolumeDevice> getVolumeDevicesList() {
      return volumeDevices_;
    }
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder> 
        getVolumeDevicesOrBuilderList() {
      return volumeDevices_;
    }
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    @java.lang.Override
    public int getVolumeDevicesCount() {
      return volumeDevices_.size();
    }
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeDevice getVolumeDevices(int index) {
      return volumeDevices_.get(index);
    }
    /**
     * <pre>
     * volumeDevices is the list of block devices to be used by the container.
     * +patchMergeKey=devicePath
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=devicePath
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder getVolumeDevicesOrBuilder(
        int index) {
      return volumeDevices_.get(index);
    }

    public static final int LIVENESSPROBE_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.V1.Probe livenessProbe_;
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     * @return Whether the livenessProbe field is set.
     */
    @java.lang.Override
    public boolean hasLivenessProbe() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     * @return The livenessProbe.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Probe getLivenessProbe() {
      return livenessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : livenessProbe_;
    }
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProbeOrBuilder getLivenessProbeOrBuilder() {
      return livenessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : livenessProbe_;
    }

    public static final int READINESSPROBE_FIELD_NUMBER = 11;
    private io.kubernetes.client.proto.V1.Probe readinessProbe_;
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     * @return Whether the readinessProbe field is set.
     */
    @java.lang.Override
    public boolean hasReadinessProbe() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     * @return The readinessProbe.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Probe getReadinessProbe() {
      return readinessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : readinessProbe_;
    }
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProbeOrBuilder getReadinessProbeOrBuilder() {
      return readinessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : readinessProbe_;
    }

    public static final int STARTUPPROBE_FIELD_NUMBER = 22;
    private io.kubernetes.client.proto.V1.Probe startupProbe_;
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     * @return Whether the startupProbe field is set.
     */
    @java.lang.Override
    public boolean hasStartupProbe() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     * @return The startupProbe.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Probe getStartupProbe() {
      return startupProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : startupProbe_;
    }
    /**
     * <pre>
     * Probes are not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProbeOrBuilder getStartupProbeOrBuilder() {
      return startupProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : startupProbe_;
    }

    public static final int LIFECYCLE_FIELD_NUMBER = 12;
    private io.kubernetes.client.proto.V1.Lifecycle lifecycle_;
    /**
     * <pre>
     * Lifecycle is not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     * @return Whether the lifecycle field is set.
     */
    @java.lang.Override
    public boolean hasLifecycle() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * Lifecycle is not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     * @return The lifecycle.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Lifecycle getLifecycle() {
      return lifecycle_ == null ? io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance() : lifecycle_;
    }
    /**
     * <pre>
     * Lifecycle is not allowed for ephemeral containers.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LifecycleOrBuilder getLifecycleOrBuilder() {
      return lifecycle_ == null ? io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance() : lifecycle_;
    }

    public static final int TERMINATIONMESSAGEPATH_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private volatile java.lang.Object terminationMessagePath_ = "";
    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return Whether the terminationMessagePath field is set.
     */
    @java.lang.Override
    public boolean hasTerminationMessagePath() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return The terminationMessagePath.
     */
    @java.lang.Override
    public java.lang.String getTerminationMessagePath() {
      java.lang.Object ref = terminationMessagePath_;
      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()) {
          terminationMessagePath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Optional: Path at which the file to which the container's termination message
     * will be written is mounted into the container's filesystem.
     * Message written is intended to be brief final status, such as an assertion failure message.
     * Will be truncated by the node if greater than 4096 bytes. The total message length across
     * all containers will be limited to 12kb.
     * Defaults to /dev/termination-log.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePath = 13;</code>
     * @return The bytes for terminationMessagePath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTerminationMessagePathBytes() {
      java.lang.Object ref = terminationMessagePath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        terminationMessagePath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TERMINATIONMESSAGEPOLICY_FIELD_NUMBER = 20;
    @SuppressWarnings("serial")
    private volatile java.lang.Object terminationMessagePolicy_ = "";
    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return Whether the terminationMessagePolicy field is set.
     */
    @java.lang.Override
    public boolean hasTerminationMessagePolicy() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return The terminationMessagePolicy.
     */
    @java.lang.Override
    public java.lang.String getTerminationMessagePolicy() {
      java.lang.Object ref = terminationMessagePolicy_;
      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()) {
          terminationMessagePolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Indicate how the termination message should be populated. File will use the contents of
     * terminationMessagePath to populate the container status message on both success and failure.
     * FallbackToLogsOnError will use the last chunk of container log output if the termination
     * message file is empty and the container exited with an error.
     * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
     * Defaults to File.
     * Cannot be updated.
     * +optional
     * </pre>
     *
     * <code>optional string terminationMessagePolicy = 20;</code>
     * @return The bytes for terminationMessagePolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTerminationMessagePolicyBytes() {
      java.lang.Object ref = terminationMessagePolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        terminationMessagePolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IMAGEPULLPOLICY_FIELD_NUMBER = 14;
    @SuppressWarnings("serial")
    private volatile java.lang.Object imagePullPolicy_ = "";
    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return Whether the imagePullPolicy field is set.
     */
    @java.lang.Override
    public boolean hasImagePullPolicy() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return The imagePullPolicy.
     */
    @java.lang.Override
    public java.lang.String getImagePullPolicy() {
      java.lang.Object ref = imagePullPolicy_;
      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()) {
          imagePullPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Image pull policy.
     * One of Always, Never, IfNotPresent.
     * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
     * +optional
     * </pre>
     *
     * <code>optional string imagePullPolicy = 14;</code>
     * @return The bytes for imagePullPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getImagePullPolicyBytes() {
      java.lang.Object ref = imagePullPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        imagePullPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECURITYCONTEXT_FIELD_NUMBER = 15;
    private io.kubernetes.client.proto.V1.SecurityContext securityContext_;
    /**
     * <pre>
     * Optional: SecurityContext defines the security options the ephemeral container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     * @return Whether the securityContext field is set.
     */
    @java.lang.Override
    public boolean hasSecurityContext() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <pre>
     * Optional: SecurityContext defines the security options the ephemeral container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     * @return The securityContext.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecurityContext getSecurityContext() {
      return securityContext_ == null ? io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance() : securityContext_;
    }
    /**
     * <pre>
     * Optional: SecurityContext defines the security options the ephemeral container should be run with.
     * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecurityContextOrBuilder getSecurityContextOrBuilder() {
      return securityContext_ == null ? io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance() : securityContext_;
    }

    public static final int STDIN_FIELD_NUMBER = 16;
    private boolean stdin_ = false;
    /**
     * <pre>
     * Whether this container should allocate a buffer for stdin in the container runtime. If this
     * is not set, reads from stdin in the container will always result in EOF.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 16;</code>
     * @return Whether the stdin field is set.
     */
    @java.lang.Override
    public boolean hasStdin() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     * Whether this container should allocate a buffer for stdin in the container runtime. If this
     * is not set, reads from stdin in the container will always result in EOF.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 16;</code>
     * @return The stdin.
     */
    @java.lang.Override
    public boolean getStdin() {
      return stdin_;
    }

    public static final int STDINONCE_FIELD_NUMBER = 17;
    private boolean stdinOnce_ = false;
    /**
     * <pre>
     * Whether the container runtime should close the stdin channel after it has been opened by
     * a single attach. When stdin is true the stdin stream will remain open across multiple attach
     * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
     * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
     * at which time stdin is closed and remains closed until the container is restarted. If this
     * flag is false, a container processes that reads from stdin will never receive an EOF.
     * Default is false
     * +optional
     * </pre>
     *
     * <code>optional bool stdinOnce = 17;</code>
     * @return Whether the stdinOnce field is set.
     */
    @java.lang.Override
    public boolean hasStdinOnce() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <pre>
     * Whether the container runtime should close the stdin channel after it has been opened by
     * a single attach. When stdin is true the stdin stream will remain open across multiple attach
     * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
     * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
     * at which time stdin is closed and remains closed until the container is restarted. If this
     * flag is false, a container processes that reads from stdin will never receive an EOF.
     * Default is false
     * +optional
     * </pre>
     *
     * <code>optional bool stdinOnce = 17;</code>
     * @return The stdinOnce.
     */
    @java.lang.Override
    public boolean getStdinOnce() {
      return stdinOnce_;
    }

    public static final int TTY_FIELD_NUMBER = 18;
    private boolean tty_ = false;
    /**
     * <pre>
     * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 18;</code>
     * @return Whether the tty field is set.
     */
    @java.lang.Override
    public boolean hasTty() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <pre>
     * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
     * Default is false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 18;</code>
     * @return The tty.
     */
    @java.lang.Override
    public boolean getTty() {
      return tty_;
    }

    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, image_);
      }
      for (int i = 0; i < command_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, command_.getRaw(i));
      }
      for (int i = 0; i < args_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, args_.getRaw(i));
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, workingDir_);
      }
      for (int i = 0; i < ports_.size(); i++) {
        output.writeMessage(6, ports_.get(i));
      }
      for (int i = 0; i < env_.size(); i++) {
        output.writeMessage(7, env_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(8, getResources());
      }
      for (int i = 0; i < volumeMounts_.size(); i++) {
        output.writeMessage(9, volumeMounts_.get(i));
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(10, getLivenessProbe());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(11, getReadinessProbe());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeMessage(12, getLifecycle());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 13, terminationMessagePath_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 14, imagePullPolicy_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeMessage(15, getSecurityContext());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeBool(16, stdin_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        output.writeBool(17, stdinOnce_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        output.writeBool(18, tty_);
      }
      for (int i = 0; i < envFrom_.size(); i++) {
        output.writeMessage(19, envFrom_.get(i));
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 20, terminationMessagePolicy_);
      }
      for (int i = 0; i < volumeDevices_.size(); i++) {
        output.writeMessage(21, volumeDevices_.get(i));
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(22, getStartupProbe());
      }
      for (int i = 0; i < resizePolicy_.size(); i++) {
        output.writeMessage(23, resizePolicy_.get(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 24, restartPolicy_);
      }
      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, image_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < command_.size(); i++) {
          dataSize += computeStringSizeNoTag(command_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getCommandList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < args_.size(); i++) {
          dataSize += computeStringSizeNoTag(args_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getArgsList().size();
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, workingDir_);
      }
      for (int i = 0; i < ports_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, ports_.get(i));
      }
      for (int i = 0; i < env_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, env_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getResources());
      }
      for (int i = 0; i < volumeMounts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, volumeMounts_.get(i));
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getLivenessProbe());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getReadinessProbe());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getLifecycle());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(13, terminationMessagePath_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(14, imagePullPolicy_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, getSecurityContext());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(16, stdin_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(17, stdinOnce_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(18, tty_);
      }
      for (int i = 0; i < envFrom_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(19, envFrom_.get(i));
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(20, terminationMessagePolicy_);
      }
      for (int i = 0; i < volumeDevices_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(21, volumeDevices_.get(i));
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(22, getStartupProbe());
      }
      for (int i = 0; i < resizePolicy_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(23, resizePolicy_.get(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(24, restartPolicy_);
      }
      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.V1.EphemeralContainerCommon)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EphemeralContainerCommon other = (io.kubernetes.client.proto.V1.EphemeralContainerCommon) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasImage() != other.hasImage()) return false;
      if (hasImage()) {
        if (!getImage()
            .equals(other.getImage())) return false;
      }
      if (!getCommandList()
          .equals(other.getCommandList())) return false;
      if (!getArgsList()
          .equals(other.getArgsList())) return false;
      if (hasWorkingDir() != other.hasWorkingDir()) return false;
      if (hasWorkingDir()) {
        if (!getWorkingDir()
            .equals(other.getWorkingDir())) return false;
      }
      if (!getPortsList()
          .equals(other.getPortsList())) return false;
      if (!getEnvFromList()
          .equals(other.getEnvFromList())) return false;
      if (!getEnvList()
          .equals(other.getEnvList())) return false;
      if (hasResources() != other.hasResources()) return false;
      if (hasResources()) {
        if (!getResources()
            .equals(other.getResources())) return false;
      }
      if (!getResizePolicyList()
          .equals(other.getResizePolicyList())) return false;
      if (hasRestartPolicy() != other.hasRestartPolicy()) return false;
      if (hasRestartPolicy()) {
        if (!getRestartPolicy()
            .equals(other.getRestartPolicy())) return false;
      }
      if (!getVolumeMountsList()
          .equals(other.getVolumeMountsList())) return false;
      if (!getVolumeDevicesList()
          .equals(other.getVolumeDevicesList())) return false;
      if (hasLivenessProbe() != other.hasLivenessProbe()) return false;
      if (hasLivenessProbe()) {
        if (!getLivenessProbe()
            .equals(other.getLivenessProbe())) return false;
      }
      if (hasReadinessProbe() != other.hasReadinessProbe()) return false;
      if (hasReadinessProbe()) {
        if (!getReadinessProbe()
            .equals(other.getReadinessProbe())) return false;
      }
      if (hasStartupProbe() != other.hasStartupProbe()) return false;
      if (hasStartupProbe()) {
        if (!getStartupProbe()
            .equals(other.getStartupProbe())) return false;
      }
      if (hasLifecycle() != other.hasLifecycle()) return false;
      if (hasLifecycle()) {
        if (!getLifecycle()
            .equals(other.getLifecycle())) return false;
      }
      if (hasTerminationMessagePath() != other.hasTerminationMessagePath()) return false;
      if (hasTerminationMessagePath()) {
        if (!getTerminationMessagePath()
            .equals(other.getTerminationMessagePath())) return false;
      }
      if (hasTerminationMessagePolicy() != other.hasTerminationMessagePolicy()) return false;
      if (hasTerminationMessagePolicy()) {
        if (!getTerminationMessagePolicy()
            .equals(other.getTerminationMessagePolicy())) return false;
      }
      if (hasImagePullPolicy() != other.hasImagePullPolicy()) return false;
      if (hasImagePullPolicy()) {
        if (!getImagePullPolicy()
            .equals(other.getImagePullPolicy())) return false;
      }
      if (hasSecurityContext() != other.hasSecurityContext()) return false;
      if (hasSecurityContext()) {
        if (!getSecurityContext()
            .equals(other.getSecurityContext())) return false;
      }
      if (hasStdin() != other.hasStdin()) return false;
      if (hasStdin()) {
        if (getStdin()
            != other.getStdin()) return false;
      }
      if (hasStdinOnce() != other.hasStdinOnce()) return false;
      if (hasStdinOnce()) {
        if (getStdinOnce()
            != other.getStdinOnce()) return false;
      }
      if (hasTty() != other.hasTty()) return false;
      if (hasTty()) {
        if (getTty()
            != other.getTty()) 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 (hasImage()) {
        hash = (37 * hash) + IMAGE_FIELD_NUMBER;
        hash = (53 * hash) + getImage().hashCode();
      }
      if (getCommandCount() > 0) {
        hash = (37 * hash) + COMMAND_FIELD_NUMBER;
        hash = (53 * hash) + getCommandList().hashCode();
      }
      if (getArgsCount() > 0) {
        hash = (37 * hash) + ARGS_FIELD_NUMBER;
        hash = (53 * hash) + getArgsList().hashCode();
      }
      if (hasWorkingDir()) {
        hash = (37 * hash) + WORKINGDIR_FIELD_NUMBER;
        hash = (53 * hash) + getWorkingDir().hashCode();
      }
      if (getPortsCount() > 0) {
        hash = (37 * hash) + PORTS_FIELD_NUMBER;
        hash = (53 * hash) + getPortsList().hashCode();
      }
      if (getEnvFromCount() > 0) {
        hash = (37 * hash) + ENVFROM_FIELD_NUMBER;
        hash = (53 * hash) + getEnvFromList().hashCode();
      }
      if (getEnvCount() > 0) {
        hash = (37 * hash) + ENV_FIELD_NUMBER;
        hash = (53 * hash) + getEnvList().hashCode();
      }
      if (hasResources()) {
        hash = (37 * hash) + RESOURCES_FIELD_NUMBER;
        hash = (53 * hash) + getResources().hashCode();
      }
      if (getResizePolicyCount() > 0) {
        hash = (37 * hash) + RESIZEPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getResizePolicyList().hashCode();
      }
      if (hasRestartPolicy()) {
        hash = (37 * hash) + RESTARTPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getRestartPolicy().hashCode();
      }
      if (getVolumeMountsCount() > 0) {
        hash = (37 * hash) + VOLUMEMOUNTS_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeMountsList().hashCode();
      }
      if (getVolumeDevicesCount() > 0) {
        hash = (37 * hash) + VOLUMEDEVICES_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeDevicesList().hashCode();
      }
      if (hasLivenessProbe()) {
        hash = (37 * hash) + LIVENESSPROBE_FIELD_NUMBER;
        hash = (53 * hash) + getLivenessProbe().hashCode();
      }
      if (hasReadinessProbe()) {
        hash = (37 * hash) + READINESSPROBE_FIELD_NUMBER;
        hash = (53 * hash) + getReadinessProbe().hashCode();
      }
      if (hasStartupProbe()) {
        hash = (37 * hash) + STARTUPPROBE_FIELD_NUMBER;
        hash = (53 * hash) + getStartupProbe().hashCode();
      }
      if (hasLifecycle()) {
        hash = (37 * hash) + LIFECYCLE_FIELD_NUMBER;
        hash = (53 * hash) + getLifecycle().hashCode();
      }
      if (hasTerminationMessagePath()) {
        hash = (37 * hash) + TERMINATIONMESSAGEPATH_FIELD_NUMBER;
        hash = (53 * hash) + getTerminationMessagePath().hashCode();
      }
      if (hasTerminationMessagePolicy()) {
        hash = (37 * hash) + TERMINATIONMESSAGEPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getTerminationMessagePolicy().hashCode();
      }
      if (hasImagePullPolicy()) {
        hash = (37 * hash) + IMAGEPULLPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getImagePullPolicy().hashCode();
      }
      if (hasSecurityContext()) {
        hash = (37 * hash) + SECURITYCONTEXT_FIELD_NUMBER;
        hash = (53 * hash) + getSecurityContext().hashCode();
      }
      if (hasStdin()) {
        hash = (37 * hash) + STDIN_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStdin());
      }
      if (hasStdinOnce()) {
        hash = (37 * hash) + STDINONCE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStdinOnce());
      }
      if (hasTty()) {
        hash = (37 * hash) + TTY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getTty());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EphemeralContainerCommon 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.V1.EphemeralContainerCommon parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EphemeralContainerCommon 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.V1.EphemeralContainerCommon 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>
     * EphemeralContainerCommon is a copy of all fields in Container to be inlined in
     * EphemeralContainer. This separate type allows easy conversion from EphemeralContainer
     * to Container and allows separate documentation for the fields of EphemeralContainer.
     * When a new field is added to Container it must be added here as well.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EphemeralContainerCommon}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EphemeralContainerCommon)
        io.kubernetes.client.proto.V1.EphemeralContainerCommonOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EphemeralContainerCommon_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPortsFieldBuilder();
          getEnvFromFieldBuilder();
          getEnvFieldBuilder();
          getResourcesFieldBuilder();
          getResizePolicyFieldBuilder();
          getVolumeMountsFieldBuilder();
          getVolumeDevicesFieldBuilder();
          getLivenessProbeFieldBuilder();
          getReadinessProbeFieldBuilder();
          getStartupProbeFieldBuilder();
          getLifecycleFieldBuilder();
          getSecurityContextFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        image_ = "";
        command_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        args_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        workingDir_ = "";
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
        } else {
          ports_ = null;
          portsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (envFromBuilder_ == null) {
          envFrom_ = java.util.Collections.emptyList();
        } else {
          envFrom_ = null;
          envFromBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (envBuilder_ == null) {
          env_ = java.util.Collections.emptyList();
        } else {
          env_ = null;
          envBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        resources_ = null;
        if (resourcesBuilder_ != null) {
          resourcesBuilder_.dispose();
          resourcesBuilder_ = null;
        }
        if (resizePolicyBuilder_ == null) {
          resizePolicy_ = java.util.Collections.emptyList();
        } else {
          resizePolicy_ = null;
          resizePolicyBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        restartPolicy_ = "";
        if (volumeMountsBuilder_ == null) {
          volumeMounts_ = java.util.Collections.emptyList();
        } else {
          volumeMounts_ = null;
          volumeMountsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        if (volumeDevicesBuilder_ == null) {
          volumeDevices_ = java.util.Collections.emptyList();
        } else {
          volumeDevices_ = null;
          volumeDevicesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00001000);
        livenessProbe_ = null;
        if (livenessProbeBuilder_ != null) {
          livenessProbeBuilder_.dispose();
          livenessProbeBuilder_ = null;
        }
        readinessProbe_ = null;
        if (readinessProbeBuilder_ != null) {
          readinessProbeBuilder_.dispose();
          readinessProbeBuilder_ = null;
        }
        startupProbe_ = null;
        if (startupProbeBuilder_ != null) {
          startupProbeBuilder_.dispose();
          startupProbeBuilder_ = null;
        }
        lifecycle_ = null;
        if (lifecycleBuilder_ != null) {
          lifecycleBuilder_.dispose();
          lifecycleBuilder_ = null;
        }
        terminationMessagePath_ = "";
        terminationMessagePolicy_ = "";
        imagePullPolicy_ = "";
        securityContext_ = null;
        if (securityContextBuilder_ != null) {
          securityContextBuilder_.dispose();
          securityContextBuilder_ = null;
        }
        stdin_ = false;
        stdinOnce_ = false;
        tty_ = false;
        return this;
      }

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

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.EphemeralContainerCommon result) {
        if (portsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            ports_ = java.util.Collections.unmodifiableList(ports_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.ports_ = ports_;
        } else {
          result.ports_ = portsBuilder_.build();
        }
        if (envFromBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            envFrom_ = java.util.Collections.unmodifiableList(envFrom_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.envFrom_ = envFrom_;
        } else {
          result.envFrom_ = envFromBuilder_.build();
        }
        if (envBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            env_ = java.util.Collections.unmodifiableList(env_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.env_ = env_;
        } else {
          result.env_ = envBuilder_.build();
        }
        if (resizePolicyBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0)) {
            resizePolicy_ = java.util.Collections.unmodifiableList(resizePolicy_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.resizePolicy_ = resizePolicy_;
        } else {
          result.resizePolicy_ = resizePolicyBuilder_.build();
        }
        if (volumeMountsBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0)) {
            volumeMounts_ = java.util.Collections.unmodifiableList(volumeMounts_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.volumeMounts_ = volumeMounts_;
        } else {
          result.volumeMounts_ = volumeMountsBuilder_.build();
        }
        if (volumeDevicesBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0)) {
            volumeDevices_ = java.util.Collections.unmodifiableList(volumeDevices_);
            bitField0_ = (bitField0_ & ~0x00001000);
          }
          result.volumeDevices_ = volumeDevices_;
        } else {
          result.volumeDevices_ = volumeDevicesBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.EphemeralContainerCommon 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.image_ = image_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          command_.makeImmutable();
          result.command_ = command_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          args_.makeImmutable();
          result.args_ = args_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.workingDir_ = workingDir_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.resources_ = resourcesBuilder_ == null
              ? resources_
              : resourcesBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.restartPolicy_ = restartPolicy_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.livenessProbe_ = livenessProbeBuilder_ == null
              ? livenessProbe_
              : livenessProbeBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.readinessProbe_ = readinessProbeBuilder_ == null
              ? readinessProbe_
              : readinessProbeBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.startupProbe_ = startupProbeBuilder_ == null
              ? startupProbe_
              : startupProbeBuilder_.build();
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.lifecycle_ = lifecycleBuilder_ == null
              ? lifecycle_
              : lifecycleBuilder_.build();
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.terminationMessagePath_ = terminationMessagePath_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.terminationMessagePolicy_ = terminationMessagePolicy_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.imagePullPolicy_ = imagePullPolicy_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.securityContext_ = securityContextBuilder_ == null
              ? securityContext_
              : securityContextBuilder_.build();
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00200000) != 0)) {
          result.stdin_ = stdin_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00400000) != 0)) {
          result.stdinOnce_ = stdinOnce_;
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00800000) != 0)) {
          result.tty_ = tty_;
          to_bitField0_ |= 0x00008000;
        }
        result.bitField0_ |= to_bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EphemeralContainerCommon other) {
        if (other == io.kubernetes.client.proto.V1.EphemeralContainerCommon.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasImage()) {
          image_ = other.image_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.command_.isEmpty()) {
          if (command_.isEmpty()) {
            command_ = other.command_;
            bitField0_ |= 0x00000004;
          } else {
            ensureCommandIsMutable();
            command_.addAll(other.command_);
          }
          onChanged();
        }
        if (!other.args_.isEmpty()) {
          if (args_.isEmpty()) {
            args_ = other.args_;
            bitField0_ |= 0x00000008;
          } else {
            ensureArgsIsMutable();
            args_.addAll(other.args_);
          }
          onChanged();
        }
        if (other.hasWorkingDir()) {
          workingDir_ = other.workingDir_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (portsBuilder_ == null) {
          if (!other.ports_.isEmpty()) {
            if (ports_.isEmpty()) {
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensurePortsIsMutable();
              ports_.addAll(other.ports_);
            }
            onChanged();
          }
        } else {
          if (!other.ports_.isEmpty()) {
            if (portsBuilder_.isEmpty()) {
              portsBuilder_.dispose();
              portsBuilder_ = null;
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000020);
              portsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPortsFieldBuilder() : null;
            } else {
              portsBuilder_.addAllMessages(other.ports_);
            }
          }
        }
        if (envFromBuilder_ == null) {
          if (!other.envFrom_.isEmpty()) {
            if (envFrom_.isEmpty()) {
              envFrom_ = other.envFrom_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureEnvFromIsMutable();
              envFrom_.addAll(other.envFrom_);
            }
            onChanged();
          }
        } else {
          if (!other.envFrom_.isEmpty()) {
            if (envFromBuilder_.isEmpty()) {
              envFromBuilder_.dispose();
              envFromBuilder_ = null;
              envFrom_ = other.envFrom_;
              bitField0_ = (bitField0_ & ~0x00000040);
              envFromBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEnvFromFieldBuilder() : null;
            } else {
              envFromBuilder_.addAllMessages(other.envFrom_);
            }
          }
        }
        if (envBuilder_ == null) {
          if (!other.env_.isEmpty()) {
            if (env_.isEmpty()) {
              env_ = other.env_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureEnvIsMutable();
              env_.addAll(other.env_);
            }
            onChanged();
          }
        } else {
          if (!other.env_.isEmpty()) {
            if (envBuilder_.isEmpty()) {
              envBuilder_.dispose();
              envBuilder_ = null;
              env_ = other.env_;
              bitField0_ = (bitField0_ & ~0x00000080);
              envBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEnvFieldBuilder() : null;
            } else {
              envBuilder_.addAllMessages(other.env_);
            }
          }
        }
        if (other.hasResources()) {
          mergeResources(other.getResources());
        }
        if (resizePolicyBuilder_ == null) {
          if (!other.resizePolicy_.isEmpty()) {
            if (resizePolicy_.isEmpty()) {
              resizePolicy_ = other.resizePolicy_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureResizePolicyIsMutable();
              resizePolicy_.addAll(other.resizePolicy_);
            }
            onChanged();
          }
        } else {
          if (!other.resizePolicy_.isEmpty()) {
            if (resizePolicyBuilder_.isEmpty()) {
              resizePolicyBuilder_.dispose();
              resizePolicyBuilder_ = null;
              resizePolicy_ = other.resizePolicy_;
              bitField0_ = (bitField0_ & ~0x00000200);
              resizePolicyBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getResizePolicyFieldBuilder() : null;
            } else {
              resizePolicyBuilder_.addAllMessages(other.resizePolicy_);
            }
          }
        }
        if (other.hasRestartPolicy()) {
          restartPolicy_ = other.restartPolicy_;
          bitField0_ |= 0x00000400;
          onChanged();
        }
        if (volumeMountsBuilder_ == null) {
          if (!other.volumeMounts_.isEmpty()) {
            if (volumeMounts_.isEmpty()) {
              volumeMounts_ = other.volumeMounts_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureVolumeMountsIsMutable();
              volumeMounts_.addAll(other.volumeMounts_);
            }
            onChanged();
          }
        } else {
          if (!other.volumeMounts_.isEmpty()) {
            if (volumeMountsBuilder_.isEmpty()) {
              volumeMountsBuilder_.dispose();
              volumeMountsBuilder_ = null;
              volumeMounts_ = other.volumeMounts_;
              bitField0_ = (bitField0_ & ~0x00000800);
              volumeMountsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVolumeMountsFieldBuilder() : null;
            } else {
              volumeMountsBuilder_.addAllMessages(other.volumeMounts_);
            }
          }
        }
        if (volumeDevicesBuilder_ == null) {
          if (!other.volumeDevices_.isEmpty()) {
            if (volumeDevices_.isEmpty()) {
              volumeDevices_ = other.volumeDevices_;
              bitField0_ = (bitField0_ & ~0x00001000);
            } else {
              ensureVolumeDevicesIsMutable();
              volumeDevices_.addAll(other.volumeDevices_);
            }
            onChanged();
          }
        } else {
          if (!other.volumeDevices_.isEmpty()) {
            if (volumeDevicesBuilder_.isEmpty()) {
              volumeDevicesBuilder_.dispose();
              volumeDevicesBuilder_ = null;
              volumeDevices_ = other.volumeDevices_;
              bitField0_ = (bitField0_ & ~0x00001000);
              volumeDevicesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVolumeDevicesFieldBuilder() : null;
            } else {
              volumeDevicesBuilder_.addAllMessages(other.volumeDevices_);
            }
          }
        }
        if (other.hasLivenessProbe()) {
          mergeLivenessProbe(other.getLivenessProbe());
        }
        if (other.hasReadinessProbe()) {
          mergeReadinessProbe(other.getReadinessProbe());
        }
        if (other.hasStartupProbe()) {
          mergeStartupProbe(other.getStartupProbe());
        }
        if (other.hasLifecycle()) {
          mergeLifecycle(other.getLifecycle());
        }
        if (other.hasTerminationMessagePath()) {
          terminationMessagePath_ = other.terminationMessagePath_;
          bitField0_ |= 0x00020000;
          onChanged();
        }
        if (other.hasTerminationMessagePolicy()) {
          terminationMessagePolicy_ = other.terminationMessagePolicy_;
          bitField0_ |= 0x00040000;
          onChanged();
        }
        if (other.hasImagePullPolicy()) {
          imagePullPolicy_ = other.imagePullPolicy_;
          bitField0_ |= 0x00080000;
          onChanged();
        }
        if (other.hasSecurityContext()) {
          mergeSecurityContext(other.getSecurityContext());
        }
        if (other.hasStdin()) {
          setStdin(other.getStdin());
        }
        if (other.hasStdinOnce()) {
          setStdinOnce(other.getStdinOnce());
        }
        if (other.hasTty()) {
          setTty(other.getTty());
        }
        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: {
                image_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureCommandIsMutable();
                command_.add(bs);
                break;
              } // case 26
              case 34: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureArgsIsMutable();
                args_.add(bs);
                break;
              } // case 34
              case 42: {
                workingDir_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                io.kubernetes.client.proto.V1.ContainerPort m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ContainerPort.parser(),
                        extensionRegistry);
                if (portsBuilder_ == null) {
                  ensurePortsIsMutable();
                  ports_.add(m);
                } else {
                  portsBuilder_.addMessage(m);
                }
                break;
              } // case 50
              case 58: {
                io.kubernetes.client.proto.V1.EnvVar m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.EnvVar.parser(),
                        extensionRegistry);
                if (envBuilder_ == null) {
                  ensureEnvIsMutable();
                  env_.add(m);
                } else {
                  envBuilder_.addMessage(m);
                }
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getResourcesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 66
              case 74: {
                io.kubernetes.client.proto.V1.VolumeMount m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.VolumeMount.parser(),
                        extensionRegistry);
                if (volumeMountsBuilder_ == null) {
                  ensureVolumeMountsIsMutable();
                  volumeMounts_.add(m);
                } else {
                  volumeMountsBuilder_.addMessage(m);
                }
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getLivenessProbeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00002000;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getReadinessProbeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00004000;
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getLifecycleFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00010000;
                break;
              } // case 98
              case 106: {
                terminationMessagePath_ = input.readBytes();
                bitField0_ |= 0x00020000;
                break;
              } // case 106
              case 114: {
                imagePullPolicy_ = input.readBytes();
                bitField0_ |= 0x00080000;
                break;
              } // case 114
              case 122: {
                input.readMessage(
                    getSecurityContextFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00100000;
                break;
              } // case 122
              case 128: {
                stdin_ = input.readBool();
                bitField0_ |= 0x00200000;
                break;
              } // case 128
              case 136: {
                stdinOnce_ = input.readBool();
                bitField0_ |= 0x00400000;
                break;
              } // case 136
              case 144: {
                tty_ = input.readBool();
                bitField0_ |= 0x00800000;
                break;
              } // case 144
              case 154: {
                io.kubernetes.client.proto.V1.EnvFromSource m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.EnvFromSource.parser(),
                        extensionRegistry);
                if (envFromBuilder_ == null) {
                  ensureEnvFromIsMutable();
                  envFrom_.add(m);
                } else {
                  envFromBuilder_.addMessage(m);
                }
                break;
              } // case 154
              case 162: {
                terminationMessagePolicy_ = input.readBytes();
                bitField0_ |= 0x00040000;
                break;
              } // case 162
              case 170: {
                io.kubernetes.client.proto.V1.VolumeDevice m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.VolumeDevice.parser(),
                        extensionRegistry);
                if (volumeDevicesBuilder_ == null) {
                  ensureVolumeDevicesIsMutable();
                  volumeDevices_.add(m);
                } else {
                  volumeDevicesBuilder_.addMessage(m);
                }
                break;
              } // case 170
              case 178: {
                input.readMessage(
                    getStartupProbeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00008000;
                break;
              } // case 178
              case 186: {
                io.kubernetes.client.proto.V1.ContainerResizePolicy m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ContainerResizePolicy.parser(),
                        extensionRegistry);
                if (resizePolicyBuilder_ == null) {
                  ensureResizePolicyIsMutable();
                  resizePolicy_.add(m);
                } else {
                  resizePolicyBuilder_.addMessage(m);
                }
                break;
              } // case 186
              case 194: {
                restartPolicy_ = input.readBytes();
                bitField0_ |= 0x00000400;
                break;
              } // case 194
              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 of the ephemeral container specified as a DNS_LABEL.
       * This name must be unique among all containers, init containers and ephemeral containers.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name of the ephemeral container specified as a DNS_LABEL.
       * This name must be unique among all containers, init containers and ephemeral containers.
       * </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 of the ephemeral container specified as a DNS_LABEL.
       * This name must be unique among all containers, init containers and ephemeral containers.
       * </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 of the ephemeral container specified as a DNS_LABEL.
       * This name must be unique among all containers, init containers and ephemeral containers.
       * </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 of the ephemeral container specified as a DNS_LABEL.
       * This name must be unique among all containers, init containers and ephemeral containers.
       * </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 of the ephemeral container specified as a DNS_LABEL.
       * This name must be unique among all containers, init containers and ephemeral containers.
       * </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 image_ = "";
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return Whether the image field is set.
       */
      public boolean hasImage() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return The image.
       */
      public java.lang.String getImage() {
        java.lang.Object ref = image_;
        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()) {
            image_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return The bytes for image.
       */
      public com.google.protobuf.ByteString
          getImageBytes() {
        java.lang.Object ref = image_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          image_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @param value The image to set.
       * @return This builder for chaining.
       */
      public Builder setImage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        image_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearImage() {
        image_ = getDefaultInstance().getImage();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container image name.
       * More info: https://kubernetes.io/docs/concepts/containers/images
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @param value The bytes for image to set.
       * @return This builder for chaining.
       */
      public Builder setImageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        image_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureCommandIsMutable() {
        if (!command_.isModifiable()) {
          command_ = new com.google.protobuf.LazyStringArrayList(command_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @return A list containing the command.
       */
      public com.google.protobuf.ProtocolStringList
          getCommandList() {
        command_.makeImmutable();
        return command_;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @return The count of command.
       */
      public int getCommandCount() {
        return command_.size();
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param index The index of the element to return.
       * @return The command at the given index.
       */
      public java.lang.String getCommand(int index) {
        return command_.get(index);
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the command at the given index.
       */
      public com.google.protobuf.ByteString
          getCommandBytes(int index) {
        return command_.getByteString(index);
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param index The index to set the value at.
       * @param value The command to set.
       * @return This builder for chaining.
       */
      public Builder setCommand(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param value The command to add.
       * @return This builder for chaining.
       */
      public Builder addCommand(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param values The command to add.
       * @return This builder for chaining.
       */
      public Builder addAllCommand(
          java.lang.Iterable<java.lang.String> values) {
        ensureCommandIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, command_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCommand() {
        command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Entrypoint array. Not executed within a shell.
       * The image's ENTRYPOINT is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 3;</code>
       * @param value The bytes of the command to add.
       * @return This builder for chaining.
       */
      public Builder addCommandBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList args_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureArgsIsMutable() {
        if (!args_.isModifiable()) {
          args_ = new com.google.protobuf.LazyStringArrayList(args_);
        }
        bitField0_ |= 0x00000008;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @return A list containing the args.
       */
      public com.google.protobuf.ProtocolStringList
          getArgsList() {
        args_.makeImmutable();
        return args_;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @return The count of args.
       */
      public int getArgsCount() {
        return args_.size();
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param index The index of the element to return.
       * @return The args at the given index.
       */
      public java.lang.String getArgs(int index) {
        return args_.get(index);
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the args at the given index.
       */
      public com.google.protobuf.ByteString
          getArgsBytes(int index) {
        return args_.getByteString(index);
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param index The index to set the value at.
       * @param value The args to set.
       * @return This builder for chaining.
       */
      public Builder setArgs(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureArgsIsMutable();
        args_.set(index, value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param value The args to add.
       * @return This builder for chaining.
       */
      public Builder addArgs(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureArgsIsMutable();
        args_.add(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param values The args to add.
       * @return This builder for chaining.
       */
      public Builder addAllArgs(
          java.lang.Iterable<java.lang.String> values) {
        ensureArgsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, args_);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearArgs() {
        args_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Arguments to the entrypoint.
       * The image's CMD is used if this is not provided.
       * Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
       * cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
       * to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
       * produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
       * of whether the variable exists or not. Cannot be updated.
       * More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string args = 4;</code>
       * @param value The bytes of the args to add.
       * @return This builder for chaining.
       */
      public Builder addArgsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureArgsIsMutable();
        args_.add(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object workingDir_ = "";
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @return Whether the workingDir field is set.
       */
      public boolean hasWorkingDir() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @return The workingDir.
       */
      public java.lang.String getWorkingDir() {
        java.lang.Object ref = workingDir_;
        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()) {
            workingDir_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @return The bytes for workingDir.
       */
      public com.google.protobuf.ByteString
          getWorkingDirBytes() {
        java.lang.Object ref = workingDir_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          workingDir_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @param value The workingDir to set.
       * @return This builder for chaining.
       */
      public Builder setWorkingDir(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        workingDir_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearWorkingDir() {
        workingDir_ = getDefaultInstance().getWorkingDir();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container's working directory.
       * If not specified, the container runtime's default will be used, which
       * might be configured in the container image.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string workingDir = 5;</code>
       * @param value The bytes for workingDir to set.
       * @return This builder for chaining.
       */
      public Builder setWorkingDirBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        workingDir_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.ContainerPort> ports_ =
        java.util.Collections.emptyList();
      private void ensurePortsIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          ports_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ContainerPort>(ports_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerPort, io.kubernetes.client.proto.V1.ContainerPort.Builder, io.kubernetes.client.proto.V1.ContainerPortOrBuilder> portsBuilder_;

      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerPort> getPortsList() {
        if (portsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ports_);
        } else {
          return portsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public int getPortsCount() {
        if (portsBuilder_ == null) {
          return ports_.size();
        } else {
          return portsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerPort getPorts(int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);
        } else {
          return portsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder setPorts(
          int index, io.kubernetes.client.proto.V1.ContainerPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.set(index, value);
          onChanged();
        } else {
          portsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder setPorts(
          int index, io.kubernetes.client.proto.V1.ContainerPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.set(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder addPorts(io.kubernetes.client.proto.V1.ContainerPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(value);
          onChanged();
        } else {
          portsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder addPorts(
          int index, io.kubernetes.client.proto.V1.ContainerPort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(index, value);
          onChanged();
        } else {
          portsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder addPorts(
          io.kubernetes.client.proto.V1.ContainerPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder addPorts(
          int index, io.kubernetes.client.proto.V1.ContainerPort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder addAllPorts(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ContainerPort> values) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ports_);
          onChanged();
        } else {
          portsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder clearPorts() {
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          portsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public Builder removePorts(int index) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.remove(index);
          onChanged();
        } else {
          portsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerPort.Builder getPortsBuilder(
          int index) {
        return getPortsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerPortOrBuilder getPortsOrBuilder(
          int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);  } else {
          return portsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerPortOrBuilder> 
           getPortsOrBuilderList() {
        if (portsBuilder_ != null) {
          return portsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ports_);
        }
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerPort.Builder addPortsBuilder() {
        return getPortsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ContainerPort.getDefaultInstance());
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerPort.Builder addPortsBuilder(
          int index) {
        return getPortsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ContainerPort.getDefaultInstance());
      }
      /**
       * <pre>
       * Ports are not allowed for ephemeral containers.
       * +optional
       * +patchMergeKey=containerPort
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=containerPort
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerPort ports = 6;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerPort.Builder> 
           getPortsBuilderList() {
        return getPortsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerPort, io.kubernetes.client.proto.V1.ContainerPort.Builder, io.kubernetes.client.proto.V1.ContainerPortOrBuilder> 
          getPortsFieldBuilder() {
        if (portsBuilder_ == null) {
          portsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerPort, io.kubernetes.client.proto.V1.ContainerPort.Builder, io.kubernetes.client.proto.V1.ContainerPortOrBuilder>(
                  ports_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          ports_ = null;
        }
        return portsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.EnvFromSource> envFrom_ =
        java.util.Collections.emptyList();
      private void ensureEnvFromIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          envFrom_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.EnvFromSource>(envFrom_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EnvFromSource, io.kubernetes.client.proto.V1.EnvFromSource.Builder, io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder> envFromBuilder_;

      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EnvFromSource> getEnvFromList() {
        if (envFromBuilder_ == null) {
          return java.util.Collections.unmodifiableList(envFrom_);
        } else {
          return envFromBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public int getEnvFromCount() {
        if (envFromBuilder_ == null) {
          return envFrom_.size();
        } else {
          return envFromBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public io.kubernetes.client.proto.V1.EnvFromSource getEnvFrom(int index) {
        if (envFromBuilder_ == null) {
          return envFrom_.get(index);
        } else {
          return envFromBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder setEnvFrom(
          int index, io.kubernetes.client.proto.V1.EnvFromSource value) {
        if (envFromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvFromIsMutable();
          envFrom_.set(index, value);
          onChanged();
        } else {
          envFromBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder setEnvFrom(
          int index, io.kubernetes.client.proto.V1.EnvFromSource.Builder builderForValue) {
        if (envFromBuilder_ == null) {
          ensureEnvFromIsMutable();
          envFrom_.set(index, builderForValue.build());
          onChanged();
        } else {
          envFromBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder addEnvFrom(io.kubernetes.client.proto.V1.EnvFromSource value) {
        if (envFromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvFromIsMutable();
          envFrom_.add(value);
          onChanged();
        } else {
          envFromBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder addEnvFrom(
          int index, io.kubernetes.client.proto.V1.EnvFromSource value) {
        if (envFromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvFromIsMutable();
          envFrom_.add(index, value);
          onChanged();
        } else {
          envFromBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder addEnvFrom(
          io.kubernetes.client.proto.V1.EnvFromSource.Builder builderForValue) {
        if (envFromBuilder_ == null) {
          ensureEnvFromIsMutable();
          envFrom_.add(builderForValue.build());
          onChanged();
        } else {
          envFromBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder addEnvFrom(
          int index, io.kubernetes.client.proto.V1.EnvFromSource.Builder builderForValue) {
        if (envFromBuilder_ == null) {
          ensureEnvFromIsMutable();
          envFrom_.add(index, builderForValue.build());
          onChanged();
        } else {
          envFromBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder addAllEnvFrom(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.EnvFromSource> values) {
        if (envFromBuilder_ == null) {
          ensureEnvFromIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, envFrom_);
          onChanged();
        } else {
          envFromBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder clearEnvFrom() {
        if (envFromBuilder_ == null) {
          envFrom_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          envFromBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public Builder removeEnvFrom(int index) {
        if (envFromBuilder_ == null) {
          ensureEnvFromIsMutable();
          envFrom_.remove(index);
          onChanged();
        } else {
          envFromBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public io.kubernetes.client.proto.V1.EnvFromSource.Builder getEnvFromBuilder(
          int index) {
        return getEnvFromFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder getEnvFromOrBuilder(
          int index) {
        if (envFromBuilder_ == null) {
          return envFrom_.get(index);  } else {
          return envFromBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder> 
           getEnvFromOrBuilderList() {
        if (envFromBuilder_ != null) {
          return envFromBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(envFrom_);
        }
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public io.kubernetes.client.proto.V1.EnvFromSource.Builder addEnvFromBuilder() {
        return getEnvFromFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.EnvFromSource.getDefaultInstance());
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public io.kubernetes.client.proto.V1.EnvFromSource.Builder addEnvFromBuilder(
          int index) {
        return getEnvFromFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.EnvFromSource.getDefaultInstance());
      }
      /**
       * <pre>
       * List of sources to populate environment variables in the container.
       * The keys defined within a source must be a C_IDENTIFIER. All invalid keys
       * will be reported as an event when the container is starting. When a key exists in multiple
       * sources, the value associated with the last source will take precedence.
       * Values defined by an Env with a duplicate key will take precedence.
       * Cannot be updated.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvFromSource envFrom = 19;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EnvFromSource.Builder> 
           getEnvFromBuilderList() {
        return getEnvFromFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EnvFromSource, io.kubernetes.client.proto.V1.EnvFromSource.Builder, io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder> 
          getEnvFromFieldBuilder() {
        if (envFromBuilder_ == null) {
          envFromBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.EnvFromSource, io.kubernetes.client.proto.V1.EnvFromSource.Builder, io.kubernetes.client.proto.V1.EnvFromSourceOrBuilder>(
                  envFrom_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          envFrom_ = null;
        }
        return envFromBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.EnvVar> env_ =
        java.util.Collections.emptyList();
      private void ensureEnvIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          env_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.EnvVar>(env_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EnvVar, io.kubernetes.client.proto.V1.EnvVar.Builder, io.kubernetes.client.proto.V1.EnvVarOrBuilder> envBuilder_;

      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EnvVar> getEnvList() {
        if (envBuilder_ == null) {
          return java.util.Collections.unmodifiableList(env_);
        } else {
          return envBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public int getEnvCount() {
        if (envBuilder_ == null) {
          return env_.size();
        } else {
          return envBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVar getEnv(int index) {
        if (envBuilder_ == null) {
          return env_.get(index);
        } else {
          return envBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder setEnv(
          int index, io.kubernetes.client.proto.V1.EnvVar value) {
        if (envBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvIsMutable();
          env_.set(index, value);
          onChanged();
        } else {
          envBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder setEnv(
          int index, io.kubernetes.client.proto.V1.EnvVar.Builder builderForValue) {
        if (envBuilder_ == null) {
          ensureEnvIsMutable();
          env_.set(index, builderForValue.build());
          onChanged();
        } else {
          envBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder addEnv(io.kubernetes.client.proto.V1.EnvVar value) {
        if (envBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvIsMutable();
          env_.add(value);
          onChanged();
        } else {
          envBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder addEnv(
          int index, io.kubernetes.client.proto.V1.EnvVar value) {
        if (envBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvIsMutable();
          env_.add(index, value);
          onChanged();
        } else {
          envBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder addEnv(
          io.kubernetes.client.proto.V1.EnvVar.Builder builderForValue) {
        if (envBuilder_ == null) {
          ensureEnvIsMutable();
          env_.add(builderForValue.build());
          onChanged();
        } else {
          envBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder addEnv(
          int index, io.kubernetes.client.proto.V1.EnvVar.Builder builderForValue) {
        if (envBuilder_ == null) {
          ensureEnvIsMutable();
          env_.add(index, builderForValue.build());
          onChanged();
        } else {
          envBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder addAllEnv(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.EnvVar> values) {
        if (envBuilder_ == null) {
          ensureEnvIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, env_);
          onChanged();
        } else {
          envBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder clearEnv() {
        if (envBuilder_ == null) {
          env_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          envBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public Builder removeEnv(int index) {
        if (envBuilder_ == null) {
          ensureEnvIsMutable();
          env_.remove(index);
          onChanged();
        } else {
          envBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVar.Builder getEnvBuilder(
          int index) {
        return getEnvFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVarOrBuilder getEnvOrBuilder(
          int index) {
        if (envBuilder_ == null) {
          return env_.get(index);  } else {
          return envBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.EnvVarOrBuilder> 
           getEnvOrBuilderList() {
        if (envBuilder_ != null) {
          return envBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(env_);
        }
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVar.Builder addEnvBuilder() {
        return getEnvFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.EnvVar.getDefaultInstance());
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public io.kubernetes.client.proto.V1.EnvVar.Builder addEnvBuilder(
          int index) {
        return getEnvFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.EnvVar.getDefaultInstance());
      }
      /**
       * <pre>
       * List of environment variables to set in the container.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EnvVar env = 7;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EnvVar.Builder> 
           getEnvBuilderList() {
        return getEnvFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EnvVar, io.kubernetes.client.proto.V1.EnvVar.Builder, io.kubernetes.client.proto.V1.EnvVarOrBuilder> 
          getEnvFieldBuilder() {
        if (envBuilder_ == null) {
          envBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.EnvVar, io.kubernetes.client.proto.V1.EnvVar.Builder, io.kubernetes.client.proto.V1.EnvVarOrBuilder>(
                  env_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          env_ = null;
        }
        return envBuilder_;
      }

      private io.kubernetes.client.proto.V1.ResourceRequirements resources_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceRequirements, io.kubernetes.client.proto.V1.ResourceRequirements.Builder, io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder> resourcesBuilder_;
      /**
       * <pre>
       * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
       * already allocated to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       * @return Whether the resources field is set.
       */
      public boolean hasResources() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
       * already allocated to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       * @return The resources.
       */
      public io.kubernetes.client.proto.V1.ResourceRequirements getResources() {
        if (resourcesBuilder_ == null) {
          return resources_ == null ? io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
        } else {
          return resourcesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
       * already allocated to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public Builder setResources(io.kubernetes.client.proto.V1.ResourceRequirements value) {
        if (resourcesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resources_ = value;
        } else {
          resourcesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
       * already allocated to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public Builder setResources(
          io.kubernetes.client.proto.V1.ResourceRequirements.Builder builderForValue) {
        if (resourcesBuilder_ == null) {
          resources_ = builderForValue.build();
        } else {
          resourcesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
       * already allocated to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public Builder mergeResources(io.kubernetes.client.proto.V1.ResourceRequirements value) {
        if (resourcesBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
            resources_ != null &&
            resources_ != io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance()) {
            getResourcesBuilder().mergeFrom(value);
          } else {
            resources_ = value;
          }
        } else {
          resourcesBuilder_.mergeFrom(value);
        }
        if (resources_ != null) {
          bitField0_ |= 0x00000100;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
       * already allocated to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public Builder clearResources() {
        bitField0_ = (bitField0_ & ~0x00000100);
        resources_ = null;
        if (resourcesBuilder_ != null) {
          resourcesBuilder_.dispose();
          resourcesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
       * already allocated to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceRequirements.Builder getResourcesBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getResourcesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
       * already allocated to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder getResourcesOrBuilder() {
        if (resourcesBuilder_ != null) {
          return resourcesBuilder_.getMessageOrBuilder();
        } else {
          return resources_ == null ?
              io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance() : resources_;
        }
      }
      /**
       * <pre>
       * Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
       * already allocated to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceRequirements resources = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceRequirements, io.kubernetes.client.proto.V1.ResourceRequirements.Builder, io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder> 
          getResourcesFieldBuilder() {
        if (resourcesBuilder_ == null) {
          resourcesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ResourceRequirements, io.kubernetes.client.proto.V1.ResourceRequirements.Builder, io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder>(
                  getResources(),
                  getParentForChildren(),
                  isClean());
          resources_ = null;
        }
        return resourcesBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy> resizePolicy_ =
        java.util.Collections.emptyList();
      private void ensureResizePolicyIsMutable() {
        if (!((bitField0_ & 0x00000200) != 0)) {
          resizePolicy_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ContainerResizePolicy>(resizePolicy_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerResizePolicy, io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder, io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder> resizePolicyBuilder_;

      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy> getResizePolicyList() {
        if (resizePolicyBuilder_ == null) {
          return java.util.Collections.unmodifiableList(resizePolicy_);
        } else {
          return resizePolicyBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public int getResizePolicyCount() {
        if (resizePolicyBuilder_ == null) {
          return resizePolicy_.size();
        } else {
          return resizePolicyBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerResizePolicy getResizePolicy(int index) {
        if (resizePolicyBuilder_ == null) {
          return resizePolicy_.get(index);
        } else {
          return resizePolicyBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder setResizePolicy(
          int index, io.kubernetes.client.proto.V1.ContainerResizePolicy value) {
        if (resizePolicyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResizePolicyIsMutable();
          resizePolicy_.set(index, value);
          onChanged();
        } else {
          resizePolicyBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder setResizePolicy(
          int index, io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder builderForValue) {
        if (resizePolicyBuilder_ == null) {
          ensureResizePolicyIsMutable();
          resizePolicy_.set(index, builderForValue.build());
          onChanged();
        } else {
          resizePolicyBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder addResizePolicy(io.kubernetes.client.proto.V1.ContainerResizePolicy value) {
        if (resizePolicyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResizePolicyIsMutable();
          resizePolicy_.add(value);
          onChanged();
        } else {
          resizePolicyBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder addResizePolicy(
          int index, io.kubernetes.client.proto.V1.ContainerResizePolicy value) {
        if (resizePolicyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResizePolicyIsMutable();
          resizePolicy_.add(index, value);
          onChanged();
        } else {
          resizePolicyBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder addResizePolicy(
          io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder builderForValue) {
        if (resizePolicyBuilder_ == null) {
          ensureResizePolicyIsMutable();
          resizePolicy_.add(builderForValue.build());
          onChanged();
        } else {
          resizePolicyBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder addResizePolicy(
          int index, io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder builderForValue) {
        if (resizePolicyBuilder_ == null) {
          ensureResizePolicyIsMutable();
          resizePolicy_.add(index, builderForValue.build());
          onChanged();
        } else {
          resizePolicyBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder addAllResizePolicy(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ContainerResizePolicy> values) {
        if (resizePolicyBuilder_ == null) {
          ensureResizePolicyIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, resizePolicy_);
          onChanged();
        } else {
          resizePolicyBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder clearResizePolicy() {
        if (resizePolicyBuilder_ == null) {
          resizePolicy_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          resizePolicyBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public Builder removeResizePolicy(int index) {
        if (resizePolicyBuilder_ == null) {
          ensureResizePolicyIsMutable();
          resizePolicy_.remove(index);
          onChanged();
        } else {
          resizePolicyBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder getResizePolicyBuilder(
          int index) {
        return getResizePolicyFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder getResizePolicyOrBuilder(
          int index) {
        if (resizePolicyBuilder_ == null) {
          return resizePolicy_.get(index);  } else {
          return resizePolicyBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder> 
           getResizePolicyOrBuilderList() {
        if (resizePolicyBuilder_ != null) {
          return resizePolicyBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(resizePolicy_);
        }
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder addResizePolicyBuilder() {
        return getResizePolicyFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ContainerResizePolicy.getDefaultInstance());
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder addResizePolicyBuilder(
          int index) {
        return getResizePolicyFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ContainerResizePolicy.getDefaultInstance());
      }
      /**
       * <pre>
       * Resources resize policy for the container.
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerResizePolicy resizePolicy = 23;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder> 
           getResizePolicyBuilderList() {
        return getResizePolicyFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerResizePolicy, io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder, io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder> 
          getResizePolicyFieldBuilder() {
        if (resizePolicyBuilder_ == null) {
          resizePolicyBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerResizePolicy, io.kubernetes.client.proto.V1.ContainerResizePolicy.Builder, io.kubernetes.client.proto.V1.ContainerResizePolicyOrBuilder>(
                  resizePolicy_,
                  ((bitField0_ & 0x00000200) != 0),
                  getParentForChildren(),
                  isClean());
          resizePolicy_ = null;
        }
        return resizePolicyBuilder_;
      }

      private java.lang.Object restartPolicy_ = "";
      /**
       * <pre>
       * Restart policy for the container to manage the restart behavior of each
       * container within a pod.
       * This may only be set for init containers. You cannot set this field on
       * ephemeral containers.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @return Whether the restartPolicy field is set.
       */
      public boolean hasRestartPolicy() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * Restart policy for the container to manage the restart behavior of each
       * container within a pod.
       * This may only be set for init containers. You cannot set this field on
       * ephemeral containers.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @return The restartPolicy.
       */
      public java.lang.String getRestartPolicy() {
        java.lang.Object ref = restartPolicy_;
        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()) {
            restartPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Restart policy for the container to manage the restart behavior of each
       * container within a pod.
       * This may only be set for init containers. You cannot set this field on
       * ephemeral containers.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @return The bytes for restartPolicy.
       */
      public com.google.protobuf.ByteString
          getRestartPolicyBytes() {
        java.lang.Object ref = restartPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          restartPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Restart policy for the container to manage the restart behavior of each
       * container within a pod.
       * This may only be set for init containers. You cannot set this field on
       * ephemeral containers.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @param value The restartPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setRestartPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        restartPolicy_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Restart policy for the container to manage the restart behavior of each
       * container within a pod.
       * This may only be set for init containers. You cannot set this field on
       * ephemeral containers.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @return This builder for chaining.
       */
      public Builder clearRestartPolicy() {
        restartPolicy_ = getDefaultInstance().getRestartPolicy();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Restart policy for the container to manage the restart behavior of each
       * container within a pod.
       * This may only be set for init containers. You cannot set this field on
       * ephemeral containers.
       * +featureGate=SidecarContainers
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 24;</code>
       * @param value The bytes for restartPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setRestartPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        restartPolicy_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.VolumeMount> volumeMounts_ =
        java.util.Collections.emptyList();
      private void ensureVolumeMountsIsMutable() {
        if (!((bitField0_ & 0x00000800) != 0)) {
          volumeMounts_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.VolumeMount>(volumeMounts_);
          bitField0_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeMount, io.kubernetes.client.proto.V1.VolumeMount.Builder, io.kubernetes.client.proto.V1.VolumeMountOrBuilder> volumeMountsBuilder_;

      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeMount> getVolumeMountsList() {
        if (volumeMountsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(volumeMounts_);
        } else {
          return volumeMountsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public int getVolumeMountsCount() {
        if (volumeMountsBuilder_ == null) {
          return volumeMounts_.size();
        } else {
          return volumeMountsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMount getVolumeMounts(int index) {
        if (volumeMountsBuilder_ == null) {
          return volumeMounts_.get(index);
        } else {
          return volumeMountsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder setVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMount value) {
        if (volumeMountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeMountsIsMutable();
          volumeMounts_.set(index, value);
          onChanged();
        } else {
          volumeMountsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder setVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMount.Builder builderForValue) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.set(index, builderForValue.build());
          onChanged();
        } else {
          volumeMountsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder addVolumeMounts(io.kubernetes.client.proto.V1.VolumeMount value) {
        if (volumeMountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(value);
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder addVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMount value) {
        if (volumeMountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(index, value);
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder addVolumeMounts(
          io.kubernetes.client.proto.V1.VolumeMount.Builder builderForValue) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(builderForValue.build());
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder addVolumeMounts(
          int index, io.kubernetes.client.proto.V1.VolumeMount.Builder builderForValue) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.add(index, builderForValue.build());
          onChanged();
        } else {
          volumeMountsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder addAllVolumeMounts(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.VolumeMount> values) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, volumeMounts_);
          onChanged();
        } else {
          volumeMountsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder clearVolumeMounts() {
        if (volumeMountsBuilder_ == null) {
          volumeMounts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          volumeMountsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public Builder removeVolumeMounts(int index) {
        if (volumeMountsBuilder_ == null) {
          ensureVolumeMountsIsMutable();
          volumeMounts_.remove(index);
          onChanged();
        } else {
          volumeMountsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMount.Builder getVolumeMountsBuilder(
          int index) {
        return getVolumeMountsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMountOrBuilder getVolumeMountsOrBuilder(
          int index) {
        if (volumeMountsBuilder_ == null) {
          return volumeMounts_.get(index);  } else {
          return volumeMountsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeMountOrBuilder> 
           getVolumeMountsOrBuilderList() {
        if (volumeMountsBuilder_ != null) {
          return volumeMountsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(volumeMounts_);
        }
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMount.Builder addVolumeMountsBuilder() {
        return getVolumeMountsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.VolumeMount.getDefaultInstance());
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeMount.Builder addVolumeMountsBuilder(
          int index) {
        return getVolumeMountsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.VolumeMount.getDefaultInstance());
      }
      /**
       * <pre>
       * Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       * Cannot be updated.
       * +optional
       * +patchMergeKey=mountPath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=mountPath
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeMount volumeMounts = 9;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeMount.Builder> 
           getVolumeMountsBuilderList() {
        return getVolumeMountsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeMount, io.kubernetes.client.proto.V1.VolumeMount.Builder, io.kubernetes.client.proto.V1.VolumeMountOrBuilder> 
          getVolumeMountsFieldBuilder() {
        if (volumeMountsBuilder_ == null) {
          volumeMountsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.VolumeMount, io.kubernetes.client.proto.V1.VolumeMount.Builder, io.kubernetes.client.proto.V1.VolumeMountOrBuilder>(
                  volumeMounts_,
                  ((bitField0_ & 0x00000800) != 0),
                  getParentForChildren(),
                  isClean());
          volumeMounts_ = null;
        }
        return volumeMountsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.VolumeDevice> volumeDevices_ =
        java.util.Collections.emptyList();
      private void ensureVolumeDevicesIsMutable() {
        if (!((bitField0_ & 0x00001000) != 0)) {
          volumeDevices_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.VolumeDevice>(volumeDevices_);
          bitField0_ |= 0x00001000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeDevice, io.kubernetes.client.proto.V1.VolumeDevice.Builder, io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder> volumeDevicesBuilder_;

      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeDevice> getVolumeDevicesList() {
        if (volumeDevicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(volumeDevices_);
        } else {
          return volumeDevicesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public int getVolumeDevicesCount() {
        if (volumeDevicesBuilder_ == null) {
          return volumeDevices_.size();
        } else {
          return volumeDevicesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeDevice getVolumeDevices(int index) {
        if (volumeDevicesBuilder_ == null) {
          return volumeDevices_.get(index);
        } else {
          return volumeDevicesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder setVolumeDevices(
          int index, io.kubernetes.client.proto.V1.VolumeDevice value) {
        if (volumeDevicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeDevicesIsMutable();
          volumeDevices_.set(index, value);
          onChanged();
        } else {
          volumeDevicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder setVolumeDevices(
          int index, io.kubernetes.client.proto.V1.VolumeDevice.Builder builderForValue) {
        if (volumeDevicesBuilder_ == null) {
          ensureVolumeDevicesIsMutable();
          volumeDevices_.set(index, builderForValue.build());
          onChanged();
        } else {
          volumeDevicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder addVolumeDevices(io.kubernetes.client.proto.V1.VolumeDevice value) {
        if (volumeDevicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeDevicesIsMutable();
          volumeDevices_.add(value);
          onChanged();
        } else {
          volumeDevicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder addVolumeDevices(
          int index, io.kubernetes.client.proto.V1.VolumeDevice value) {
        if (volumeDevicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumeDevicesIsMutable();
          volumeDevices_.add(index, value);
          onChanged();
        } else {
          volumeDevicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder addVolumeDevices(
          io.kubernetes.client.proto.V1.VolumeDevice.Builder builderForValue) {
        if (volumeDevicesBuilder_ == null) {
          ensureVolumeDevicesIsMutable();
          volumeDevices_.add(builderForValue.build());
          onChanged();
        } else {
          volumeDevicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder addVolumeDevices(
          int index, io.kubernetes.client.proto.V1.VolumeDevice.Builder builderForValue) {
        if (volumeDevicesBuilder_ == null) {
          ensureVolumeDevicesIsMutable();
          volumeDevices_.add(index, builderForValue.build());
          onChanged();
        } else {
          volumeDevicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder addAllVolumeDevices(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.VolumeDevice> values) {
        if (volumeDevicesBuilder_ == null) {
          ensureVolumeDevicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, volumeDevices_);
          onChanged();
        } else {
          volumeDevicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder clearVolumeDevices() {
        if (volumeDevicesBuilder_ == null) {
          volumeDevices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
          onChanged();
        } else {
          volumeDevicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public Builder removeVolumeDevices(int index) {
        if (volumeDevicesBuilder_ == null) {
          ensureVolumeDevicesIsMutable();
          volumeDevices_.remove(index);
          onChanged();
        } else {
          volumeDevicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeDevice.Builder getVolumeDevicesBuilder(
          int index) {
        return getVolumeDevicesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder getVolumeDevicesOrBuilder(
          int index) {
        if (volumeDevicesBuilder_ == null) {
          return volumeDevices_.get(index);  } else {
          return volumeDevicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder> 
           getVolumeDevicesOrBuilderList() {
        if (volumeDevicesBuilder_ != null) {
          return volumeDevicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(volumeDevices_);
        }
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeDevice.Builder addVolumeDevicesBuilder() {
        return getVolumeDevicesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.VolumeDevice.getDefaultInstance());
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeDevice.Builder addVolumeDevicesBuilder(
          int index) {
        return getVolumeDevicesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.VolumeDevice.getDefaultInstance());
      }
      /**
       * <pre>
       * volumeDevices is the list of block devices to be used by the container.
       * +patchMergeKey=devicePath
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=devicePath
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeDevice volumeDevices = 21;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeDevice.Builder> 
           getVolumeDevicesBuilderList() {
        return getVolumeDevicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeDevice, io.kubernetes.client.proto.V1.VolumeDevice.Builder, io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder> 
          getVolumeDevicesFieldBuilder() {
        if (volumeDevicesBuilder_ == null) {
          volumeDevicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.VolumeDevice, io.kubernetes.client.proto.V1.VolumeDevice.Builder, io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder>(
                  volumeDevices_,
                  ((bitField0_ & 0x00001000) != 0),
                  getParentForChildren(),
                  isClean());
          volumeDevices_ = null;
        }
        return volumeDevicesBuilder_;
      }

      private io.kubernetes.client.proto.V1.Probe livenessProbe_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> livenessProbeBuilder_;
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       * @return Whether the livenessProbe field is set.
       */
      public boolean hasLivenessProbe() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       * @return The livenessProbe.
       */
      public io.kubernetes.client.proto.V1.Probe getLivenessProbe() {
        if (livenessProbeBuilder_ == null) {
          return livenessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : livenessProbe_;
        } else {
          return livenessProbeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public Builder setLivenessProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (livenessProbeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          livenessProbe_ = value;
        } else {
          livenessProbeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public Builder setLivenessProbe(
          io.kubernetes.client.proto.V1.Probe.Builder builderForValue) {
        if (livenessProbeBuilder_ == null) {
          livenessProbe_ = builderForValue.build();
        } else {
          livenessProbeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public Builder mergeLivenessProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (livenessProbeBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0) &&
            livenessProbe_ != null &&
            livenessProbe_ != io.kubernetes.client.proto.V1.Probe.getDefaultInstance()) {
            getLivenessProbeBuilder().mergeFrom(value);
          } else {
            livenessProbe_ = value;
          }
        } else {
          livenessProbeBuilder_.mergeFrom(value);
        }
        if (livenessProbe_ != null) {
          bitField0_ |= 0x00002000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public Builder clearLivenessProbe() {
        bitField0_ = (bitField0_ & ~0x00002000);
        livenessProbe_ = null;
        if (livenessProbeBuilder_ != null) {
          livenessProbeBuilder_.dispose();
          livenessProbeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public io.kubernetes.client.proto.V1.Probe.Builder getLivenessProbeBuilder() {
        bitField0_ |= 0x00002000;
        onChanged();
        return getLivenessProbeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      public io.kubernetes.client.proto.V1.ProbeOrBuilder getLivenessProbeOrBuilder() {
        if (livenessProbeBuilder_ != null) {
          return livenessProbeBuilder_.getMessageOrBuilder();
        } else {
          return livenessProbe_ == null ?
              io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : livenessProbe_;
        }
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe livenessProbe = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> 
          getLivenessProbeFieldBuilder() {
        if (livenessProbeBuilder_ == null) {
          livenessProbeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder>(
                  getLivenessProbe(),
                  getParentForChildren(),
                  isClean());
          livenessProbe_ = null;
        }
        return livenessProbeBuilder_;
      }

      private io.kubernetes.client.proto.V1.Probe readinessProbe_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> readinessProbeBuilder_;
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       * @return Whether the readinessProbe field is set.
       */
      public boolean hasReadinessProbe() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       * @return The readinessProbe.
       */
      public io.kubernetes.client.proto.V1.Probe getReadinessProbe() {
        if (readinessProbeBuilder_ == null) {
          return readinessProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : readinessProbe_;
        } else {
          return readinessProbeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public Builder setReadinessProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (readinessProbeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          readinessProbe_ = value;
        } else {
          readinessProbeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public Builder setReadinessProbe(
          io.kubernetes.client.proto.V1.Probe.Builder builderForValue) {
        if (readinessProbeBuilder_ == null) {
          readinessProbe_ = builderForValue.build();
        } else {
          readinessProbeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public Builder mergeReadinessProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (readinessProbeBuilder_ == null) {
          if (((bitField0_ & 0x00004000) != 0) &&
            readinessProbe_ != null &&
            readinessProbe_ != io.kubernetes.client.proto.V1.Probe.getDefaultInstance()) {
            getReadinessProbeBuilder().mergeFrom(value);
          } else {
            readinessProbe_ = value;
          }
        } else {
          readinessProbeBuilder_.mergeFrom(value);
        }
        if (readinessProbe_ != null) {
          bitField0_ |= 0x00004000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public Builder clearReadinessProbe() {
        bitField0_ = (bitField0_ & ~0x00004000);
        readinessProbe_ = null;
        if (readinessProbeBuilder_ != null) {
          readinessProbeBuilder_.dispose();
          readinessProbeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public io.kubernetes.client.proto.V1.Probe.Builder getReadinessProbeBuilder() {
        bitField0_ |= 0x00004000;
        onChanged();
        return getReadinessProbeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      public io.kubernetes.client.proto.V1.ProbeOrBuilder getReadinessProbeOrBuilder() {
        if (readinessProbeBuilder_ != null) {
          return readinessProbeBuilder_.getMessageOrBuilder();
        } else {
          return readinessProbe_ == null ?
              io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : readinessProbe_;
        }
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe readinessProbe = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> 
          getReadinessProbeFieldBuilder() {
        if (readinessProbeBuilder_ == null) {
          readinessProbeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder>(
                  getReadinessProbe(),
                  getParentForChildren(),
                  isClean());
          readinessProbe_ = null;
        }
        return readinessProbeBuilder_;
      }

      private io.kubernetes.client.proto.V1.Probe startupProbe_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> startupProbeBuilder_;
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       * @return Whether the startupProbe field is set.
       */
      public boolean hasStartupProbe() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       * @return The startupProbe.
       */
      public io.kubernetes.client.proto.V1.Probe getStartupProbe() {
        if (startupProbeBuilder_ == null) {
          return startupProbe_ == null ? io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : startupProbe_;
        } else {
          return startupProbeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public Builder setStartupProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (startupProbeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          startupProbe_ = value;
        } else {
          startupProbeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public Builder setStartupProbe(
          io.kubernetes.client.proto.V1.Probe.Builder builderForValue) {
        if (startupProbeBuilder_ == null) {
          startupProbe_ = builderForValue.build();
        } else {
          startupProbeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public Builder mergeStartupProbe(io.kubernetes.client.proto.V1.Probe value) {
        if (startupProbeBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0) &&
            startupProbe_ != null &&
            startupProbe_ != io.kubernetes.client.proto.V1.Probe.getDefaultInstance()) {
            getStartupProbeBuilder().mergeFrom(value);
          } else {
            startupProbe_ = value;
          }
        } else {
          startupProbeBuilder_.mergeFrom(value);
        }
        if (startupProbe_ != null) {
          bitField0_ |= 0x00008000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public Builder clearStartupProbe() {
        bitField0_ = (bitField0_ & ~0x00008000);
        startupProbe_ = null;
        if (startupProbeBuilder_ != null) {
          startupProbeBuilder_.dispose();
          startupProbeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public io.kubernetes.client.proto.V1.Probe.Builder getStartupProbeBuilder() {
        bitField0_ |= 0x00008000;
        onChanged();
        return getStartupProbeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      public io.kubernetes.client.proto.V1.ProbeOrBuilder getStartupProbeOrBuilder() {
        if (startupProbeBuilder_ != null) {
          return startupProbeBuilder_.getMessageOrBuilder();
        } else {
          return startupProbe_ == null ?
              io.kubernetes.client.proto.V1.Probe.getDefaultInstance() : startupProbe_;
        }
      }
      /**
       * <pre>
       * Probes are not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Probe startupProbe = 22;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder> 
          getStartupProbeFieldBuilder() {
        if (startupProbeBuilder_ == null) {
          startupProbeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.Probe, io.kubernetes.client.proto.V1.Probe.Builder, io.kubernetes.client.proto.V1.ProbeOrBuilder>(
                  getStartupProbe(),
                  getParentForChildren(),
                  isClean());
          startupProbe_ = null;
        }
        return startupProbeBuilder_;
      }

      private io.kubernetes.client.proto.V1.Lifecycle lifecycle_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Lifecycle, io.kubernetes.client.proto.V1.Lifecycle.Builder, io.kubernetes.client.proto.V1.LifecycleOrBuilder> lifecycleBuilder_;
      /**
       * <pre>
       * Lifecycle is not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       * @return Whether the lifecycle field is set.
       */
      public boolean hasLifecycle() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <pre>
       * Lifecycle is not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       * @return The lifecycle.
       */
      public io.kubernetes.client.proto.V1.Lifecycle getLifecycle() {
        if (lifecycleBuilder_ == null) {
          return lifecycle_ == null ? io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance() : lifecycle_;
        } else {
          return lifecycleBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Lifecycle is not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public Builder setLifecycle(io.kubernetes.client.proto.V1.Lifecycle value) {
        if (lifecycleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lifecycle_ = value;
        } else {
          lifecycleBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Lifecycle is not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public Builder setLifecycle(
          io.kubernetes.client.proto.V1.Lifecycle.Builder builderForValue) {
        if (lifecycleBuilder_ == null) {
          lifecycle_ = builderForValue.build();
        } else {
          lifecycleBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Lifecycle is not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public Builder mergeLifecycle(io.kubernetes.client.proto.V1.Lifecycle value) {
        if (lifecycleBuilder_ == null) {
          if (((bitField0_ & 0x00010000) != 0) &&
            lifecycle_ != null &&
            lifecycle_ != io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance()) {
            getLifecycleBuilder().mergeFrom(value);
          } else {
            lifecycle_ = value;
          }
        } else {
          lifecycleBuilder_.mergeFrom(value);
        }
        if (lifecycle_ != null) {
          bitField0_ |= 0x00010000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Lifecycle is not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public Builder clearLifecycle() {
        bitField0_ = (bitField0_ & ~0x00010000);
        lifecycle_ = null;
        if (lifecycleBuilder_ != null) {
          lifecycleBuilder_.dispose();
          lifecycleBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Lifecycle is not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public io.kubernetes.client.proto.V1.Lifecycle.Builder getLifecycleBuilder() {
        bitField0_ |= 0x00010000;
        onChanged();
        return getLifecycleFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Lifecycle is not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      public io.kubernetes.client.proto.V1.LifecycleOrBuilder getLifecycleOrBuilder() {
        if (lifecycleBuilder_ != null) {
          return lifecycleBuilder_.getMessageOrBuilder();
        } else {
          return lifecycle_ == null ?
              io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance() : lifecycle_;
        }
      }
      /**
       * <pre>
       * Lifecycle is not allowed for ephemeral containers.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Lifecycle lifecycle = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Lifecycle, io.kubernetes.client.proto.V1.Lifecycle.Builder, io.kubernetes.client.proto.V1.LifecycleOrBuilder> 
          getLifecycleFieldBuilder() {
        if (lifecycleBuilder_ == null) {
          lifecycleBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.Lifecycle, io.kubernetes.client.proto.V1.Lifecycle.Builder, io.kubernetes.client.proto.V1.LifecycleOrBuilder>(
                  getLifecycle(),
                  getParentForChildren(),
                  isClean());
          lifecycle_ = null;
        }
        return lifecycleBuilder_;
      }

      private java.lang.Object terminationMessagePath_ = "";
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @return Whether the terminationMessagePath field is set.
       */
      public boolean hasTerminationMessagePath() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @return The terminationMessagePath.
       */
      public java.lang.String getTerminationMessagePath() {
        java.lang.Object ref = terminationMessagePath_;
        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()) {
            terminationMessagePath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @return The bytes for terminationMessagePath.
       */
      public com.google.protobuf.ByteString
          getTerminationMessagePathBytes() {
        java.lang.Object ref = terminationMessagePath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          terminationMessagePath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @param value The terminationMessagePath to set.
       * @return This builder for chaining.
       */
      public Builder setTerminationMessagePath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        terminationMessagePath_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearTerminationMessagePath() {
        terminationMessagePath_ = getDefaultInstance().getTerminationMessagePath();
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: Path at which the file to which the container's termination message
       * will be written is mounted into the container's filesystem.
       * Message written is intended to be brief final status, such as an assertion failure message.
       * Will be truncated by the node if greater than 4096 bytes. The total message length across
       * all containers will be limited to 12kb.
       * Defaults to /dev/termination-log.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePath = 13;</code>
       * @param value The bytes for terminationMessagePath to set.
       * @return This builder for chaining.
       */
      public Builder setTerminationMessagePathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        terminationMessagePath_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }

      private java.lang.Object terminationMessagePolicy_ = "";
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @return Whether the terminationMessagePolicy field is set.
       */
      public boolean hasTerminationMessagePolicy() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @return The terminationMessagePolicy.
       */
      public java.lang.String getTerminationMessagePolicy() {
        java.lang.Object ref = terminationMessagePolicy_;
        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()) {
            terminationMessagePolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @return The bytes for terminationMessagePolicy.
       */
      public com.google.protobuf.ByteString
          getTerminationMessagePolicyBytes() {
        java.lang.Object ref = terminationMessagePolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          terminationMessagePolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @param value The terminationMessagePolicy to set.
       * @return This builder for chaining.
       */
      public Builder setTerminationMessagePolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        terminationMessagePolicy_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearTerminationMessagePolicy() {
        terminationMessagePolicy_ = getDefaultInstance().getTerminationMessagePolicy();
        bitField0_ = (bitField0_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Indicate how the termination message should be populated. File will use the contents of
       * terminationMessagePath to populate the container status message on both success and failure.
       * FallbackToLogsOnError will use the last chunk of container log output if the termination
       * message file is empty and the container exited with an error.
       * The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
       * Defaults to File.
       * Cannot be updated.
       * +optional
       * </pre>
       *
       * <code>optional string terminationMessagePolicy = 20;</code>
       * @param value The bytes for terminationMessagePolicy to set.
       * @return This builder for chaining.
       */
      public Builder setTerminationMessagePolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        terminationMessagePolicy_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }

      private java.lang.Object imagePullPolicy_ = "";
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @return Whether the imagePullPolicy field is set.
       */
      public boolean hasImagePullPolicy() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @return The imagePullPolicy.
       */
      public java.lang.String getImagePullPolicy() {
        java.lang.Object ref = imagePullPolicy_;
        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()) {
            imagePullPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @return The bytes for imagePullPolicy.
       */
      public com.google.protobuf.ByteString
          getImagePullPolicyBytes() {
        java.lang.Object ref = imagePullPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          imagePullPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @param value The imagePullPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setImagePullPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        imagePullPolicy_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearImagePullPolicy() {
        imagePullPolicy_ = getDefaultInstance().getImagePullPolicy();
        bitField0_ = (bitField0_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Image pull policy.
       * One of Always, Never, IfNotPresent.
       * Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
       * +optional
       * </pre>
       *
       * <code>optional string imagePullPolicy = 14;</code>
       * @param value The bytes for imagePullPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setImagePullPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        imagePullPolicy_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SecurityContext securityContext_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecurityContext, io.kubernetes.client.proto.V1.SecurityContext.Builder, io.kubernetes.client.proto.V1.SecurityContextOrBuilder> securityContextBuilder_;
      /**
       * <pre>
       * Optional: SecurityContext defines the security options the ephemeral container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       * @return Whether the securityContext field is set.
       */
      public boolean hasSecurityContext() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <pre>
       * Optional: SecurityContext defines the security options the ephemeral container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       * @return The securityContext.
       */
      public io.kubernetes.client.proto.V1.SecurityContext getSecurityContext() {
        if (securityContextBuilder_ == null) {
          return securityContext_ == null ? io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance() : securityContext_;
        } else {
          return securityContextBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Optional: SecurityContext defines the security options the ephemeral container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public Builder setSecurityContext(io.kubernetes.client.proto.V1.SecurityContext value) {
        if (securityContextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          securityContext_ = value;
        } else {
          securityContextBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: SecurityContext defines the security options the ephemeral container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public Builder setSecurityContext(
          io.kubernetes.client.proto.V1.SecurityContext.Builder builderForValue) {
        if (securityContextBuilder_ == null) {
          securityContext_ = builderForValue.build();
        } else {
          securityContextBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: SecurityContext defines the security options the ephemeral container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public Builder mergeSecurityContext(io.kubernetes.client.proto.V1.SecurityContext value) {
        if (securityContextBuilder_ == null) {
          if (((bitField0_ & 0x00100000) != 0) &&
            securityContext_ != null &&
            securityContext_ != io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance()) {
            getSecurityContextBuilder().mergeFrom(value);
          } else {
            securityContext_ = value;
          }
        } else {
          securityContextBuilder_.mergeFrom(value);
        }
        if (securityContext_ != null) {
          bitField0_ |= 0x00100000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Optional: SecurityContext defines the security options the ephemeral container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public Builder clearSecurityContext() {
        bitField0_ = (bitField0_ & ~0x00100000);
        securityContext_ = null;
        if (securityContextBuilder_ != null) {
          securityContextBuilder_.dispose();
          securityContextBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: SecurityContext defines the security options the ephemeral container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public io.kubernetes.client.proto.V1.SecurityContext.Builder getSecurityContextBuilder() {
        bitField0_ |= 0x00100000;
        onChanged();
        return getSecurityContextFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Optional: SecurityContext defines the security options the ephemeral container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      public io.kubernetes.client.proto.V1.SecurityContextOrBuilder getSecurityContextOrBuilder() {
        if (securityContextBuilder_ != null) {
          return securityContextBuilder_.getMessageOrBuilder();
        } else {
          return securityContext_ == null ?
              io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance() : securityContext_;
        }
      }
      /**
       * <pre>
       * Optional: SecurityContext defines the security options the ephemeral container should be run with.
       * If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecurityContext securityContext = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecurityContext, io.kubernetes.client.proto.V1.SecurityContext.Builder, io.kubernetes.client.proto.V1.SecurityContextOrBuilder> 
          getSecurityContextFieldBuilder() {
        if (securityContextBuilder_ == null) {
          securityContextBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecurityContext, io.kubernetes.client.proto.V1.SecurityContext.Builder, io.kubernetes.client.proto.V1.SecurityContextOrBuilder>(
                  getSecurityContext(),
                  getParentForChildren(),
                  isClean());
          securityContext_ = null;
        }
        return securityContextBuilder_;
      }

      private boolean stdin_ ;
      /**
       * <pre>
       * Whether this container should allocate a buffer for stdin in the container runtime. If this
       * is not set, reads from stdin in the container will always result in EOF.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 16;</code>
       * @return Whether the stdin field is set.
       */
      @java.lang.Override
      public boolean hasStdin() {
        return ((bitField0_ & 0x00200000) != 0);
      }
      /**
       * <pre>
       * Whether this container should allocate a buffer for stdin in the container runtime. If this
       * is not set, reads from stdin in the container will always result in EOF.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 16;</code>
       * @return The stdin.
       */
      @java.lang.Override
      public boolean getStdin() {
        return stdin_;
      }
      /**
       * <pre>
       * Whether this container should allocate a buffer for stdin in the container runtime. If this
       * is not set, reads from stdin in the container will always result in EOF.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 16;</code>
       * @param value The stdin to set.
       * @return This builder for chaining.
       */
      public Builder setStdin(boolean value) {

        stdin_ = value;
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether this container should allocate a buffer for stdin in the container runtime. If this
       * is not set, reads from stdin in the container will always result in EOF.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearStdin() {
        bitField0_ = (bitField0_ & ~0x00200000);
        stdin_ = false;
        onChanged();
        return this;
      }

      private boolean stdinOnce_ ;
      /**
       * <pre>
       * Whether the container runtime should close the stdin channel after it has been opened by
       * a single attach. When stdin is true the stdin stream will remain open across multiple attach
       * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
       * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
       * at which time stdin is closed and remains closed until the container is restarted. If this
       * flag is false, a container processes that reads from stdin will never receive an EOF.
       * Default is false
       * +optional
       * </pre>
       *
       * <code>optional bool stdinOnce = 17;</code>
       * @return Whether the stdinOnce field is set.
       */
      @java.lang.Override
      public boolean hasStdinOnce() {
        return ((bitField0_ & 0x00400000) != 0);
      }
      /**
       * <pre>
       * Whether the container runtime should close the stdin channel after it has been opened by
       * a single attach. When stdin is true the stdin stream will remain open across multiple attach
       * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
       * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
       * at which time stdin is closed and remains closed until the container is restarted. If this
       * flag is false, a container processes that reads from stdin will never receive an EOF.
       * Default is false
       * +optional
       * </pre>
       *
       * <code>optional bool stdinOnce = 17;</code>
       * @return The stdinOnce.
       */
      @java.lang.Override
      public boolean getStdinOnce() {
        return stdinOnce_;
      }
      /**
       * <pre>
       * Whether the container runtime should close the stdin channel after it has been opened by
       * a single attach. When stdin is true the stdin stream will remain open across multiple attach
       * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
       * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
       * at which time stdin is closed and remains closed until the container is restarted. If this
       * flag is false, a container processes that reads from stdin will never receive an EOF.
       * Default is false
       * +optional
       * </pre>
       *
       * <code>optional bool stdinOnce = 17;</code>
       * @param value The stdinOnce to set.
       * @return This builder for chaining.
       */
      public Builder setStdinOnce(boolean value) {

        stdinOnce_ = value;
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether the container runtime should close the stdin channel after it has been opened by
       * a single attach. When stdin is true the stdin stream will remain open across multiple attach
       * sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
       * first client attaches to stdin, and then remains open and accepts data until the client disconnects,
       * at which time stdin is closed and remains closed until the container is restarted. If this
       * flag is false, a container processes that reads from stdin will never receive an EOF.
       * Default is false
       * +optional
       * </pre>
       *
       * <code>optional bool stdinOnce = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearStdinOnce() {
        bitField0_ = (bitField0_ & ~0x00400000);
        stdinOnce_ = false;
        onChanged();
        return this;
      }

      private boolean tty_ ;
      /**
       * <pre>
       * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 18;</code>
       * @return Whether the tty field is set.
       */
      @java.lang.Override
      public boolean hasTty() {
        return ((bitField0_ & 0x00800000) != 0);
      }
      /**
       * <pre>
       * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 18;</code>
       * @return The tty.
       */
      @java.lang.Override
      public boolean getTty() {
        return tty_;
      }
      /**
       * <pre>
       * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 18;</code>
       * @param value The tty to set.
       * @return This builder for chaining.
       */
      public Builder setTty(boolean value) {

        tty_ = value;
        bitField0_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
       * Default is false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearTty() {
        bitField0_ = (bitField0_ & ~0x00800000);
        tty_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EphemeralContainerCommon)
    }

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

    public static io.kubernetes.client.proto.V1.EphemeralContainerCommon getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EphemeralVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EphemeralVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Will be used to create a stand-alone PVC to provision the volume.
     * The pod in which this EphemeralVolumeSource is embedded will be the
     * owner of the PVC, i.e. the PVC will be deleted together with the
     * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
     * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
     * entry. Pod validation will reject the pod if the concatenated name
     * is not valid for a PVC (for example, too long).
     *
     * An existing PVC with that name that is not owned by the pod
     * will *not* be used for the pod to avoid using an unrelated
     * volume by mistake. Starting the pod is then blocked until
     * the unrelated PVC is removed. If such a pre-created PVC is
     * meant to be used by the pod, the PVC has to updated with an
     * owner reference to the pod once the pod exists. Normally
     * this should not be necessary, but it may be useful when
     * manually reconstructing a broken cluster.
     *
     * This field is read-only and no changes will be made by Kubernetes
     * to the PVC after it has been created.
     *
     * Required, must not be nil.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
     * @return Whether the volumeClaimTemplate field is set.
     */
    boolean hasVolumeClaimTemplate();
    /**
     * <pre>
     * Will be used to create a stand-alone PVC to provision the volume.
     * The pod in which this EphemeralVolumeSource is embedded will be the
     * owner of the PVC, i.e. the PVC will be deleted together with the
     * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
     * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
     * entry. Pod validation will reject the pod if the concatenated name
     * is not valid for a PVC (for example, too long).
     *
     * An existing PVC with that name that is not owned by the pod
     * will *not* be used for the pod to avoid using an unrelated
     * volume by mistake. Starting the pod is then blocked until
     * the unrelated PVC is removed. If such a pre-created PVC is
     * meant to be used by the pod, the PVC has to updated with an
     * owner reference to the pod once the pod exists. Normally
     * this should not be necessary, but it may be useful when
     * manually reconstructing a broken cluster.
     *
     * This field is read-only and no changes will be made by Kubernetes
     * to the PVC after it has been created.
     *
     * Required, must not be nil.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
     * @return The volumeClaimTemplate.
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate getVolumeClaimTemplate();
    /**
     * <pre>
     * Will be used to create a stand-alone PVC to provision the volume.
     * The pod in which this EphemeralVolumeSource is embedded will be the
     * owner of the PVC, i.e. the PVC will be deleted together with the
     * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
     * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
     * entry. Pod validation will reject the pod if the concatenated name
     * is not valid for a PVC (for example, too long).
     *
     * An existing PVC with that name that is not owned by the pod
     * will *not* be used for the pod to avoid using an unrelated
     * volume by mistake. Starting the pod is then blocked until
     * the unrelated PVC is removed. If such a pre-created PVC is
     * meant to be used by the pod, the PVC has to updated with an
     * owner reference to the pod once the pod exists. Normally
     * this should not be necessary, but it may be useful when
     * manually reconstructing a broken cluster.
     *
     * This field is read-only and no changes will be made by Kubernetes
     * to the PVC after it has been created.
     *
     * Required, must not be nil.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplateOrBuilder getVolumeClaimTemplateOrBuilder();
  }
  /**
   * <pre>
   * Represents an ephemeral volume that is handled by a normal storage driver.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EphemeralVolumeSource}
   */
  public static final class EphemeralVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EphemeralVolumeSource)
      EphemeralVolumeSourceOrBuilder {
  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= */ "",
        EphemeralVolumeSource.class.getName());
    }
    // Use EphemeralVolumeSource.newBuilder() to construct.
    private EphemeralVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EphemeralVolumeSource() {
    }

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

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

    private int bitField0_;
    public static final int VOLUMECLAIMTEMPLATE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate volumeClaimTemplate_;
    /**
     * <pre>
     * Will be used to create a stand-alone PVC to provision the volume.
     * The pod in which this EphemeralVolumeSource is embedded will be the
     * owner of the PVC, i.e. the PVC will be deleted together with the
     * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
     * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
     * entry. Pod validation will reject the pod if the concatenated name
     * is not valid for a PVC (for example, too long).
     *
     * An existing PVC with that name that is not owned by the pod
     * will *not* be used for the pod to avoid using an unrelated
     * volume by mistake. Starting the pod is then blocked until
     * the unrelated PVC is removed. If such a pre-created PVC is
     * meant to be used by the pod, the PVC has to updated with an
     * owner reference to the pod once the pod exists. Normally
     * this should not be necessary, but it may be useful when
     * manually reconstructing a broken cluster.
     *
     * This field is read-only and no changes will be made by Kubernetes
     * to the PVC after it has been created.
     *
     * Required, must not be nil.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
     * @return Whether the volumeClaimTemplate field is set.
     */
    @java.lang.Override
    public boolean hasVolumeClaimTemplate() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Will be used to create a stand-alone PVC to provision the volume.
     * The pod in which this EphemeralVolumeSource is embedded will be the
     * owner of the PVC, i.e. the PVC will be deleted together with the
     * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
     * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
     * entry. Pod validation will reject the pod if the concatenated name
     * is not valid for a PVC (for example, too long).
     *
     * An existing PVC with that name that is not owned by the pod
     * will *not* be used for the pod to avoid using an unrelated
     * volume by mistake. Starting the pod is then blocked until
     * the unrelated PVC is removed. If such a pre-created PVC is
     * meant to be used by the pod, the PVC has to updated with an
     * owner reference to the pod once the pod exists. Normally
     * this should not be necessary, but it may be useful when
     * manually reconstructing a broken cluster.
     *
     * This field is read-only and no changes will be made by Kubernetes
     * to the PVC after it has been created.
     *
     * Required, must not be nil.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
     * @return The volumeClaimTemplate.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate getVolumeClaimTemplate() {
      return volumeClaimTemplate_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.getDefaultInstance() : volumeClaimTemplate_;
    }
    /**
     * <pre>
     * Will be used to create a stand-alone PVC to provision the volume.
     * The pod in which this EphemeralVolumeSource is embedded will be the
     * owner of the PVC, i.e. the PVC will be deleted together with the
     * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
     * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
     * entry. Pod validation will reject the pod if the concatenated name
     * is not valid for a PVC (for example, too long).
     *
     * An existing PVC with that name that is not owned by the pod
     * will *not* be used for the pod to avoid using an unrelated
     * volume by mistake. Starting the pod is then blocked until
     * the unrelated PVC is removed. If such a pre-created PVC is
     * meant to be used by the pod, the PVC has to updated with an
     * owner reference to the pod once the pod exists. Normally
     * this should not be necessary, but it may be useful when
     * manually reconstructing a broken cluster.
     *
     * This field is read-only and no changes will be made by Kubernetes
     * to the PVC after it has been created.
     *
     * Required, must not be nil.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplateOrBuilder getVolumeClaimTemplateOrBuilder() {
      return volumeClaimTemplate_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.getDefaultInstance() : volumeClaimTemplate_;
    }

    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, getVolumeClaimTemplate());
      }
      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, getVolumeClaimTemplate());
      }
      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.V1.EphemeralVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EphemeralVolumeSource other = (io.kubernetes.client.proto.V1.EphemeralVolumeSource) obj;

      if (hasVolumeClaimTemplate() != other.hasVolumeClaimTemplate()) return false;
      if (hasVolumeClaimTemplate()) {
        if (!getVolumeClaimTemplate()
            .equals(other.getVolumeClaimTemplate())) 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 (hasVolumeClaimTemplate()) {
        hash = (37 * hash) + VOLUMECLAIMTEMPLATE_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeClaimTemplate().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EphemeralVolumeSource 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.V1.EphemeralVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EphemeralVolumeSource 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.V1.EphemeralVolumeSource 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>
     * Represents an ephemeral volume that is handled by a normal storage driver.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EphemeralVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EphemeralVolumeSource)
        io.kubernetes.client.proto.V1.EphemeralVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EphemeralVolumeSource_descriptor;
      }

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

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.EphemeralVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.volumeClaimTemplate_ = volumeClaimTemplateBuilder_ == null
              ? volumeClaimTemplate_
              : volumeClaimTemplateBuilder_.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.V1.EphemeralVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.EphemeralVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EphemeralVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.EphemeralVolumeSource.getDefaultInstance()) return this;
        if (other.hasVolumeClaimTemplate()) {
          mergeVolumeClaimTemplate(other.getVolumeClaimTemplate());
        }
        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(
                    getVolumeClaimTemplateFieldBuilder().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.V1.PersistentVolumeClaimTemplate volumeClaimTemplate_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate, io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplateOrBuilder> volumeClaimTemplateBuilder_;
      /**
       * <pre>
       * Will be used to create a stand-alone PVC to provision the volume.
       * The pod in which this EphemeralVolumeSource is embedded will be the
       * owner of the PVC, i.e. the PVC will be deleted together with the
       * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
       * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
       * entry. Pod validation will reject the pod if the concatenated name
       * is not valid for a PVC (for example, too long).
       *
       * An existing PVC with that name that is not owned by the pod
       * will *not* be used for the pod to avoid using an unrelated
       * volume by mistake. Starting the pod is then blocked until
       * the unrelated PVC is removed. If such a pre-created PVC is
       * meant to be used by the pod, the PVC has to updated with an
       * owner reference to the pod once the pod exists. Normally
       * this should not be necessary, but it may be useful when
       * manually reconstructing a broken cluster.
       *
       * This field is read-only and no changes will be made by Kubernetes
       * to the PVC after it has been created.
       *
       * Required, must not be nil.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
       * @return Whether the volumeClaimTemplate field is set.
       */
      public boolean hasVolumeClaimTemplate() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Will be used to create a stand-alone PVC to provision the volume.
       * The pod in which this EphemeralVolumeSource is embedded will be the
       * owner of the PVC, i.e. the PVC will be deleted together with the
       * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
       * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
       * entry. Pod validation will reject the pod if the concatenated name
       * is not valid for a PVC (for example, too long).
       *
       * An existing PVC with that name that is not owned by the pod
       * will *not* be used for the pod to avoid using an unrelated
       * volume by mistake. Starting the pod is then blocked until
       * the unrelated PVC is removed. If such a pre-created PVC is
       * meant to be used by the pod, the PVC has to updated with an
       * owner reference to the pod once the pod exists. Normally
       * this should not be necessary, but it may be useful when
       * manually reconstructing a broken cluster.
       *
       * This field is read-only and no changes will be made by Kubernetes
       * to the PVC after it has been created.
       *
       * Required, must not be nil.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
       * @return The volumeClaimTemplate.
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate getVolumeClaimTemplate() {
        if (volumeClaimTemplateBuilder_ == null) {
          return volumeClaimTemplate_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.getDefaultInstance() : volumeClaimTemplate_;
        } else {
          return volumeClaimTemplateBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Will be used to create a stand-alone PVC to provision the volume.
       * The pod in which this EphemeralVolumeSource is embedded will be the
       * owner of the PVC, i.e. the PVC will be deleted together with the
       * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
       * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
       * entry. Pod validation will reject the pod if the concatenated name
       * is not valid for a PVC (for example, too long).
       *
       * An existing PVC with that name that is not owned by the pod
       * will *not* be used for the pod to avoid using an unrelated
       * volume by mistake. Starting the pod is then blocked until
       * the unrelated PVC is removed. If such a pre-created PVC is
       * meant to be used by the pod, the PVC has to updated with an
       * owner reference to the pod once the pod exists. Normally
       * this should not be necessary, but it may be useful when
       * manually reconstructing a broken cluster.
       *
       * This field is read-only and no changes will be made by Kubernetes
       * to the PVC after it has been created.
       *
       * Required, must not be nil.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
       */
      public Builder setVolumeClaimTemplate(io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate value) {
        if (volumeClaimTemplateBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          volumeClaimTemplate_ = value;
        } else {
          volumeClaimTemplateBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Will be used to create a stand-alone PVC to provision the volume.
       * The pod in which this EphemeralVolumeSource is embedded will be the
       * owner of the PVC, i.e. the PVC will be deleted together with the
       * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
       * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
       * entry. Pod validation will reject the pod if the concatenated name
       * is not valid for a PVC (for example, too long).
       *
       * An existing PVC with that name that is not owned by the pod
       * will *not* be used for the pod to avoid using an unrelated
       * volume by mistake. Starting the pod is then blocked until
       * the unrelated PVC is removed. If such a pre-created PVC is
       * meant to be used by the pod, the PVC has to updated with an
       * owner reference to the pod once the pod exists. Normally
       * this should not be necessary, but it may be useful when
       * manually reconstructing a broken cluster.
       *
       * This field is read-only and no changes will be made by Kubernetes
       * to the PVC after it has been created.
       *
       * Required, must not be nil.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
       */
      public Builder setVolumeClaimTemplate(
          io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.Builder builderForValue) {
        if (volumeClaimTemplateBuilder_ == null) {
          volumeClaimTemplate_ = builderForValue.build();
        } else {
          volumeClaimTemplateBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Will be used to create a stand-alone PVC to provision the volume.
       * The pod in which this EphemeralVolumeSource is embedded will be the
       * owner of the PVC, i.e. the PVC will be deleted together with the
       * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
       * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
       * entry. Pod validation will reject the pod if the concatenated name
       * is not valid for a PVC (for example, too long).
       *
       * An existing PVC with that name that is not owned by the pod
       * will *not* be used for the pod to avoid using an unrelated
       * volume by mistake. Starting the pod is then blocked until
       * the unrelated PVC is removed. If such a pre-created PVC is
       * meant to be used by the pod, the PVC has to updated with an
       * owner reference to the pod once the pod exists. Normally
       * this should not be necessary, but it may be useful when
       * manually reconstructing a broken cluster.
       *
       * This field is read-only and no changes will be made by Kubernetes
       * to the PVC after it has been created.
       *
       * Required, must not be nil.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
       */
      public Builder mergeVolumeClaimTemplate(io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate value) {
        if (volumeClaimTemplateBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            volumeClaimTemplate_ != null &&
            volumeClaimTemplate_ != io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.getDefaultInstance()) {
            getVolumeClaimTemplateBuilder().mergeFrom(value);
          } else {
            volumeClaimTemplate_ = value;
          }
        } else {
          volumeClaimTemplateBuilder_.mergeFrom(value);
        }
        if (volumeClaimTemplate_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Will be used to create a stand-alone PVC to provision the volume.
       * The pod in which this EphemeralVolumeSource is embedded will be the
       * owner of the PVC, i.e. the PVC will be deleted together with the
       * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
       * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
       * entry. Pod validation will reject the pod if the concatenated name
       * is not valid for a PVC (for example, too long).
       *
       * An existing PVC with that name that is not owned by the pod
       * will *not* be used for the pod to avoid using an unrelated
       * volume by mistake. Starting the pod is then blocked until
       * the unrelated PVC is removed. If such a pre-created PVC is
       * meant to be used by the pod, the PVC has to updated with an
       * owner reference to the pod once the pod exists. Normally
       * this should not be necessary, but it may be useful when
       * manually reconstructing a broken cluster.
       *
       * This field is read-only and no changes will be made by Kubernetes
       * to the PVC after it has been created.
       *
       * Required, must not be nil.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
       */
      public Builder clearVolumeClaimTemplate() {
        bitField0_ = (bitField0_ & ~0x00000001);
        volumeClaimTemplate_ = null;
        if (volumeClaimTemplateBuilder_ != null) {
          volumeClaimTemplateBuilder_.dispose();
          volumeClaimTemplateBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Will be used to create a stand-alone PVC to provision the volume.
       * The pod in which this EphemeralVolumeSource is embedded will be the
       * owner of the PVC, i.e. the PVC will be deleted together with the
       * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
       * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
       * entry. Pod validation will reject the pod if the concatenated name
       * is not valid for a PVC (for example, too long).
       *
       * An existing PVC with that name that is not owned by the pod
       * will *not* be used for the pod to avoid using an unrelated
       * volume by mistake. Starting the pod is then blocked until
       * the unrelated PVC is removed. If such a pre-created PVC is
       * meant to be used by the pod, the PVC has to updated with an
       * owner reference to the pod once the pod exists. Normally
       * this should not be necessary, but it may be useful when
       * manually reconstructing a broken cluster.
       *
       * This field is read-only and no changes will be made by Kubernetes
       * to the PVC after it has been created.
       *
       * Required, must not be nil.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.Builder getVolumeClaimTemplateBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getVolumeClaimTemplateFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Will be used to create a stand-alone PVC to provision the volume.
       * The pod in which this EphemeralVolumeSource is embedded will be the
       * owner of the PVC, i.e. the PVC will be deleted together with the
       * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
       * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
       * entry. Pod validation will reject the pod if the concatenated name
       * is not valid for a PVC (for example, too long).
       *
       * An existing PVC with that name that is not owned by the pod
       * will *not* be used for the pod to avoid using an unrelated
       * volume by mistake. Starting the pod is then blocked until
       * the unrelated PVC is removed. If such a pre-created PVC is
       * meant to be used by the pod, the PVC has to updated with an
       * owner reference to the pod once the pod exists. Normally
       * this should not be necessary, but it may be useful when
       * manually reconstructing a broken cluster.
       *
       * This field is read-only and no changes will be made by Kubernetes
       * to the PVC after it has been created.
       *
       * Required, must not be nil.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplateOrBuilder getVolumeClaimTemplateOrBuilder() {
        if (volumeClaimTemplateBuilder_ != null) {
          return volumeClaimTemplateBuilder_.getMessageOrBuilder();
        } else {
          return volumeClaimTemplate_ == null ?
              io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.getDefaultInstance() : volumeClaimTemplate_;
        }
      }
      /**
       * <pre>
       * Will be used to create a stand-alone PVC to provision the volume.
       * The pod in which this EphemeralVolumeSource is embedded will be the
       * owner of the PVC, i.e. the PVC will be deleted together with the
       * pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where
       * `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array
       * entry. Pod validation will reject the pod if the concatenated name
       * is not valid for a PVC (for example, too long).
       *
       * An existing PVC with that name that is not owned by the pod
       * will *not* be used for the pod to avoid using an unrelated
       * volume by mistake. Starting the pod is then blocked until
       * the unrelated PVC is removed. If such a pre-created PVC is
       * meant to be used by the pod, the PVC has to updated with an
       * owner reference to the pod once the pod exists. Normally
       * this should not be necessary, but it may be useful when
       * manually reconstructing a broken cluster.
       *
       * This field is read-only and no changes will be made by Kubernetes
       * to the PVC after it has been created.
       *
       * Required, must not be nil.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimTemplate volumeClaimTemplate = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate, io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplateOrBuilder> 
          getVolumeClaimTemplateFieldBuilder() {
        if (volumeClaimTemplateBuilder_ == null) {
          volumeClaimTemplateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate, io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplateOrBuilder>(
                  getVolumeClaimTemplate(),
                  getParentForChildren(),
                  isClean());
          volumeClaimTemplate_ = null;
        }
        return volumeClaimTemplateBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EphemeralVolumeSource)
    }

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

    public static io.kubernetes.client.proto.V1.EphemeralVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Event)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * </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
     * </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
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * The object that this event is about.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
     * @return Whether the involvedObject field is set.
     */
    boolean hasInvolvedObject();
    /**
     * <pre>
     * The object that this event is about.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
     * @return The involvedObject.
     */
    io.kubernetes.client.proto.V1.ObjectReference getInvolvedObject();
    /**
     * <pre>
     * The object that this event is about.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getInvolvedObjectOrBuilder();

    /**
     * <pre>
     * This should be a short, machine understandable string that gives the reason
     * for the transition into the object's current status.
     * TODO: provide exact specification for format.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * This should be a short, machine understandable string that gives the reason
     * for the transition into the object's current status.
     * TODO: provide exact specification for format.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * This should be a short, machine understandable string that gives the reason
     * for the transition into the object's current status.
     * TODO: provide exact specification for format.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * A human-readable description of the status of this operation.
     * TODO: decide on maximum length.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * A human-readable description of the status of this operation.
     * TODO: decide on maximum length.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * A human-readable description of the status of this operation.
     * TODO: decide on maximum length.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    /**
     * <pre>
     * The component reporting this event. Should be a short machine understandable string.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
     * @return Whether the source field is set.
     */
    boolean hasSource();
    /**
     * <pre>
     * The component reporting this event. Should be a short machine understandable string.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
     * @return The source.
     */
    io.kubernetes.client.proto.V1.EventSource getSource();
    /**
     * <pre>
     * The component reporting this event. Should be a short machine understandable string.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
     */
    io.kubernetes.client.proto.V1.EventSourceOrBuilder getSourceOrBuilder();

    /**
     * <pre>
     * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
     * @return Whether the firstTimestamp field is set.
     */
    boolean hasFirstTimestamp();
    /**
     * <pre>
     * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
     * @return The firstTimestamp.
     */
    io.kubernetes.client.proto.Meta.Time getFirstTimestamp();
    /**
     * <pre>
     * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getFirstTimestampOrBuilder();

    /**
     * <pre>
     * The time at which the most recent occurrence of this event was recorded.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
     * @return Whether the lastTimestamp field is set.
     */
    boolean hasLastTimestamp();
    /**
     * <pre>
     * The time at which the most recent occurrence of this event was recorded.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
     * @return The lastTimestamp.
     */
    io.kubernetes.client.proto.Meta.Time getLastTimestamp();
    /**
     * <pre>
     * The time at which the most recent occurrence of this event was recorded.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastTimestampOrBuilder();

    /**
     * <pre>
     * The number of times this event has occurred.
     * +optional
     * </pre>
     *
     * <code>optional int32 count = 8;</code>
     * @return Whether the count field is set.
     */
    boolean hasCount();
    /**
     * <pre>
     * The number of times this event has occurred.
     * +optional
     * </pre>
     *
     * <code>optional int32 count = 8;</code>
     * @return The count.
     */
    int getCount();

    /**
     * <pre>
     * Type of this event (Normal, Warning), new types could be added in the future
     * +optional
     * </pre>
     *
     * <code>optional string type = 9;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * Type of this event (Normal, Warning), new types could be added in the future
     * +optional
     * </pre>
     *
     * <code>optional string type = 9;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * Type of this event (Normal, Warning), new types could be added in the future
     * +optional
     * </pre>
     *
     * <code>optional string type = 9;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * Time when this Event was first observed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
     * @return Whether the eventTime field is set.
     */
    boolean hasEventTime();
    /**
     * <pre>
     * Time when this Event was first observed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
     * @return The eventTime.
     */
    io.kubernetes.client.proto.Meta.MicroTime getEventTime();
    /**
     * <pre>
     * Time when this Event was first observed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
     */
    io.kubernetes.client.proto.Meta.MicroTimeOrBuilder getEventTimeOrBuilder();

    /**
     * <pre>
     * Data about the Event series this event represents or nil if it's a singleton Event.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
     * @return Whether the series field is set.
     */
    boolean hasSeries();
    /**
     * <pre>
     * Data about the Event series this event represents or nil if it's a singleton Event.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
     * @return The series.
     */
    io.kubernetes.client.proto.V1.EventSeries getSeries();
    /**
     * <pre>
     * Data about the Event series this event represents or nil if it's a singleton Event.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
     */
    io.kubernetes.client.proto.V1.EventSeriesOrBuilder getSeriesOrBuilder();

    /**
     * <pre>
     * What action was taken/failed regarding to the Regarding object.
     * +optional
     * </pre>
     *
     * <code>optional string action = 12;</code>
     * @return Whether the action field is set.
     */
    boolean hasAction();
    /**
     * <pre>
     * What action was taken/failed regarding to the Regarding object.
     * +optional
     * </pre>
     *
     * <code>optional string action = 12;</code>
     * @return The action.
     */
    java.lang.String getAction();
    /**
     * <pre>
     * What action was taken/failed regarding to the Regarding object.
     * +optional
     * </pre>
     *
     * <code>optional string action = 12;</code>
     * @return The bytes for action.
     */
    com.google.protobuf.ByteString
        getActionBytes();

    /**
     * <pre>
     * Optional secondary object for more complex actions.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
     * @return Whether the related field is set.
     */
    boolean hasRelated();
    /**
     * <pre>
     * Optional secondary object for more complex actions.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
     * @return The related.
     */
    io.kubernetes.client.proto.V1.ObjectReference getRelated();
    /**
     * <pre>
     * Optional secondary object for more complex actions.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getRelatedOrBuilder();

    /**
     * <pre>
     * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingComponent = 14;</code>
     * @return Whether the reportingComponent field is set.
     */
    boolean hasReportingComponent();
    /**
     * <pre>
     * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingComponent = 14;</code>
     * @return The reportingComponent.
     */
    java.lang.String getReportingComponent();
    /**
     * <pre>
     * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingComponent = 14;</code>
     * @return The bytes for reportingComponent.
     */
    com.google.protobuf.ByteString
        getReportingComponentBytes();

    /**
     * <pre>
     * ID of the controller instance, e.g. `kubelet-xyzf`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingInstance = 15;</code>
     * @return Whether the reportingInstance field is set.
     */
    boolean hasReportingInstance();
    /**
     * <pre>
     * ID of the controller instance, e.g. `kubelet-xyzf`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingInstance = 15;</code>
     * @return The reportingInstance.
     */
    java.lang.String getReportingInstance();
    /**
     * <pre>
     * ID of the controller instance, e.g. `kubelet-xyzf`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingInstance = 15;</code>
     * @return The bytes for reportingInstance.
     */
    com.google.protobuf.ByteString
        getReportingInstanceBytes();
  }
  /**
   * <pre>
   * Event is a report of an event somewhere in the cluster.  Events
   * have a limited retention time and triggers and messages may evolve
   * with time.  Event consumers should not rely on the timing of an event
   * with a given Reason reflecting a consistent underlying trigger, or the
   * continued existence of events with that Reason.  Events should be
   * treated as informative, best-effort, supplemental data.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Event}
   */
  public static final class Event extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Event)
      EventOrBuilder {
  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= */ "",
        Event.class.getName());
    }
    // Use Event.newBuilder() to construct.
    private Event(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Event() {
      reason_ = "";
      message_ = "";
      type_ = "";
      action_ = "";
      reportingComponent_ = "";
      reportingInstance_ = "";
    }

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

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Event_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Event.class, io.kubernetes.client.proto.V1.Event.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
     * </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
     * </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
     * </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 INVOLVEDOBJECT_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.ObjectReference involvedObject_;
    /**
     * <pre>
     * The object that this event is about.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
     * @return Whether the involvedObject field is set.
     */
    @java.lang.Override
    public boolean hasInvolvedObject() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The object that this event is about.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
     * @return The involvedObject.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReference getInvolvedObject() {
      return involvedObject_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : involvedObject_;
    }
    /**
     * <pre>
     * The object that this event is about.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getInvolvedObjectOrBuilder() {
      return involvedObject_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : involvedObject_;
    }

    public static final int REASON_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * This should be a short, machine understandable string that gives the reason
     * for the transition into the object's current status.
     * TODO: provide exact specification for format.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * This should be a short, machine understandable string that gives the reason
     * for the transition into the object's current status.
     * TODO: provide exact specification for format.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</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>
     * This should be a short, machine understandable string that gives the reason
     * for the transition into the object's current status.
     * TODO: provide exact specification for format.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</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 = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * A human-readable description of the status of this operation.
     * TODO: decide on maximum length.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * A human-readable description of the status of this operation.
     * TODO: decide on maximum length.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</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>
     * A human-readable description of the status of this operation.
     * TODO: decide on maximum length.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</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 SOURCE_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1.EventSource source_;
    /**
     * <pre>
     * The component reporting this event. Should be a short machine understandable string.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
     * @return Whether the source field is set.
     */
    @java.lang.Override
    public boolean hasSource() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * The component reporting this event. Should be a short machine understandable string.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
     * @return The source.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EventSource getSource() {
      return source_ == null ? io.kubernetes.client.proto.V1.EventSource.getDefaultInstance() : source_;
    }
    /**
     * <pre>
     * The component reporting this event. Should be a short machine understandable string.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EventSourceOrBuilder getSourceOrBuilder() {
      return source_ == null ? io.kubernetes.client.proto.V1.EventSource.getDefaultInstance() : source_;
    }

    public static final int FIRSTTIMESTAMP_FIELD_NUMBER = 6;
    private io.kubernetes.client.proto.Meta.Time firstTimestamp_;
    /**
     * <pre>
     * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
     * @return Whether the firstTimestamp field is set.
     */
    @java.lang.Override
    public boolean hasFirstTimestamp() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
     * @return The firstTimestamp.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getFirstTimestamp() {
      return firstTimestamp_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : firstTimestamp_;
    }
    /**
     * <pre>
     * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getFirstTimestampOrBuilder() {
      return firstTimestamp_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : firstTimestamp_;
    }

    public static final int LASTTIMESTAMP_FIELD_NUMBER = 7;
    private io.kubernetes.client.proto.Meta.Time lastTimestamp_;
    /**
     * <pre>
     * The time at which the most recent occurrence of this event was recorded.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
     * @return Whether the lastTimestamp field is set.
     */
    @java.lang.Override
    public boolean hasLastTimestamp() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * The time at which the most recent occurrence of this event was recorded.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
     * @return The lastTimestamp.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getLastTimestamp() {
      return lastTimestamp_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastTimestamp_;
    }
    /**
     * <pre>
     * The time at which the most recent occurrence of this event was recorded.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastTimestampOrBuilder() {
      return lastTimestamp_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastTimestamp_;
    }

    public static final int COUNT_FIELD_NUMBER = 8;
    private int count_ = 0;
    /**
     * <pre>
     * The number of times this event has occurred.
     * +optional
     * </pre>
     *
     * <code>optional int32 count = 8;</code>
     * @return Whether the count field is set.
     */
    @java.lang.Override
    public boolean hasCount() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * The number of times this event has occurred.
     * +optional
     * </pre>
     *
     * <code>optional int32 count = 8;</code>
     * @return The count.
     */
    @java.lang.Override
    public int getCount() {
      return count_;
    }

    public static final int TYPE_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * Type of this event (Normal, Warning), new types could be added in the future
     * +optional
     * </pre>
     *
     * <code>optional string type = 9;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * Type of this event (Normal, Warning), new types could be added in the future
     * +optional
     * </pre>
     *
     * <code>optional string type = 9;</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 of this event (Normal, Warning), new types could be added in the future
     * +optional
     * </pre>
     *
     * <code>optional string type = 9;</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 EVENTTIME_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.Meta.MicroTime eventTime_;
    /**
     * <pre>
     * Time when this Event was first observed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
     * @return Whether the eventTime field is set.
     */
    @java.lang.Override
    public boolean hasEventTime() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * Time when this Event was first observed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
     * @return The eventTime.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.MicroTime getEventTime() {
      return eventTime_ == null ? io.kubernetes.client.proto.Meta.MicroTime.getDefaultInstance() : eventTime_;
    }
    /**
     * <pre>
     * Time when this Event was first observed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.MicroTimeOrBuilder getEventTimeOrBuilder() {
      return eventTime_ == null ? io.kubernetes.client.proto.Meta.MicroTime.getDefaultInstance() : eventTime_;
    }

    public static final int SERIES_FIELD_NUMBER = 11;
    private io.kubernetes.client.proto.V1.EventSeries series_;
    /**
     * <pre>
     * Data about the Event series this event represents or nil if it's a singleton Event.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
     * @return Whether the series field is set.
     */
    @java.lang.Override
    public boolean hasSeries() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * Data about the Event series this event represents or nil if it's a singleton Event.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
     * @return The series.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EventSeries getSeries() {
      return series_ == null ? io.kubernetes.client.proto.V1.EventSeries.getDefaultInstance() : series_;
    }
    /**
     * <pre>
     * Data about the Event series this event represents or nil if it's a singleton Event.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EventSeriesOrBuilder getSeriesOrBuilder() {
      return series_ == null ? io.kubernetes.client.proto.V1.EventSeries.getDefaultInstance() : series_;
    }

    public static final int ACTION_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private volatile java.lang.Object action_ = "";
    /**
     * <pre>
     * What action was taken/failed regarding to the Regarding object.
     * +optional
     * </pre>
     *
     * <code>optional string action = 12;</code>
     * @return Whether the action field is set.
     */
    @java.lang.Override
    public boolean hasAction() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * What action was taken/failed regarding to the Regarding object.
     * +optional
     * </pre>
     *
     * <code>optional string action = 12;</code>
     * @return The action.
     */
    @java.lang.Override
    public java.lang.String getAction() {
      java.lang.Object ref = action_;
      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()) {
          action_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * What action was taken/failed regarding to the Regarding object.
     * +optional
     * </pre>
     *
     * <code>optional string action = 12;</code>
     * @return The bytes for action.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getActionBytes() {
      java.lang.Object ref = action_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        action_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RELATED_FIELD_NUMBER = 13;
    private io.kubernetes.client.proto.V1.ObjectReference related_;
    /**
     * <pre>
     * Optional secondary object for more complex actions.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
     * @return Whether the related field is set.
     */
    @java.lang.Override
    public boolean hasRelated() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <pre>
     * Optional secondary object for more complex actions.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
     * @return The related.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReference getRelated() {
      return related_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : related_;
    }
    /**
     * <pre>
     * Optional secondary object for more complex actions.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getRelatedOrBuilder() {
      return related_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : related_;
    }

    public static final int REPORTINGCOMPONENT_FIELD_NUMBER = 14;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reportingComponent_ = "";
    /**
     * <pre>
     * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingComponent = 14;</code>
     * @return Whether the reportingComponent field is set.
     */
    @java.lang.Override
    public boolean hasReportingComponent() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingComponent = 14;</code>
     * @return The reportingComponent.
     */
    @java.lang.Override
    public java.lang.String getReportingComponent() {
      java.lang.Object ref = reportingComponent_;
      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()) {
          reportingComponent_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingComponent = 14;</code>
     * @return The bytes for reportingComponent.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReportingComponentBytes() {
      java.lang.Object ref = reportingComponent_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        reportingComponent_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REPORTINGINSTANCE_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reportingInstance_ = "";
    /**
     * <pre>
     * ID of the controller instance, e.g. `kubelet-xyzf`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingInstance = 15;</code>
     * @return Whether the reportingInstance field is set.
     */
    @java.lang.Override
    public boolean hasReportingInstance() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <pre>
     * ID of the controller instance, e.g. `kubelet-xyzf`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingInstance = 15;</code>
     * @return The reportingInstance.
     */
    @java.lang.Override
    public java.lang.String getReportingInstance() {
      java.lang.Object ref = reportingInstance_;
      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()) {
          reportingInstance_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ID of the controller instance, e.g. `kubelet-xyzf`.
     * +optional
     * </pre>
     *
     * <code>optional string reportingInstance = 15;</code>
     * @return The bytes for reportingInstance.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReportingInstanceBytes() {
      java.lang.Object ref = reportingInstance_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        reportingInstance_ = 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)) {
        output.writeMessage(1, getMetadata());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getInvolvedObject());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, reason_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, message_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getSource());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(6, getFirstTimestamp());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(7, getLastTimestamp());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeInt32(8, count_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, type_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeMessage(10, getEventTime());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeMessage(11, getSeries());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 12, action_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeMessage(13, getRelated());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 14, reportingComponent_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 15, reportingInstance_);
      }
      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, getInvolvedObject());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, reason_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, message_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSource());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getFirstTimestamp());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getLastTimestamp());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, count_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, type_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getEventTime());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getSeries());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(12, action_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, getRelated());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(14, reportingComponent_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(15, reportingInstance_);
      }
      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.V1.Event)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Event other = (io.kubernetes.client.proto.V1.Event) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (hasInvolvedObject() != other.hasInvolvedObject()) return false;
      if (hasInvolvedObject()) {
        if (!getInvolvedObject()
            .equals(other.getInvolvedObject())) 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 (hasSource() != other.hasSource()) return false;
      if (hasSource()) {
        if (!getSource()
            .equals(other.getSource())) return false;
      }
      if (hasFirstTimestamp() != other.hasFirstTimestamp()) return false;
      if (hasFirstTimestamp()) {
        if (!getFirstTimestamp()
            .equals(other.getFirstTimestamp())) return false;
      }
      if (hasLastTimestamp() != other.hasLastTimestamp()) return false;
      if (hasLastTimestamp()) {
        if (!getLastTimestamp()
            .equals(other.getLastTimestamp())) return false;
      }
      if (hasCount() != other.hasCount()) return false;
      if (hasCount()) {
        if (getCount()
            != other.getCount()) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasEventTime() != other.hasEventTime()) return false;
      if (hasEventTime()) {
        if (!getEventTime()
            .equals(other.getEventTime())) return false;
      }
      if (hasSeries() != other.hasSeries()) return false;
      if (hasSeries()) {
        if (!getSeries()
            .equals(other.getSeries())) return false;
      }
      if (hasAction() != other.hasAction()) return false;
      if (hasAction()) {
        if (!getAction()
            .equals(other.getAction())) return false;
      }
      if (hasRelated() != other.hasRelated()) return false;
      if (hasRelated()) {
        if (!getRelated()
            .equals(other.getRelated())) return false;
      }
      if (hasReportingComponent() != other.hasReportingComponent()) return false;
      if (hasReportingComponent()) {
        if (!getReportingComponent()
            .equals(other.getReportingComponent())) return false;
      }
      if (hasReportingInstance() != other.hasReportingInstance()) return false;
      if (hasReportingInstance()) {
        if (!getReportingInstance()
            .equals(other.getReportingInstance())) 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 (hasInvolvedObject()) {
        hash = (37 * hash) + INVOLVEDOBJECT_FIELD_NUMBER;
        hash = (53 * hash) + getInvolvedObject().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();
      }
      if (hasSource()) {
        hash = (37 * hash) + SOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getSource().hashCode();
      }
      if (hasFirstTimestamp()) {
        hash = (37 * hash) + FIRSTTIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + getFirstTimestamp().hashCode();
      }
      if (hasLastTimestamp()) {
        hash = (37 * hash) + LASTTIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + getLastTimestamp().hashCode();
      }
      if (hasCount()) {
        hash = (37 * hash) + COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getCount();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      if (hasEventTime()) {
        hash = (37 * hash) + EVENTTIME_FIELD_NUMBER;
        hash = (53 * hash) + getEventTime().hashCode();
      }
      if (hasSeries()) {
        hash = (37 * hash) + SERIES_FIELD_NUMBER;
        hash = (53 * hash) + getSeries().hashCode();
      }
      if (hasAction()) {
        hash = (37 * hash) + ACTION_FIELD_NUMBER;
        hash = (53 * hash) + getAction().hashCode();
      }
      if (hasRelated()) {
        hash = (37 * hash) + RELATED_FIELD_NUMBER;
        hash = (53 * hash) + getRelated().hashCode();
      }
      if (hasReportingComponent()) {
        hash = (37 * hash) + REPORTINGCOMPONENT_FIELD_NUMBER;
        hash = (53 * hash) + getReportingComponent().hashCode();
      }
      if (hasReportingInstance()) {
        hash = (37 * hash) + REPORTINGINSTANCE_FIELD_NUMBER;
        hash = (53 * hash) + getReportingInstance().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.Event 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.V1.Event parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Event 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.V1.Event 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>
     * Event is a report of an event somewhere in the cluster.  Events
     * have a limited retention time and triggers and messages may evolve
     * with time.  Event consumers should not rely on the timing of an event
     * with a given Reason reflecting a consistent underlying trigger, or the
     * continued existence of events with that Reason.  Events should be
     * treated as informative, best-effort, supplemental data.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Event}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Event)
        io.kubernetes.client.proto.V1.EventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Event_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.Event.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();
          getInvolvedObjectFieldBuilder();
          getSourceFieldBuilder();
          getFirstTimestampFieldBuilder();
          getLastTimestampFieldBuilder();
          getEventTimeFieldBuilder();
          getSeriesFieldBuilder();
          getRelatedFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        involvedObject_ = null;
        if (involvedObjectBuilder_ != null) {
          involvedObjectBuilder_.dispose();
          involvedObjectBuilder_ = null;
        }
        reason_ = "";
        message_ = "";
        source_ = null;
        if (sourceBuilder_ != null) {
          sourceBuilder_.dispose();
          sourceBuilder_ = null;
        }
        firstTimestamp_ = null;
        if (firstTimestampBuilder_ != null) {
          firstTimestampBuilder_.dispose();
          firstTimestampBuilder_ = null;
        }
        lastTimestamp_ = null;
        if (lastTimestampBuilder_ != null) {
          lastTimestampBuilder_.dispose();
          lastTimestampBuilder_ = null;
        }
        count_ = 0;
        type_ = "";
        eventTime_ = null;
        if (eventTimeBuilder_ != null) {
          eventTimeBuilder_.dispose();
          eventTimeBuilder_ = null;
        }
        series_ = null;
        if (seriesBuilder_ != null) {
          seriesBuilder_.dispose();
          seriesBuilder_ = null;
        }
        action_ = "";
        related_ = null;
        if (relatedBuilder_ != null) {
          relatedBuilder_.dispose();
          relatedBuilder_ = null;
        }
        reportingComponent_ = "";
        reportingInstance_ = "";
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.Event 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.involvedObject_ = involvedObjectBuilder_ == null
              ? involvedObject_
              : involvedObjectBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.message_ = message_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.source_ = sourceBuilder_ == null
              ? source_
              : sourceBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.firstTimestamp_ = firstTimestampBuilder_ == null
              ? firstTimestamp_
              : firstTimestampBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.lastTimestamp_ = lastTimestampBuilder_ == null
              ? lastTimestamp_
              : lastTimestampBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.count_ = count_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.type_ = type_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.eventTime_ = eventTimeBuilder_ == null
              ? eventTime_
              : eventTimeBuilder_.build();
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.series_ = seriesBuilder_ == null
              ? series_
              : seriesBuilder_.build();
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.action_ = action_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.related_ = relatedBuilder_ == null
              ? related_
              : relatedBuilder_.build();
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.reportingComponent_ = reportingComponent_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.reportingInstance_ = reportingInstance_;
          to_bitField0_ |= 0x00004000;
        }
        result.bitField0_ |= to_bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Event other) {
        if (other == io.kubernetes.client.proto.V1.Event.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasInvolvedObject()) {
          mergeInvolvedObject(other.getInvolvedObject());
        }
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasSource()) {
          mergeSource(other.getSource());
        }
        if (other.hasFirstTimestamp()) {
          mergeFirstTimestamp(other.getFirstTimestamp());
        }
        if (other.hasLastTimestamp()) {
          mergeLastTimestamp(other.getLastTimestamp());
        }
        if (other.hasCount()) {
          setCount(other.getCount());
        }
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        if (other.hasEventTime()) {
          mergeEventTime(other.getEventTime());
        }
        if (other.hasSeries()) {
          mergeSeries(other.getSeries());
        }
        if (other.hasAction()) {
          action_ = other.action_;
          bitField0_ |= 0x00000800;
          onChanged();
        }
        if (other.hasRelated()) {
          mergeRelated(other.getRelated());
        }
        if (other.hasReportingComponent()) {
          reportingComponent_ = other.reportingComponent_;
          bitField0_ |= 0x00002000;
          onChanged();
        }
        if (other.hasReportingInstance()) {
          reportingInstance_ = other.reportingInstance_;
          bitField0_ |= 0x00004000;
          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(
                    getMetadataFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getInvolvedObjectFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                reason_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                message_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getSourceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getFirstTimestampFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getLastTimestampFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 64: {
                count_ = input.readInt32();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              case 74: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getEventTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getSeriesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              case 98: {
                action_ = input.readBytes();
                bitField0_ |= 0x00000800;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getRelatedFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00001000;
                break;
              } // case 106
              case 114: {
                reportingComponent_ = input.readBytes();
                bitField0_ |= 0x00002000;
                break;
              } // case 114
              case 122: {
                reportingInstance_ = input.readBytes();
                bitField0_ |= 0x00004000;
                break;
              } // case 122
              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
       * </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
       * </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
       * </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
       * </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
       * </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
       * </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
       * </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
       * </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
       * </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.V1.ObjectReference involvedObject_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> involvedObjectBuilder_;
      /**
       * <pre>
       * The object that this event is about.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
       * @return Whether the involvedObject field is set.
       */
      public boolean hasInvolvedObject() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The object that this event is about.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
       * @return The involvedObject.
       */
      public io.kubernetes.client.proto.V1.ObjectReference getInvolvedObject() {
        if (involvedObjectBuilder_ == null) {
          return involvedObject_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : involvedObject_;
        } else {
          return involvedObjectBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The object that this event is about.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
       */
      public Builder setInvolvedObject(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (involvedObjectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          involvedObject_ = value;
        } else {
          involvedObjectBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The object that this event is about.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
       */
      public Builder setInvolvedObject(
          io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (involvedObjectBuilder_ == null) {
          involvedObject_ = builderForValue.build();
        } else {
          involvedObjectBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The object that this event is about.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
       */
      public Builder mergeInvolvedObject(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (involvedObjectBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            involvedObject_ != null &&
            involvedObject_ != io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance()) {
            getInvolvedObjectBuilder().mergeFrom(value);
          } else {
            involvedObject_ = value;
          }
        } else {
          involvedObjectBuilder_.mergeFrom(value);
        }
        if (involvedObject_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The object that this event is about.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
       */
      public Builder clearInvolvedObject() {
        bitField0_ = (bitField0_ & ~0x00000002);
        involvedObject_ = null;
        if (involvedObjectBuilder_ != null) {
          involvedObjectBuilder_.dispose();
          involvedObjectBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The object that this event is about.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder getInvolvedObjectBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getInvolvedObjectFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The object that this event is about.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getInvolvedObjectOrBuilder() {
        if (involvedObjectBuilder_ != null) {
          return involvedObjectBuilder_.getMessageOrBuilder();
        } else {
          return involvedObject_ == null ?
              io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : involvedObject_;
        }
      }
      /**
       * <pre>
       * The object that this event is about.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference involvedObject = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
          getInvolvedObjectFieldBuilder() {
        if (involvedObjectBuilder_ == null) {
          involvedObjectBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder>(
                  getInvolvedObject(),
                  getParentForChildren(),
                  isClean());
          involvedObject_ = null;
        }
        return involvedObjectBuilder_;
      }

      private java.lang.Object reason_ = "";
      /**
       * <pre>
       * This should be a short, machine understandable string that gives the reason
       * for the transition into the object's current status.
       * TODO: provide exact specification for format.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * This should be a short, machine understandable string that gives the reason
       * for the transition into the object's current status.
       * TODO: provide exact specification for format.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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>
       * This should be a short, machine understandable string that gives the reason
       * for the transition into the object's current status.
       * TODO: provide exact specification for format.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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>
       * This should be a short, machine understandable string that gives the reason
       * for the transition into the object's current status.
       * TODO: provide exact specification for format.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * This should be a short, machine understandable string that gives the reason
       * for the transition into the object's current status.
       * TODO: provide exact specification for format.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * This should be a short, machine understandable string that gives the reason
       * for the transition into the object's current status.
       * TODO: provide exact specification for format.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * A human-readable description of the status of this operation.
       * TODO: decide on maximum length.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * A human-readable description of the status of this operation.
       * TODO: decide on maximum length.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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>
       * A human-readable description of the status of this operation.
       * TODO: decide on maximum length.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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>
       * A human-readable description of the status of this operation.
       * TODO: decide on maximum length.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A human-readable description of the status of this operation.
       * TODO: decide on maximum length.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A human-readable description of the status of this operation.
       * TODO: decide on maximum length.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.EventSource source_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EventSource, io.kubernetes.client.proto.V1.EventSource.Builder, io.kubernetes.client.proto.V1.EventSourceOrBuilder> sourceBuilder_;
      /**
       * <pre>
       * The component reporting this event. Should be a short machine understandable string.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
       * @return Whether the source field is set.
       */
      public boolean hasSource() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * The component reporting this event. Should be a short machine understandable string.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
       * @return The source.
       */
      public io.kubernetes.client.proto.V1.EventSource getSource() {
        if (sourceBuilder_ == null) {
          return source_ == null ? io.kubernetes.client.proto.V1.EventSource.getDefaultInstance() : source_;
        } else {
          return sourceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The component reporting this event. Should be a short machine understandable string.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
       */
      public Builder setSource(io.kubernetes.client.proto.V1.EventSource value) {
        if (sourceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          source_ = value;
        } else {
          sourceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The component reporting this event. Should be a short machine understandable string.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
       */
      public Builder setSource(
          io.kubernetes.client.proto.V1.EventSource.Builder builderForValue) {
        if (sourceBuilder_ == null) {
          source_ = builderForValue.build();
        } else {
          sourceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The component reporting this event. Should be a short machine understandable string.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
       */
      public Builder mergeSource(io.kubernetes.client.proto.V1.EventSource value) {
        if (sourceBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            source_ != null &&
            source_ != io.kubernetes.client.proto.V1.EventSource.getDefaultInstance()) {
            getSourceBuilder().mergeFrom(value);
          } else {
            source_ = value;
          }
        } else {
          sourceBuilder_.mergeFrom(value);
        }
        if (source_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The component reporting this event. Should be a short machine understandable string.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
       */
      public Builder clearSource() {
        bitField0_ = (bitField0_ & ~0x00000010);
        source_ = null;
        if (sourceBuilder_ != null) {
          sourceBuilder_.dispose();
          sourceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The component reporting this event. Should be a short machine understandable string.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
       */
      public io.kubernetes.client.proto.V1.EventSource.Builder getSourceBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getSourceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The component reporting this event. Should be a short machine understandable string.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
       */
      public io.kubernetes.client.proto.V1.EventSourceOrBuilder getSourceOrBuilder() {
        if (sourceBuilder_ != null) {
          return sourceBuilder_.getMessageOrBuilder();
        } else {
          return source_ == null ?
              io.kubernetes.client.proto.V1.EventSource.getDefaultInstance() : source_;
        }
      }
      /**
       * <pre>
       * The component reporting this event. Should be a short machine understandable string.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSource source = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EventSource, io.kubernetes.client.proto.V1.EventSource.Builder, io.kubernetes.client.proto.V1.EventSourceOrBuilder> 
          getSourceFieldBuilder() {
        if (sourceBuilder_ == null) {
          sourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.EventSource, io.kubernetes.client.proto.V1.EventSource.Builder, io.kubernetes.client.proto.V1.EventSourceOrBuilder>(
                  getSource(),
                  getParentForChildren(),
                  isClean());
          source_ = null;
        }
        return sourceBuilder_;
      }

      private io.kubernetes.client.proto.Meta.Time firstTimestamp_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> firstTimestampBuilder_;
      /**
       * <pre>
       * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
       * @return Whether the firstTimestamp field is set.
       */
      public boolean hasFirstTimestamp() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
       * @return The firstTimestamp.
       */
      public io.kubernetes.client.proto.Meta.Time getFirstTimestamp() {
        if (firstTimestampBuilder_ == null) {
          return firstTimestamp_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : firstTimestamp_;
        } else {
          return firstTimestampBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
       */
      public Builder setFirstTimestamp(io.kubernetes.client.proto.Meta.Time value) {
        if (firstTimestampBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          firstTimestamp_ = value;
        } else {
          firstTimestampBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
       */
      public Builder setFirstTimestamp(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (firstTimestampBuilder_ == null) {
          firstTimestamp_ = builderForValue.build();
        } else {
          firstTimestampBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
       */
      public Builder mergeFirstTimestamp(io.kubernetes.client.proto.Meta.Time value) {
        if (firstTimestampBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            firstTimestamp_ != null &&
            firstTimestamp_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getFirstTimestampBuilder().mergeFrom(value);
          } else {
            firstTimestamp_ = value;
          }
        } else {
          firstTimestampBuilder_.mergeFrom(value);
        }
        if (firstTimestamp_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
       */
      public Builder clearFirstTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000020);
        firstTimestamp_ = null;
        if (firstTimestampBuilder_ != null) {
          firstTimestampBuilder_.dispose();
          firstTimestampBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getFirstTimestampBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getFirstTimestampFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getFirstTimestampOrBuilder() {
        if (firstTimestampBuilder_ != null) {
          return firstTimestampBuilder_.getMessageOrBuilder();
        } else {
          return firstTimestamp_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : firstTimestamp_;
        }
      }
      /**
       * <pre>
       * The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;</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> 
          getFirstTimestampFieldBuilder() {
        if (firstTimestampBuilder_ == null) {
          firstTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getFirstTimestamp(),
                  getParentForChildren(),
                  isClean());
          firstTimestamp_ = null;
        }
        return firstTimestampBuilder_;
      }

      private io.kubernetes.client.proto.Meta.Time lastTimestamp_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> lastTimestampBuilder_;
      /**
       * <pre>
       * The time at which the most recent occurrence of this event was recorded.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
       * @return Whether the lastTimestamp field is set.
       */
      public boolean hasLastTimestamp() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * The time at which the most recent occurrence of this event was recorded.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
       * @return The lastTimestamp.
       */
      public io.kubernetes.client.proto.Meta.Time getLastTimestamp() {
        if (lastTimestampBuilder_ == null) {
          return lastTimestamp_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastTimestamp_;
        } else {
          return lastTimestampBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The time at which the most recent occurrence of this event was recorded.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
       */
      public Builder setLastTimestamp(io.kubernetes.client.proto.Meta.Time value) {
        if (lastTimestampBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastTimestamp_ = value;
        } else {
          lastTimestampBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The time at which the most recent occurrence of this event was recorded.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
       */
      public Builder setLastTimestamp(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (lastTimestampBuilder_ == null) {
          lastTimestamp_ = builderForValue.build();
        } else {
          lastTimestampBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The time at which the most recent occurrence of this event was recorded.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
       */
      public Builder mergeLastTimestamp(io.kubernetes.client.proto.Meta.Time value) {
        if (lastTimestampBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            lastTimestamp_ != null &&
            lastTimestamp_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getLastTimestampBuilder().mergeFrom(value);
          } else {
            lastTimestamp_ = value;
          }
        } else {
          lastTimestampBuilder_.mergeFrom(value);
        }
        if (lastTimestamp_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The time at which the most recent occurrence of this event was recorded.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
       */
      public Builder clearLastTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000040);
        lastTimestamp_ = null;
        if (lastTimestampBuilder_ != null) {
          lastTimestampBuilder_.dispose();
          lastTimestampBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The time at which the most recent occurrence of this event was recorded.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastTimestampBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getLastTimestampFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The time at which the most recent occurrence of this event was recorded.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastTimestampOrBuilder() {
        if (lastTimestampBuilder_ != null) {
          return lastTimestampBuilder_.getMessageOrBuilder();
        } else {
          return lastTimestamp_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastTimestamp_;
        }
      }
      /**
       * <pre>
       * The time at which the most recent occurrence of this event was recorded.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;</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> 
          getLastTimestampFieldBuilder() {
        if (lastTimestampBuilder_ == null) {
          lastTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getLastTimestamp(),
                  getParentForChildren(),
                  isClean());
          lastTimestamp_ = null;
        }
        return lastTimestampBuilder_;
      }

      private int count_ ;
      /**
       * <pre>
       * The number of times this event has occurred.
       * +optional
       * </pre>
       *
       * <code>optional int32 count = 8;</code>
       * @return Whether the count field is set.
       */
      @java.lang.Override
      public boolean hasCount() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * The number of times this event has occurred.
       * +optional
       * </pre>
       *
       * <code>optional int32 count = 8;</code>
       * @return The count.
       */
      @java.lang.Override
      public int getCount() {
        return count_;
      }
      /**
       * <pre>
       * The number of times this event has occurred.
       * +optional
       * </pre>
       *
       * <code>optional int32 count = 8;</code>
       * @param value The count to set.
       * @return This builder for chaining.
       */
      public Builder setCount(int value) {

        count_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The number of times this event has occurred.
       * +optional
       * </pre>
       *
       * <code>optional int32 count = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearCount() {
        bitField0_ = (bitField0_ & ~0x00000080);
        count_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <pre>
       * Type of this event (Normal, Warning), new types could be added in the future
       * +optional
       * </pre>
       *
       * <code>optional string type = 9;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * Type of this event (Normal, Warning), new types could be added in the future
       * +optional
       * </pre>
       *
       * <code>optional string type = 9;</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 of this event (Normal, Warning), new types could be added in the future
       * +optional
       * </pre>
       *
       * <code>optional string type = 9;</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 of this event (Normal, Warning), new types could be added in the future
       * +optional
       * </pre>
       *
       * <code>optional string type = 9;</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_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type of this event (Normal, Warning), new types could be added in the future
       * +optional
       * </pre>
       *
       * <code>optional string type = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type of this event (Normal, Warning), new types could be added in the future
       * +optional
       * </pre>
       *
       * <code>optional string type = 9;</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_ |= 0x00000100;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.MicroTime eventTime_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.MicroTime, io.kubernetes.client.proto.Meta.MicroTime.Builder, io.kubernetes.client.proto.Meta.MicroTimeOrBuilder> eventTimeBuilder_;
      /**
       * <pre>
       * Time when this Event was first observed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
       * @return Whether the eventTime field is set.
       */
      public boolean hasEventTime() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * Time when this Event was first observed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
       * @return The eventTime.
       */
      public io.kubernetes.client.proto.Meta.MicroTime getEventTime() {
        if (eventTimeBuilder_ == null) {
          return eventTime_ == null ? io.kubernetes.client.proto.Meta.MicroTime.getDefaultInstance() : eventTime_;
        } else {
          return eventTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Time when this Event was first observed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
       */
      public Builder setEventTime(io.kubernetes.client.proto.Meta.MicroTime value) {
        if (eventTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          eventTime_ = value;
        } else {
          eventTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time when this Event was first observed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
       */
      public Builder setEventTime(
          io.kubernetes.client.proto.Meta.MicroTime.Builder builderForValue) {
        if (eventTimeBuilder_ == null) {
          eventTime_ = builderForValue.build();
        } else {
          eventTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time when this Event was first observed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
       */
      public Builder mergeEventTime(io.kubernetes.client.proto.Meta.MicroTime value) {
        if (eventTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            eventTime_ != null &&
            eventTime_ != io.kubernetes.client.proto.Meta.MicroTime.getDefaultInstance()) {
            getEventTimeBuilder().mergeFrom(value);
          } else {
            eventTime_ = value;
          }
        } else {
          eventTimeBuilder_.mergeFrom(value);
        }
        if (eventTime_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Time when this Event was first observed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
       */
      public Builder clearEventTime() {
        bitField0_ = (bitField0_ & ~0x00000200);
        eventTime_ = null;
        if (eventTimeBuilder_ != null) {
          eventTimeBuilder_.dispose();
          eventTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time when this Event was first observed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
       */
      public io.kubernetes.client.proto.Meta.MicroTime.Builder getEventTimeBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getEventTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Time when this Event was first observed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
       */
      public io.kubernetes.client.proto.Meta.MicroTimeOrBuilder getEventTimeOrBuilder() {
        if (eventTimeBuilder_ != null) {
          return eventTimeBuilder_.getMessageOrBuilder();
        } else {
          return eventTime_ == null ?
              io.kubernetes.client.proto.Meta.MicroTime.getDefaultInstance() : eventTime_;
        }
      }
      /**
       * <pre>
       * Time when this Event was first observed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.MicroTime, io.kubernetes.client.proto.Meta.MicroTime.Builder, io.kubernetes.client.proto.Meta.MicroTimeOrBuilder> 
          getEventTimeFieldBuilder() {
        if (eventTimeBuilder_ == null) {
          eventTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.MicroTime, io.kubernetes.client.proto.Meta.MicroTime.Builder, io.kubernetes.client.proto.Meta.MicroTimeOrBuilder>(
                  getEventTime(),
                  getParentForChildren(),
                  isClean());
          eventTime_ = null;
        }
        return eventTimeBuilder_;
      }

      private io.kubernetes.client.proto.V1.EventSeries series_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EventSeries, io.kubernetes.client.proto.V1.EventSeries.Builder, io.kubernetes.client.proto.V1.EventSeriesOrBuilder> seriesBuilder_;
      /**
       * <pre>
       * Data about the Event series this event represents or nil if it's a singleton Event.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
       * @return Whether the series field is set.
       */
      public boolean hasSeries() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * Data about the Event series this event represents or nil if it's a singleton Event.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
       * @return The series.
       */
      public io.kubernetes.client.proto.V1.EventSeries getSeries() {
        if (seriesBuilder_ == null) {
          return series_ == null ? io.kubernetes.client.proto.V1.EventSeries.getDefaultInstance() : series_;
        } else {
          return seriesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Data about the Event series this event represents or nil if it's a singleton Event.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
       */
      public Builder setSeries(io.kubernetes.client.proto.V1.EventSeries value) {
        if (seriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          series_ = value;
        } else {
          seriesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Data about the Event series this event represents or nil if it's a singleton Event.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
       */
      public Builder setSeries(
          io.kubernetes.client.proto.V1.EventSeries.Builder builderForValue) {
        if (seriesBuilder_ == null) {
          series_ = builderForValue.build();
        } else {
          seriesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Data about the Event series this event represents or nil if it's a singleton Event.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
       */
      public Builder mergeSeries(io.kubernetes.client.proto.V1.EventSeries value) {
        if (seriesBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            series_ != null &&
            series_ != io.kubernetes.client.proto.V1.EventSeries.getDefaultInstance()) {
            getSeriesBuilder().mergeFrom(value);
          } else {
            series_ = value;
          }
        } else {
          seriesBuilder_.mergeFrom(value);
        }
        if (series_ != null) {
          bitField0_ |= 0x00000400;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Data about the Event series this event represents or nil if it's a singleton Event.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
       */
      public Builder clearSeries() {
        bitField0_ = (bitField0_ & ~0x00000400);
        series_ = null;
        if (seriesBuilder_ != null) {
          seriesBuilder_.dispose();
          seriesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Data about the Event series this event represents or nil if it's a singleton Event.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
       */
      public io.kubernetes.client.proto.V1.EventSeries.Builder getSeriesBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getSeriesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Data about the Event series this event represents or nil if it's a singleton Event.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
       */
      public io.kubernetes.client.proto.V1.EventSeriesOrBuilder getSeriesOrBuilder() {
        if (seriesBuilder_ != null) {
          return seriesBuilder_.getMessageOrBuilder();
        } else {
          return series_ == null ?
              io.kubernetes.client.proto.V1.EventSeries.getDefaultInstance() : series_;
        }
      }
      /**
       * <pre>
       * Data about the Event series this event represents or nil if it's a singleton Event.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EventSeries series = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EventSeries, io.kubernetes.client.proto.V1.EventSeries.Builder, io.kubernetes.client.proto.V1.EventSeriesOrBuilder> 
          getSeriesFieldBuilder() {
        if (seriesBuilder_ == null) {
          seriesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.EventSeries, io.kubernetes.client.proto.V1.EventSeries.Builder, io.kubernetes.client.proto.V1.EventSeriesOrBuilder>(
                  getSeries(),
                  getParentForChildren(),
                  isClean());
          series_ = null;
        }
        return seriesBuilder_;
      }

      private java.lang.Object action_ = "";
      /**
       * <pre>
       * What action was taken/failed regarding to the Regarding object.
       * +optional
       * </pre>
       *
       * <code>optional string action = 12;</code>
       * @return Whether the action field is set.
       */
      public boolean hasAction() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * What action was taken/failed regarding to the Regarding object.
       * +optional
       * </pre>
       *
       * <code>optional string action = 12;</code>
       * @return The action.
       */
      public java.lang.String getAction() {
        java.lang.Object ref = action_;
        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()) {
            action_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * What action was taken/failed regarding to the Regarding object.
       * +optional
       * </pre>
       *
       * <code>optional string action = 12;</code>
       * @return The bytes for action.
       */
      public com.google.protobuf.ByteString
          getActionBytes() {
        java.lang.Object ref = action_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          action_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * What action was taken/failed regarding to the Regarding object.
       * +optional
       * </pre>
       *
       * <code>optional string action = 12;</code>
       * @param value The action to set.
       * @return This builder for chaining.
       */
      public Builder setAction(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        action_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * What action was taken/failed regarding to the Regarding object.
       * +optional
       * </pre>
       *
       * <code>optional string action = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearAction() {
        action_ = getDefaultInstance().getAction();
        bitField0_ = (bitField0_ & ~0x00000800);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * What action was taken/failed regarding to the Regarding object.
       * +optional
       * </pre>
       *
       * <code>optional string action = 12;</code>
       * @param value The bytes for action to set.
       * @return This builder for chaining.
       */
      public Builder setActionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        action_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.ObjectReference related_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> relatedBuilder_;
      /**
       * <pre>
       * Optional secondary object for more complex actions.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
       * @return Whether the related field is set.
       */
      public boolean hasRelated() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       * Optional secondary object for more complex actions.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
       * @return The related.
       */
      public io.kubernetes.client.proto.V1.ObjectReference getRelated() {
        if (relatedBuilder_ == null) {
          return related_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : related_;
        } else {
          return relatedBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Optional secondary object for more complex actions.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
       */
      public Builder setRelated(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (relatedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          related_ = value;
        } else {
          relatedBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional secondary object for more complex actions.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
       */
      public Builder setRelated(
          io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (relatedBuilder_ == null) {
          related_ = builderForValue.build();
        } else {
          relatedBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional secondary object for more complex actions.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
       */
      public Builder mergeRelated(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (relatedBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0) &&
            related_ != null &&
            related_ != io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance()) {
            getRelatedBuilder().mergeFrom(value);
          } else {
            related_ = value;
          }
        } else {
          relatedBuilder_.mergeFrom(value);
        }
        if (related_ != null) {
          bitField0_ |= 0x00001000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Optional secondary object for more complex actions.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
       */
      public Builder clearRelated() {
        bitField0_ = (bitField0_ & ~0x00001000);
        related_ = null;
        if (relatedBuilder_ != null) {
          relatedBuilder_.dispose();
          relatedBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional secondary object for more complex actions.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder getRelatedBuilder() {
        bitField0_ |= 0x00001000;
        onChanged();
        return getRelatedFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Optional secondary object for more complex actions.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getRelatedOrBuilder() {
        if (relatedBuilder_ != null) {
          return relatedBuilder_.getMessageOrBuilder();
        } else {
          return related_ == null ?
              io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : related_;
        }
      }
      /**
       * <pre>
       * Optional secondary object for more complex actions.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference related = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
          getRelatedFieldBuilder() {
        if (relatedBuilder_ == null) {
          relatedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder>(
                  getRelated(),
                  getParentForChildren(),
                  isClean());
          related_ = null;
        }
        return relatedBuilder_;
      }

      private java.lang.Object reportingComponent_ = "";
      /**
       * <pre>
       * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingComponent = 14;</code>
       * @return Whether the reportingComponent field is set.
       */
      public boolean hasReportingComponent() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingComponent = 14;</code>
       * @return The reportingComponent.
       */
      public java.lang.String getReportingComponent() {
        java.lang.Object ref = reportingComponent_;
        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()) {
            reportingComponent_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingComponent = 14;</code>
       * @return The bytes for reportingComponent.
       */
      public com.google.protobuf.ByteString
          getReportingComponentBytes() {
        java.lang.Object ref = reportingComponent_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reportingComponent_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingComponent = 14;</code>
       * @param value The reportingComponent to set.
       * @return This builder for chaining.
       */
      public Builder setReportingComponent(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        reportingComponent_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingComponent = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearReportingComponent() {
        reportingComponent_ = getDefaultInstance().getReportingComponent();
        bitField0_ = (bitField0_ & ~0x00002000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingComponent = 14;</code>
       * @param value The bytes for reportingComponent to set.
       * @return This builder for chaining.
       */
      public Builder setReportingComponentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        reportingComponent_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }

      private java.lang.Object reportingInstance_ = "";
      /**
       * <pre>
       * ID of the controller instance, e.g. `kubelet-xyzf`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingInstance = 15;</code>
       * @return Whether the reportingInstance field is set.
       */
      public boolean hasReportingInstance() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * ID of the controller instance, e.g. `kubelet-xyzf`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingInstance = 15;</code>
       * @return The reportingInstance.
       */
      public java.lang.String getReportingInstance() {
        java.lang.Object ref = reportingInstance_;
        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()) {
            reportingInstance_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ID of the controller instance, e.g. `kubelet-xyzf`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingInstance = 15;</code>
       * @return The bytes for reportingInstance.
       */
      public com.google.protobuf.ByteString
          getReportingInstanceBytes() {
        java.lang.Object ref = reportingInstance_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reportingInstance_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ID of the controller instance, e.g. `kubelet-xyzf`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingInstance = 15;</code>
       * @param value The reportingInstance to set.
       * @return This builder for chaining.
       */
      public Builder setReportingInstance(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        reportingInstance_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ID of the controller instance, e.g. `kubelet-xyzf`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingInstance = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearReportingInstance() {
        reportingInstance_ = getDefaultInstance().getReportingInstance();
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ID of the controller instance, e.g. `kubelet-xyzf`.
       * +optional
       * </pre>
       *
       * <code>optional string reportingInstance = 15;</code>
       * @param value The bytes for reportingInstance to set.
       * @return This builder for chaining.
       */
      public Builder setReportingInstanceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        reportingInstance_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Event)
    }

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

    public static io.kubernetes.client.proto.V1.Event getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EventListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EventList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * List of events
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Event items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Event> 
        getItemsList();
    /**
     * <pre>
     * List of events
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Event items = 2;</code>
     */
    io.kubernetes.client.proto.V1.Event getItems(int index);
    /**
     * <pre>
     * List of events
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Event items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * List of events
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Event items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EventOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * List of events
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Event items = 2;</code>
     */
    io.kubernetes.client.proto.V1.EventOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * EventList is a list of events.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EventList}
   */
  public static final class EventList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EventList)
      EventListOrBuilder {
  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= */ "",
        EventList.class.getName());
    }
    // Use EventList.newBuilder() to construct.
    private EventList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EventList() {
      items_ = java.util.Collections.emptyList();
    }

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

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

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.Event> items_;
    /**
     * <pre>
     * List of events
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Event items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Event> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * List of events
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Event items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EventOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * List of events
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Event items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * List of events
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Event items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Event getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * List of events
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Event items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EventOrBuilder 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.V1.EventList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EventList other = (io.kubernetes.client.proto.V1.EventList) 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.V1.EventList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.EventList 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.V1.EventList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.EventList 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.V1.EventList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.EventList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.EventList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EventList 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.V1.EventList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.EventList 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.V1.EventList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EventList 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.V1.EventList 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>
     * EventList is a list of events.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EventList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EventList)
        io.kubernetes.client.proto.V1.EventListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EventList_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.EventList.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.V1.internal_static_k8s_io_api_core_v1_EventList_descriptor;
      }

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

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

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

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.EventList 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.V1.EventList 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.V1.EventList) {
          return mergeFrom((io.kubernetes.client.proto.V1.EventList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EventList other) {
        if (other == io.kubernetes.client.proto.V1.EventList.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.V1.Event m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Event.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.Event> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Event>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Event, io.kubernetes.client.proto.V1.Event.Builder, io.kubernetes.client.proto.V1.EventOrBuilder> itemsBuilder_;

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

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EventList)
    }

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

    public static io.kubernetes.client.proto.V1.EventList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EventSeriesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EventSeries)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Number of occurrences in this series up to the last heartbeat time
     * </pre>
     *
     * <code>optional int32 count = 1;</code>
     * @return Whether the count field is set.
     */
    boolean hasCount();
    /**
     * <pre>
     * Number of occurrences in this series up to the last heartbeat time
     * </pre>
     *
     * <code>optional int32 count = 1;</code>
     * @return The count.
     */
    int getCount();

    /**
     * <pre>
     * Time of the last occurrence observed
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
     * @return Whether the lastObservedTime field is set.
     */
    boolean hasLastObservedTime();
    /**
     * <pre>
     * Time of the last occurrence observed
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
     * @return The lastObservedTime.
     */
    io.kubernetes.client.proto.Meta.MicroTime getLastObservedTime();
    /**
     * <pre>
     * Time of the last occurrence observed
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
     */
    io.kubernetes.client.proto.Meta.MicroTimeOrBuilder getLastObservedTimeOrBuilder();
  }
  /**
   * <pre>
   * EventSeries contain information on series of events, i.e. thing that was/is happening
   * continuously for some time.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EventSeries}
   */
  public static final class EventSeries extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EventSeries)
      EventSeriesOrBuilder {
  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= */ "",
        EventSeries.class.getName());
    }
    // Use EventSeries.newBuilder() to construct.
    private EventSeries(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EventSeries() {
    }

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

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

    private int bitField0_;
    public static final int COUNT_FIELD_NUMBER = 1;
    private int count_ = 0;
    /**
     * <pre>
     * Number of occurrences in this series up to the last heartbeat time
     * </pre>
     *
     * <code>optional int32 count = 1;</code>
     * @return Whether the count field is set.
     */
    @java.lang.Override
    public boolean hasCount() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Number of occurrences in this series up to the last heartbeat time
     * </pre>
     *
     * <code>optional int32 count = 1;</code>
     * @return The count.
     */
    @java.lang.Override
    public int getCount() {
      return count_;
    }

    public static final int LASTOBSERVEDTIME_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.Meta.MicroTime lastObservedTime_;
    /**
     * <pre>
     * Time of the last occurrence observed
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
     * @return Whether the lastObservedTime field is set.
     */
    @java.lang.Override
    public boolean hasLastObservedTime() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Time of the last occurrence observed
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
     * @return The lastObservedTime.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.MicroTime getLastObservedTime() {
      return lastObservedTime_ == null ? io.kubernetes.client.proto.Meta.MicroTime.getDefaultInstance() : lastObservedTime_;
    }
    /**
     * <pre>
     * Time of the last occurrence observed
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.MicroTimeOrBuilder getLastObservedTimeOrBuilder() {
      return lastObservedTime_ == null ? io.kubernetes.client.proto.Meta.MicroTime.getDefaultInstance() : lastObservedTime_;
    }

    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.writeInt32(1, count_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getLastObservedTime());
      }
      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
          .computeInt32Size(1, count_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getLastObservedTime());
      }
      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.V1.EventSeries)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EventSeries other = (io.kubernetes.client.proto.V1.EventSeries) obj;

      if (hasCount() != other.hasCount()) return false;
      if (hasCount()) {
        if (getCount()
            != other.getCount()) return false;
      }
      if (hasLastObservedTime() != other.hasLastObservedTime()) return false;
      if (hasLastObservedTime()) {
        if (!getLastObservedTime()
            .equals(other.getLastObservedTime())) 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 (hasCount()) {
        hash = (37 * hash) + COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getCount();
      }
      if (hasLastObservedTime()) {
        hash = (37 * hash) + LASTOBSERVEDTIME_FIELD_NUMBER;
        hash = (53 * hash) + getLastObservedTime().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EventSeries 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.V1.EventSeries parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EventSeries 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.V1.EventSeries 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>
     * EventSeries contain information on series of events, i.e. thing that was/is happening
     * continuously for some time.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EventSeries}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EventSeries)
        io.kubernetes.client.proto.V1.EventSeriesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EventSeries_descriptor;
      }

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

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.EventSeries result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.count_ = count_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.lastObservedTime_ = lastObservedTimeBuilder_ == null
              ? lastObservedTime_
              : lastObservedTimeBuilder_.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.V1.EventSeries) {
          return mergeFrom((io.kubernetes.client.proto.V1.EventSeries)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EventSeries other) {
        if (other == io.kubernetes.client.proto.V1.EventSeries.getDefaultInstance()) return this;
        if (other.hasCount()) {
          setCount(other.getCount());
        }
        if (other.hasLastObservedTime()) {
          mergeLastObservedTime(other.getLastObservedTime());
        }
        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: {
                count_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getLastObservedTimeFieldBuilder().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 int count_ ;
      /**
       * <pre>
       * Number of occurrences in this series up to the last heartbeat time
       * </pre>
       *
       * <code>optional int32 count = 1;</code>
       * @return Whether the count field is set.
       */
      @java.lang.Override
      public boolean hasCount() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Number of occurrences in this series up to the last heartbeat time
       * </pre>
       *
       * <code>optional int32 count = 1;</code>
       * @return The count.
       */
      @java.lang.Override
      public int getCount() {
        return count_;
      }
      /**
       * <pre>
       * Number of occurrences in this series up to the last heartbeat time
       * </pre>
       *
       * <code>optional int32 count = 1;</code>
       * @param value The count to set.
       * @return This builder for chaining.
       */
      public Builder setCount(int value) {

        count_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of occurrences in this series up to the last heartbeat time
       * </pre>
       *
       * <code>optional int32 count = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCount() {
        bitField0_ = (bitField0_ & ~0x00000001);
        count_ = 0;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.MicroTime lastObservedTime_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.MicroTime, io.kubernetes.client.proto.Meta.MicroTime.Builder, io.kubernetes.client.proto.Meta.MicroTimeOrBuilder> lastObservedTimeBuilder_;
      /**
       * <pre>
       * Time of the last occurrence observed
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
       * @return Whether the lastObservedTime field is set.
       */
      public boolean hasLastObservedTime() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Time of the last occurrence observed
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
       * @return The lastObservedTime.
       */
      public io.kubernetes.client.proto.Meta.MicroTime getLastObservedTime() {
        if (lastObservedTimeBuilder_ == null) {
          return lastObservedTime_ == null ? io.kubernetes.client.proto.Meta.MicroTime.getDefaultInstance() : lastObservedTime_;
        } else {
          return lastObservedTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Time of the last occurrence observed
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
       */
      public Builder setLastObservedTime(io.kubernetes.client.proto.Meta.MicroTime value) {
        if (lastObservedTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastObservedTime_ = value;
        } else {
          lastObservedTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time of the last occurrence observed
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
       */
      public Builder setLastObservedTime(
          io.kubernetes.client.proto.Meta.MicroTime.Builder builderForValue) {
        if (lastObservedTimeBuilder_ == null) {
          lastObservedTime_ = builderForValue.build();
        } else {
          lastObservedTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time of the last occurrence observed
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
       */
      public Builder mergeLastObservedTime(io.kubernetes.client.proto.Meta.MicroTime value) {
        if (lastObservedTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            lastObservedTime_ != null &&
            lastObservedTime_ != io.kubernetes.client.proto.Meta.MicroTime.getDefaultInstance()) {
            getLastObservedTimeBuilder().mergeFrom(value);
          } else {
            lastObservedTime_ = value;
          }
        } else {
          lastObservedTimeBuilder_.mergeFrom(value);
        }
        if (lastObservedTime_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Time of the last occurrence observed
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
       */
      public Builder clearLastObservedTime() {
        bitField0_ = (bitField0_ & ~0x00000002);
        lastObservedTime_ = null;
        if (lastObservedTimeBuilder_ != null) {
          lastObservedTimeBuilder_.dispose();
          lastObservedTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time of the last occurrence observed
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.MicroTime.Builder getLastObservedTimeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getLastObservedTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Time of the last occurrence observed
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.MicroTimeOrBuilder getLastObservedTimeOrBuilder() {
        if (lastObservedTimeBuilder_ != null) {
          return lastObservedTimeBuilder_.getMessageOrBuilder();
        } else {
          return lastObservedTime_ == null ?
              io.kubernetes.client.proto.Meta.MicroTime.getDefaultInstance() : lastObservedTime_;
        }
      }
      /**
       * <pre>
       * Time of the last occurrence observed
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.MicroTime, io.kubernetes.client.proto.Meta.MicroTime.Builder, io.kubernetes.client.proto.Meta.MicroTimeOrBuilder> 
          getLastObservedTimeFieldBuilder() {
        if (lastObservedTimeBuilder_ == null) {
          lastObservedTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.MicroTime, io.kubernetes.client.proto.Meta.MicroTime.Builder, io.kubernetes.client.proto.Meta.MicroTimeOrBuilder>(
                  getLastObservedTime(),
                  getParentForChildren(),
                  isClean());
          lastObservedTime_ = null;
        }
        return lastObservedTimeBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EventSeries)
    }

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

    public static io.kubernetes.client.proto.V1.EventSeries getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface EventSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.EventSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Component from which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string component = 1;</code>
     * @return Whether the component field is set.
     */
    boolean hasComponent();
    /**
     * <pre>
     * Component from which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string component = 1;</code>
     * @return The component.
     */
    java.lang.String getComponent();
    /**
     * <pre>
     * Component from which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string component = 1;</code>
     * @return The bytes for component.
     */
    com.google.protobuf.ByteString
        getComponentBytes();

    /**
     * <pre>
     * Node name on which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return Whether the host field is set.
     */
    boolean hasHost();
    /**
     * <pre>
     * Node name on which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return The host.
     */
    java.lang.String getHost();
    /**
     * <pre>
     * Node name on which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return The bytes for host.
     */
    com.google.protobuf.ByteString
        getHostBytes();
  }
  /**
   * <pre>
   * EventSource contains information for an event.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.EventSource}
   */
  public static final class EventSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.EventSource)
      EventSourceOrBuilder {
  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= */ "",
        EventSource.class.getName());
    }
    // Use EventSource.newBuilder() to construct.
    private EventSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private EventSource() {
      component_ = "";
      host_ = "";
    }

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

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

    private int bitField0_;
    public static final int COMPONENT_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object component_ = "";
    /**
     * <pre>
     * Component from which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string component = 1;</code>
     * @return Whether the component field is set.
     */
    @java.lang.Override
    public boolean hasComponent() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Component from which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string component = 1;</code>
     * @return The component.
     */
    @java.lang.Override
    public java.lang.String getComponent() {
      java.lang.Object ref = component_;
      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()) {
          component_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Component from which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string component = 1;</code>
     * @return The bytes for component.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getComponentBytes() {
      java.lang.Object ref = component_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        component_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HOST_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object host_ = "";
    /**
     * <pre>
     * Node name on which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return Whether the host field is set.
     */
    @java.lang.Override
    public boolean hasHost() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Node name on which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return The host.
     */
    @java.lang.Override
    public java.lang.String getHost() {
      java.lang.Object ref = host_;
      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()) {
          host_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Node name on which the event is generated.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return The bytes for host.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHostBytes() {
      java.lang.Object ref = host_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        host_ = 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, component_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, host_);
      }
      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, component_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, host_);
      }
      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.V1.EventSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.EventSource other = (io.kubernetes.client.proto.V1.EventSource) obj;

      if (hasComponent() != other.hasComponent()) return false;
      if (hasComponent()) {
        if (!getComponent()
            .equals(other.getComponent())) return false;
      }
      if (hasHost() != other.hasHost()) return false;
      if (hasHost()) {
        if (!getHost()
            .equals(other.getHost())) 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 (hasComponent()) {
        hash = (37 * hash) + COMPONENT_FIELD_NUMBER;
        hash = (53 * hash) + getComponent().hashCode();
      }
      if (hasHost()) {
        hash = (37 * hash) + HOST_FIELD_NUMBER;
        hash = (53 * hash) + getHost().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.EventSource 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.V1.EventSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.EventSource 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.V1.EventSource 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>
     * EventSource contains information for an event.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.EventSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.EventSource)
        io.kubernetes.client.proto.V1.EventSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_EventSource_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.EventSource.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.EventSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.component_ = component_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.host_ = host_;
          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.V1.EventSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.EventSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.EventSource other) {
        if (other == io.kubernetes.client.proto.V1.EventSource.getDefaultInstance()) return this;
        if (other.hasComponent()) {
          component_ = other.component_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasHost()) {
          host_ = other.host_;
          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: {
                component_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                host_ = 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 component_ = "";
      /**
       * <pre>
       * Component from which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string component = 1;</code>
       * @return Whether the component field is set.
       */
      public boolean hasComponent() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Component from which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string component = 1;</code>
       * @return The component.
       */
      public java.lang.String getComponent() {
        java.lang.Object ref = component_;
        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()) {
            component_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Component from which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string component = 1;</code>
       * @return The bytes for component.
       */
      public com.google.protobuf.ByteString
          getComponentBytes() {
        java.lang.Object ref = component_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          component_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Component from which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string component = 1;</code>
       * @param value The component to set.
       * @return This builder for chaining.
       */
      public Builder setComponent(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        component_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Component from which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string component = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearComponent() {
        component_ = getDefaultInstance().getComponent();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Component from which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string component = 1;</code>
       * @param value The bytes for component to set.
       * @return This builder for chaining.
       */
      public Builder setComponentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        component_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object host_ = "";
      /**
       * <pre>
       * Node name on which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @return Whether the host field is set.
       */
      public boolean hasHost() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Node name on which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @return The host.
       */
      public java.lang.String getHost() {
        java.lang.Object ref = host_;
        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()) {
            host_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Node name on which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @return The bytes for host.
       */
      public com.google.protobuf.ByteString
          getHostBytes() {
        java.lang.Object ref = host_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          host_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Node name on which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @param value The host to set.
       * @return This builder for chaining.
       */
      public Builder setHost(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        host_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Node name on which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHost() {
        host_ = getDefaultInstance().getHost();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Node name on which the event is generated.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @param value The bytes for host to set.
       * @return This builder for chaining.
       */
      public Builder setHostBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        host_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.EventSource)
    }

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

    public static io.kubernetes.client.proto.V1.EventSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface ExecActionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ExecAction)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Command is the command line to execute inside the container, the working directory for the
     * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
     * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
     * a shell, you need to explicitly call out to that shell.
     * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 1;</code>
     * @return A list containing the command.
     */
    java.util.List<java.lang.String>
        getCommandList();
    /**
     * <pre>
     * Command is the command line to execute inside the container, the working directory for the
     * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
     * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
     * a shell, you need to explicitly call out to that shell.
     * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 1;</code>
     * @return The count of command.
     */
    int getCommandCount();
    /**
     * <pre>
     * Command is the command line to execute inside the container, the working directory for the
     * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
     * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
     * a shell, you need to explicitly call out to that shell.
     * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 1;</code>
     * @param index The index of the element to return.
     * @return The command at the given index.
     */
    java.lang.String getCommand(int index);
    /**
     * <pre>
     * Command is the command line to execute inside the container, the working directory for the
     * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
     * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
     * a shell, you need to explicitly call out to that shell.
     * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the command at the given index.
     */
    com.google.protobuf.ByteString
        getCommandBytes(int index);
  }
  /**
   * <pre>
   * ExecAction describes a "run in container" action.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ExecAction}
   */
  public static final class ExecAction extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ExecAction)
      ExecActionOrBuilder {
  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= */ "",
        ExecAction.class.getName());
    }
    // Use ExecAction.newBuilder() to construct.
    private ExecAction(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ExecAction() {
      command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

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

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

    public static final int COMMAND_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList command_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Command is the command line to execute inside the container, the working directory for the
     * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
     * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
     * a shell, you need to explicitly call out to that shell.
     * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 1;</code>
     * @return A list containing the command.
     */
    public com.google.protobuf.ProtocolStringList
        getCommandList() {
      return command_;
    }
    /**
     * <pre>
     * Command is the command line to execute inside the container, the working directory for the
     * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
     * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
     * a shell, you need to explicitly call out to that shell.
     * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 1;</code>
     * @return The count of command.
     */
    public int getCommandCount() {
      return command_.size();
    }
    /**
     * <pre>
     * Command is the command line to execute inside the container, the working directory for the
     * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
     * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
     * a shell, you need to explicitly call out to that shell.
     * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 1;</code>
     * @param index The index of the element to return.
     * @return The command at the given index.
     */
    public java.lang.String getCommand(int index) {
      return command_.get(index);
    }
    /**
     * <pre>
     * Command is the command line to execute inside the container, the working directory for the
     * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
     * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
     * a shell, you need to explicitly call out to that shell.
     * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the command at the given index.
     */
    public com.google.protobuf.ByteString
        getCommandBytes(int index) {
      return command_.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 < command_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, command_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < command_.size(); i++) {
          dataSize += computeStringSizeNoTag(command_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getCommandList().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.V1.ExecAction)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ExecAction other = (io.kubernetes.client.proto.V1.ExecAction) obj;

      if (!getCommandList()
          .equals(other.getCommandList())) 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 (getCommandCount() > 0) {
        hash = (37 * hash) + COMMAND_FIELD_NUMBER;
        hash = (53 * hash) + getCommandList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1.ExecAction 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.V1.ExecAction parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ExecAction 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.V1.ExecAction 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>
     * ExecAction describes a "run in container" action.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ExecAction}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ExecAction)
        io.kubernetes.client.proto.V1.ExecActionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ExecAction_descriptor;
      }

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

      // Construct using io.kubernetes.client.proto.V1.ExecAction.newBuilder()
      private Builder() {

      }

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

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

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1.ExecAction result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          command_.makeImmutable();
          result.command_ = command_;
        }
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ExecAction other) {
        if (other == io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance()) return this;
        if (!other.command_.isEmpty()) {
          if (command_.isEmpty()) {
            command_ = other.command_;
            bitField0_ |= 0x00000001;
          } else {
            ensureCommandIsMutable();
            command_.addAll(other.command_);
          }
          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: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureCommandIsMutable();
                command_.add(bs);
                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.LazyStringArrayList command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureCommandIsMutable() {
        if (!command_.isModifiable()) {
          command_ = new com.google.protobuf.LazyStringArrayList(command_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * Command is the command line to execute inside the container, the working directory for the
       * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
       * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
       * a shell, you need to explicitly call out to that shell.
       * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 1;</code>
       * @return A list containing the command.
       */
      public com.google.protobuf.ProtocolStringList
          getCommandList() {
        command_.makeImmutable();
        return command_;
      }
      /**
       * <pre>
       * Command is the command line to execute inside the container, the working directory for the
       * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
       * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
       * a shell, you need to explicitly call out to that shell.
       * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 1;</code>
       * @return The count of command.
       */
      public int getCommandCount() {
        return command_.size();
      }
      /**
       * <pre>
       * Command is the command line to execute inside the container, the working directory for the
       * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
       * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
       * a shell, you need to explicitly call out to that shell.
       * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 1;</code>
       * @param index The index of the element to return.
       * @return The command at the given index.
       */
      public java.lang.String getCommand(int index) {
        return command_.get(index);
      }
      /**
       * <pre>
       * Command is the command line to execute inside the container, the working directory for the
       * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
       * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
       * a shell, you need to explicitly call out to that shell.
       * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the command at the given index.
       */
      public com.google.protobuf.ByteString
          getCommandBytes(int index) {
        return command_.getByteString(index);
      }
      /**
       * <pre>
       * Command is the command line to execute inside the container, the working directory for the
       * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
       * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
       * a shell, you need to explicitly call out to that shell.
       * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 1;</code>
       * @param index The index to set the value at.
       * @param value The command to set.
       * @return This builder for chaining.
       */
      public Builder setCommand(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command is the command line to execute inside the container, the working directory for the
       * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
       * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
       * a shell, you need to explicitly call out to that shell.
       * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 1;</code>
       * @param value The command to add.
       * @return This builder for chaining.
       */
      public Builder addCommand(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command is the command line to execute inside the container, the working directory for the
       * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
       * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
       * a shell, you need to explicitly call out to that shell.
       * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 1;</code>
       * @param values The command to add.
       * @return This builder for chaining.
       */
      public Builder addAllCommand(
          java.lang.Iterable<java.lang.String> values) {
        ensureCommandIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, command_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command is the command line to execute inside the container, the working directory for the
       * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
       * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
       * a shell, you need to explicitly call out to that shell.
       * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCommand() {
        command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command is the command line to execute inside the container, the working directory for the
       * command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
       * not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
       * a shell, you need to explicitly call out to that shell.
       * Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 1;</code>
       * @param value The bytes of the command to add.
       * @return This builder for chaining.
       */
      public Builder addCommandBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ExecAction)
    }

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

    public static io.kubernetes.client.proto.V1.ExecAction getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

  }

  public interface FCVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.FCVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * targetWWNs is Optional: FC target worldwide names (WWNs)
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string targetWWNs = 1;</code>
     * @return A list containing the targetWWNs.
     */
    java.util.List<java.lang.String>
        getTargetWWNsList();
    /**
     * <pre>
     * targetWWNs is Optional: FC target worldwide names (WWNs)
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string targetWWNs = 1;</code>
     * @return The count of targetWWNs.
     */
    int getTargetWWNsCount();
    /**
     * <pre>
     * targetWWNs is Optional: FC target worldwide names (WWNs)
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string targetWWNs = 1;</code>
     * @param index The index of the element to return.
     * @return The targetWWNs at the given index.
     */
    java.lang.String getTargetWWNs(int index);
    /**
     * <pre>
     * targetWWNs is Optional: FC target worldwide names (WWNs)
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string targetWWNs = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the targetWWNs at the given index.
     */
    com.google.protobuf.ByteString
        getTargetWWNsBytes(int index);

    /**
     * <pre>
     * lun is Optional: FC target lun number
     * +optional
     * </pre>
     *
     * <code>optional int32 lun = 2;</code>
     * @return Whether the lun field is set.
     */
    boolean hasLun();
    /**
     * <pre>
     * lun is Optional: FC target lun number
     * +optional
     * </pre>
     *
     * <code>optional int32 lun = 2;</code>
     * @return The lun.
     */
    int getLun();

    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * wwids Optional: FC volume world wide identifiers (wwids)
     * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string wwids = 5;</code>
     * @return A list containing the wwids.
     */
    java.util.List<java.lang.String>
        getWwidsList();
    /**
     * <pre>
     * wwids Optional: FC volume world wide identifiers (wwids)
     * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string wwids = 5;</code>
     * @return The count of wwids.
     */
    int getWwidsCount();
    /**
     * <pre>
     * wwids Optional: FC volume world wide identifiers (wwids)
     * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string wwids = 5;</code>
     * @param index The index of the element to return.
     * @return The wwids at the given index.
     */
    java.lang.String getWwids(int index);
    /**
     * <pre>
     * wwids Optional: FC volume world wide identifiers (wwids)
     * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string wwids = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the wwids at the given index.
     */
    com.google.protobuf.ByteString
        getWwidsBytes(int index);
  }
  /**
   * <pre>
   * Represents a Fibre Channel volume.
   * Fibre Channel volumes can only be mounted as read/write once.
   * Fibre Channel volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.FCVolumeSource}
   */
  public static final class FCVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.FCVolumeSource)
      FCVolumeSourceOrBuilder {
  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= */ "",
        FCVolumeSource.class.getName());
    }
    // Use FCVolumeSource.newBuilder() to construct.
    private FCVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private FCVolumeSource() {
      targetWWNs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      fsType_ = "";
      wwids_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

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

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FCVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.FCVolumeSource.class, io.kubernetes.client.proto.V1.FCVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int TARGETWWNS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList targetWWNs_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * targetWWNs is Optional: FC target worldwide names (WWNs)
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string targetWWNs = 1;</code>
     * @return A list containing the targetWWNs.
     */
    public com.google.protobuf.ProtocolStringList
        getTargetWWNsList() {
      return targetWWNs_;
    }
    /**
     * <pre>
     * targetWWNs is Optional: FC target worldwide names (WWNs)
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string targetWWNs = 1;</code>
     * @return The count of targetWWNs.
     */
    public int getTargetWWNsCount() {
      return targetWWNs_.size();
    }
    /**
     * <pre>
     * targetWWNs is Optional: FC target worldwide names (WWNs)
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string targetWWNs = 1;</code>
     * @param index The index of the element to return.
     * @return The targetWWNs at the given index.
     */
    public java.lang.String getTargetWWNs(int index) {
      return targetWWNs_.get(index);
    }
    /**
     * <pre>
     * targetWWNs is Optional: FC target worldwide names (WWNs)
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string targetWWNs = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the targetWWNs at the given index.
     */
    public com.google.protobuf.ByteString
        getTargetWWNsBytes(int index) {
      return targetWWNs_.getByteString(index);
    }

    public static final int LUN_FIELD_NUMBER = 2;
    private int lun_ = 0;
    /**
     * <pre>
     * lun is Optional: FC target lun number
     * +optional
     * </pre>
     *
     * <code>optional int32 lun = 2;</code>
     * @return Whether the lun field is set.
     */
    @java.lang.Override
    public boolean hasLun() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * lun is Optional: FC target lun number
     * +optional
     * </pre>
     *
     * <code>optional int32 lun = 2;</code>
     * @return The lun.
     */
    @java.lang.Override
    public int getLun() {
      return lun_;
    }

    public static final int FSTYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 4;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int WWIDS_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList wwids_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * wwids Optional: FC volume world wide identifiers (wwids)
     * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string wwids = 5;</code>
     * @return A list containing the wwids.
     */
    public com.google.protobuf.ProtocolStringList
        getWwidsList() {
      return wwids_;
    }
    /**
     * <pre>
     * wwids Optional: FC volume world wide identifiers (wwids)
     * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string wwids = 5;</code>
     * @return The count of wwids.
     */
    public int getWwidsCount() {
      return wwids_.size();
    }
    /**
     * <pre>
     * wwids Optional: FC volume world wide identifiers (wwids)
     * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string wwids = 5;</code>
     * @param index The index of the element to return.
     * @return The wwids at the given index.
     */
    public java.lang.String getWwids(int index) {
      return wwids_.get(index);
    }
    /**
     * <pre>
     * wwids Optional: FC volume world wide identifiers (wwids)
     * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string wwids = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the wwids at the given index.
     */
    public com.google.protobuf.ByteString
        getWwidsBytes(int index) {
      return wwids_.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 < targetWWNs_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, targetWWNs_.getRaw(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(2, lun_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(4, readOnly_);
      }
      for (int i = 0; i < wwids_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, wwids_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < targetWWNs_.size(); i++) {
          dataSize += computeStringSizeNoTag(targetWWNs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTargetWWNsList().size();
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, lun_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, readOnly_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < wwids_.size(); i++) {
          dataSize += computeStringSizeNoTag(wwids_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getWwidsList().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.V1.FCVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.FCVolumeSource other = (io.kubernetes.client.proto.V1.FCVolumeSource) obj;

      if (!getTargetWWNsList()
          .equals(other.getTargetWWNsList())) return false;
      if (hasLun() != other.hasLun()) return false;
      if (hasLun()) {
        if (getLun()
            != other.getLun()) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (!getWwidsList()
          .equals(other.getWwidsList())) 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 (getTargetWWNsCount() > 0) {
        hash = (37 * hash) + TARGETWWNS_FIELD_NUMBER;
        hash = (53 * hash) + getTargetWWNsList().hashCode();
      }
      if (hasLun()) {
        hash = (37 * hash) + LUN_FIELD_NUMBER;
        hash = (53 * hash) + getLun();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (getWwidsCount() > 0) {
        hash = (37 * hash) + WWIDS_FIELD_NUMBER;
        hash = (53 * hash) + getWwidsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.FCVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FCVolumeSource 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.V1.FCVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FCVolumeSource 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.V1.FCVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FCVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.FCVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.FCVolumeSource 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.V1.FCVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.FCVolumeSource 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.V1.FCVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.FCVolumeSource 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.V1.FCVolumeSource 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>
     * Represents a Fibre Channel volume.
     * Fibre Channel volumes can only be mounted as read/write once.
     * Fibre Channel volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.FCVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.FCVolumeSource)
        io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FCVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FCVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.FCVolumeSource.class, io.kubernetes.client.proto.V1.FCVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.FCVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        targetWWNs_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        lun_ = 0;
        fsType_ = "";
        readOnly_ = false;
        wwids_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FCVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FCVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FCVolumeSource build() {
        io.kubernetes.client.proto.V1.FCVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FCVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.FCVolumeSource result = new io.kubernetes.client.proto.V1.FCVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.FCVolumeSource result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          targetWWNs_.makeImmutable();
          result.targetWWNs_ = targetWWNs_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.lun_ = lun_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          wwids_.makeImmutable();
          result.wwids_ = wwids_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.FCVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.FCVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.FCVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance()) return this;
        if (!other.targetWWNs_.isEmpty()) {
          if (targetWWNs_.isEmpty()) {
            targetWWNs_ = other.targetWWNs_;
            bitField0_ |= 0x00000001;
          } else {
            ensureTargetWWNsIsMutable();
            targetWWNs_.addAll(other.targetWWNs_);
          }
          onChanged();
        }
        if (other.hasLun()) {
          setLun(other.getLun());
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (!other.wwids_.isEmpty()) {
          if (wwids_.isEmpty()) {
            wwids_ = other.wwids_;
            bitField0_ |= 0x00000010;
          } else {
            ensureWwidsIsMutable();
            wwids_.addAll(other.wwids_);
          }
          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: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureTargetWWNsIsMutable();
                targetWWNs_.add(bs);
                break;
              } // case 10
              case 16: {
                lun_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureWwidsIsMutable();
                wwids_.add(bs);
                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 com.google.protobuf.LazyStringArrayList targetWWNs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureTargetWWNsIsMutable() {
        if (!targetWWNs_.isModifiable()) {
          targetWWNs_ = new com.google.protobuf.LazyStringArrayList(targetWWNs_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * targetWWNs is Optional: FC target worldwide names (WWNs)
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string targetWWNs = 1;</code>
       * @return A list containing the targetWWNs.
       */
      public com.google.protobuf.ProtocolStringList
          getTargetWWNsList() {
        targetWWNs_.makeImmutable();
        return targetWWNs_;
      }
      /**
       * <pre>
       * targetWWNs is Optional: FC target worldwide names (WWNs)
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string targetWWNs = 1;</code>
       * @return The count of targetWWNs.
       */
      public int getTargetWWNsCount() {
        return targetWWNs_.size();
      }
      /**
       * <pre>
       * targetWWNs is Optional: FC target worldwide names (WWNs)
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string targetWWNs = 1;</code>
       * @param index The index of the element to return.
       * @return The targetWWNs at the given index.
       */
      public java.lang.String getTargetWWNs(int index) {
        return targetWWNs_.get(index);
      }
      /**
       * <pre>
       * targetWWNs is Optional: FC target worldwide names (WWNs)
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string targetWWNs = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the targetWWNs at the given index.
       */
      public com.google.protobuf.ByteString
          getTargetWWNsBytes(int index) {
        return targetWWNs_.getByteString(index);
      }
      /**
       * <pre>
       * targetWWNs is Optional: FC target worldwide names (WWNs)
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string targetWWNs = 1;</code>
       * @param index The index to set the value at.
       * @param value The targetWWNs to set.
       * @return This builder for chaining.
       */
      public Builder setTargetWWNs(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTargetWWNsIsMutable();
        targetWWNs_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * targetWWNs is Optional: FC target worldwide names (WWNs)
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string targetWWNs = 1;</code>
       * @param value The targetWWNs to add.
       * @return This builder for chaining.
       */
      public Builder addTargetWWNs(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTargetWWNsIsMutable();
        targetWWNs_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * targetWWNs is Optional: FC target worldwide names (WWNs)
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string targetWWNs = 1;</code>
       * @param values The targetWWNs to add.
       * @return This builder for chaining.
       */
      public Builder addAllTargetWWNs(
          java.lang.Iterable<java.lang.String> values) {
        ensureTargetWWNsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, targetWWNs_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * targetWWNs is Optional: FC target worldwide names (WWNs)
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string targetWWNs = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetWWNs() {
        targetWWNs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * targetWWNs is Optional: FC target worldwide names (WWNs)
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string targetWWNs = 1;</code>
       * @param value The bytes of the targetWWNs to add.
       * @return This builder for chaining.
       */
      public Builder addTargetWWNsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTargetWWNsIsMutable();
        targetWWNs_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private int lun_ ;
      /**
       * <pre>
       * lun is Optional: FC target lun number
       * +optional
       * </pre>
       *
       * <code>optional int32 lun = 2;</code>
       * @return Whether the lun field is set.
       */
      @java.lang.Override
      public boolean hasLun() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * lun is Optional: FC target lun number
       * +optional
       * </pre>
       *
       * <code>optional int32 lun = 2;</code>
       * @return The lun.
       */
      @java.lang.Override
      public int getLun() {
        return lun_;
      }
      /**
       * <pre>
       * lun is Optional: FC target lun number
       * +optional
       * </pre>
       *
       * <code>optional int32 lun = 2;</code>
       * @param value The lun to set.
       * @return This builder for chaining.
       */
      public Builder setLun(int value) {

        lun_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lun is Optional: FC target lun number
       * +optional
       * </pre>
       *
       * <code>optional int32 lun = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLun() {
        bitField0_ = (bitField0_ & ~0x00000002);
        lun_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000008);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList wwids_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureWwidsIsMutable() {
        if (!wwids_.isModifiable()) {
          wwids_ = new com.google.protobuf.LazyStringArrayList(wwids_);
        }
        bitField0_ |= 0x00000010;
      }
      /**
       * <pre>
       * wwids Optional: FC volume world wide identifiers (wwids)
       * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string wwids = 5;</code>
       * @return A list containing the wwids.
       */
      public com.google.protobuf.ProtocolStringList
          getWwidsList() {
        wwids_.makeImmutable();
        return wwids_;
      }
      /**
       * <pre>
       * wwids Optional: FC volume world wide identifiers (wwids)
       * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string wwids = 5;</code>
       * @return The count of wwids.
       */
      public int getWwidsCount() {
        return wwids_.size();
      }
      /**
       * <pre>
       * wwids Optional: FC volume world wide identifiers (wwids)
       * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string wwids = 5;</code>
       * @param index The index of the element to return.
       * @return The wwids at the given index.
       */
      public java.lang.String getWwids(int index) {
        return wwids_.get(index);
      }
      /**
       * <pre>
       * wwids Optional: FC volume world wide identifiers (wwids)
       * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string wwids = 5;</code>
       * @param index The index of the value to return.
       * @return The bytes of the wwids at the given index.
       */
      public com.google.protobuf.ByteString
          getWwidsBytes(int index) {
        return wwids_.getByteString(index);
      }
      /**
       * <pre>
       * wwids Optional: FC volume world wide identifiers (wwids)
       * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string wwids = 5;</code>
       * @param index The index to set the value at.
       * @param value The wwids to set.
       * @return This builder for chaining.
       */
      public Builder setWwids(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureWwidsIsMutable();
        wwids_.set(index, value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * wwids Optional: FC volume world wide identifiers (wwids)
       * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string wwids = 5;</code>
       * @param value The wwids to add.
       * @return This builder for chaining.
       */
      public Builder addWwids(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureWwidsIsMutable();
        wwids_.add(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * wwids Optional: FC volume world wide identifiers (wwids)
       * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string wwids = 5;</code>
       * @param values The wwids to add.
       * @return This builder for chaining.
       */
      public Builder addAllWwids(
          java.lang.Iterable<java.lang.String> values) {
        ensureWwidsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, wwids_);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * wwids Optional: FC volume world wide identifiers (wwids)
       * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string wwids = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearWwids() {
        wwids_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * wwids Optional: FC volume world wide identifiers (wwids)
       * Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string wwids = 5;</code>
       * @param value The bytes of the wwids to add.
       * @return This builder for chaining.
       */
      public Builder addWwidsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureWwidsIsMutable();
        wwids_.add(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.FCVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.FCVolumeSource)
    private static final io.kubernetes.client.proto.V1.FCVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.FCVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.FCVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FCVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<FCVolumeSource>() {
      @java.lang.Override
      public FCVolumeSource 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<FCVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<FCVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.FCVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FlexPersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.FlexPersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return Whether the driver field is set.
     */
    boolean hasDriver();
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The driver.
     */
    java.lang.String getDriver();
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The bytes for driver.
     */
    com.google.protobuf.ByteString
        getDriverBytes();

    /**
     * <pre>
     * fsType is the Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getSecretRef();
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder();

    /**
     * <pre>
     * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    int getOptionsCount();
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    boolean containsOptions(
        java.lang.String key);
    /**
     * Use {@link #getOptionsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getOptions();
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getOptionsMap();
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    /* nullable */
java.lang.String getOptionsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    java.lang.String getOptionsOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * FlexPersistentVolumeSource represents a generic persistent volume resource that is
   * provisioned/attached using an exec based plugin.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.FlexPersistentVolumeSource}
   */
  public static final class FlexPersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.FlexPersistentVolumeSource)
      FlexPersistentVolumeSourceOrBuilder {
  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= */ "",
        FlexPersistentVolumeSource.class.getName());
    }
    // Use FlexPersistentVolumeSource.newBuilder() to construct.
    private FlexPersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private FlexPersistentVolumeSource() {
      driver_ = "";
      fsType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 5:
          return internalGetOptions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.class, io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int DRIVER_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object driver_ = "";
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return Whether the driver field is set.
     */
    @java.lang.Override
    public boolean hasDriver() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The driver.
     */
    @java.lang.Override
    public java.lang.String getDriver() {
      java.lang.Object ref = driver_;
      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()) {
          driver_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The bytes for driver.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDriverBytes() {
      java.lang.Object ref = driver_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        driver_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is the Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the Filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECRETREF_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.SecretReference secretRef_;
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef is Optional: SecretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }

    public static final int READONLY_FIELD_NUMBER = 4;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int OPTIONS_FIELD_NUMBER = 5;
    private static final class OptionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_OptionsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> options_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetOptions() {
      if (options_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            OptionsDefaultEntryHolder.defaultEntry);
      }
      return options_;
    }
    public int getOptionsCount() {
      return internalGetOptions().getMap().size();
    }
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    @java.lang.Override
    public boolean containsOptions(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetOptions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getOptionsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getOptions() {
      return getOptionsMap();
    }
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getOptionsMap() {
      return internalGetOptions().getMap();
    }
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getOptionsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetOptions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    @java.lang.Override
    public java.lang.String getOptionsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetOptions().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, driver_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getSecretRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, readOnly_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetOptions(),
          OptionsDefaultEntryHolder.defaultEntry,
          5);
      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, driver_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSecretRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, readOnly_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetOptions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        options__ = OptionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, options__);
      }
      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.V1.FlexPersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.FlexPersistentVolumeSource other = (io.kubernetes.client.proto.V1.FlexPersistentVolumeSource) obj;

      if (hasDriver() != other.hasDriver()) return false;
      if (hasDriver()) {
        if (!getDriver()
            .equals(other.getDriver())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (!internalGetOptions().equals(
          other.internalGetOptions())) 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 (hasDriver()) {
        hash = (37 * hash) + DRIVER_FIELD_NUMBER;
        hash = (53 * hash) + getDriver().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (!internalGetOptions().getMap().isEmpty()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetOptions().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.FlexPersistentVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FlexPersistentVolumeSource 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.V1.FlexPersistentVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FlexPersistentVolumeSource 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.V1.FlexPersistentVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FlexPersistentVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.FlexPersistentVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.FlexPersistentVolumeSource 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.V1.FlexPersistentVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.FlexPersistentVolumeSource 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.V1.FlexPersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.FlexPersistentVolumeSource 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.V1.FlexPersistentVolumeSource 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>
     * FlexPersistentVolumeSource represents a generic persistent volume resource that is
     * provisioned/attached using an exec based plugin.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.FlexPersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.FlexPersistentVolumeSource)
        io.kubernetes.client.proto.V1.FlexPersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 5:
            return internalGetOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 5:
            return internalGetMutableOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.class, io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        driver_ = "";
        fsType_ = "";
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        readOnly_ = false;
        internalGetMutableOptions().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FlexPersistentVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FlexPersistentVolumeSource build() {
        io.kubernetes.client.proto.V1.FlexPersistentVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FlexPersistentVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.FlexPersistentVolumeSource result = new io.kubernetes.client.proto.V1.FlexPersistentVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.FlexPersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.driver_ = driver_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.options_ = internalGetOptions();
          result.options_.makeImmutable();
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.FlexPersistentVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.FlexPersistentVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.FlexPersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.getDefaultInstance()) return this;
        if (other.hasDriver()) {
          driver_ = other.driver_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        internalGetMutableOptions().mergeFrom(
            other.internalGetOptions());
        bitField0_ |= 0x00000010;
        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: {
                driver_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                options__ = input.readMessage(
                    OptionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableOptions().getMutableMap().put(
                    options__.getKey(), options__.getValue());
                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 driver_ = "";
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return Whether the driver field is set.
       */
      public boolean hasDriver() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return The driver.
       */
      public java.lang.String getDriver() {
        java.lang.Object ref = driver_;
        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()) {
            driver_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return The bytes for driver.
       */
      public com.google.protobuf.ByteString
          getDriverBytes() {
        java.lang.Object ref = driver_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          driver_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @param value The driver to set.
       * @return This builder for chaining.
       */
      public Builder setDriver(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        driver_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDriver() {
        driver_ = getDefaultInstance().getDriver();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @param value The bytes for driver to set.
       * @return This builder for chaining.
       */
      public Builder setDriverBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        driver_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * fsType is the Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the Filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SecretReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000004);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef is Optional: SecretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000008);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> options_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetOptions() {
        if (options_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              OptionsDefaultEntryHolder.defaultEntry);
        }
        return options_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableOptions() {
        if (options_ == null) {
          options_ = com.google.protobuf.MapField.newMapField(
              OptionsDefaultEntryHolder.defaultEntry);
        }
        if (!options_.isMutable()) {
          options_ = options_.copy();
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return options_;
      }
      public int getOptionsCount() {
        return internalGetOptions().getMap().size();
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      @java.lang.Override
      public boolean containsOptions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetOptions().getMap().containsKey(key);
      }
      /**
       * Use {@link #getOptionsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getOptions() {
        return getOptionsMap();
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getOptionsMap() {
        return internalGetOptions().getMap();
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getOptionsOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetOptions().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      @java.lang.Override
      public java.lang.String getOptionsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetOptions().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000010);
        internalGetMutableOptions().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      public Builder removeOptions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableOptions().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableOptions() {
        bitField0_ |= 0x00000010;
        return internalGetMutableOptions().getMutableMap();
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      public Builder putOptions(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableOptions().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      public Builder putAllOptions(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableOptions().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000010;
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.FlexPersistentVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.FlexPersistentVolumeSource)
    private static final io.kubernetes.client.proto.V1.FlexPersistentVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.FlexPersistentVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.FlexPersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FlexPersistentVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<FlexPersistentVolumeSource>() {
      @java.lang.Override
      public FlexPersistentVolumeSource 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<FlexPersistentVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<FlexPersistentVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlexPersistentVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FlexVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.FlexVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return Whether the driver field is set.
     */
    boolean hasDriver();
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The driver.
     */
    java.lang.String getDriver();
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The bytes for driver.
     */
    com.google.protobuf.ByteString
        getDriverBytes();

    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * secretRef is Optional: secretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef is Optional: secretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef();
    /**
     * <pre>
     * secretRef is Optional: secretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder();

    /**
     * <pre>
     * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    int getOptionsCount();
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    boolean containsOptions(
        java.lang.String key);
    /**
     * Use {@link #getOptionsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getOptions();
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getOptionsMap();
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    /* nullable */
java.lang.String getOptionsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    java.lang.String getOptionsOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * FlexVolume represents a generic volume resource that is
   * provisioned/attached using an exec based plugin.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.FlexVolumeSource}
   */
  public static final class FlexVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.FlexVolumeSource)
      FlexVolumeSourceOrBuilder {
  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= */ "",
        FlexVolumeSource.class.getName());
    }
    // Use FlexVolumeSource.newBuilder() to construct.
    private FlexVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private FlexVolumeSource() {
      driver_ = "";
      fsType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexVolumeSource_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 5:
          return internalGetOptions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.FlexVolumeSource.class, io.kubernetes.client.proto.V1.FlexVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int DRIVER_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object driver_ = "";
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return Whether the driver field is set.
     */
    @java.lang.Override
    public boolean hasDriver() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The driver.
     */
    @java.lang.Override
    public java.lang.String getDriver() {
      java.lang.Object ref = driver_;
      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()) {
          driver_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * driver is the name of the driver to use for this volume.
     * </pre>
     *
     * <code>optional string driver = 1;</code>
     * @return The bytes for driver.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDriverBytes() {
      java.lang.Object ref = driver_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        driver_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECRETREF_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
    /**
     * <pre>
     * secretRef is Optional: secretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * secretRef is Optional: secretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef is Optional: secretRef is reference to the secret object containing
     * sensitive information to pass to the plugin scripts. This may be
     * empty if no secret object is specified. If the secret object
     * contains more than one secret, all secrets are passed to the plugin
     * scripts.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }

    public static final int READONLY_FIELD_NUMBER = 4;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int OPTIONS_FIELD_NUMBER = 5;
    private static final class OptionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexVolumeSource_OptionsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> options_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetOptions() {
      if (options_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            OptionsDefaultEntryHolder.defaultEntry);
      }
      return options_;
    }
    public int getOptionsCount() {
      return internalGetOptions().getMap().size();
    }
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    @java.lang.Override
    public boolean containsOptions(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetOptions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getOptionsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getOptions() {
      return getOptionsMap();
    }
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getOptionsMap() {
      return internalGetOptions().getMap();
    }
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getOptionsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetOptions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * options is Optional: this field holds extra command options if any.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 5;</code>
     */
    @java.lang.Override
    public java.lang.String getOptionsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetOptions().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, driver_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getSecretRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, readOnly_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetOptions(),
          OptionsDefaultEntryHolder.defaultEntry,
          5);
      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, driver_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSecretRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, readOnly_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetOptions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        options__ = OptionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, options__);
      }
      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.V1.FlexVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.FlexVolumeSource other = (io.kubernetes.client.proto.V1.FlexVolumeSource) obj;

      if (hasDriver() != other.hasDriver()) return false;
      if (hasDriver()) {
        if (!getDriver()
            .equals(other.getDriver())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (!internalGetOptions().equals(
          other.internalGetOptions())) 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 (hasDriver()) {
        hash = (37 * hash) + DRIVER_FIELD_NUMBER;
        hash = (53 * hash) + getDriver().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (!internalGetOptions().getMap().isEmpty()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetOptions().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.FlexVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FlexVolumeSource 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.V1.FlexVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FlexVolumeSource 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.V1.FlexVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FlexVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.FlexVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.FlexVolumeSource 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.V1.FlexVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.FlexVolumeSource 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.V1.FlexVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.FlexVolumeSource 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.V1.FlexVolumeSource 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>
     * FlexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.FlexVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.FlexVolumeSource)
        io.kubernetes.client.proto.V1.FlexVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexVolumeSource_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 5:
            return internalGetOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 5:
            return internalGetMutableOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.FlexVolumeSource.class, io.kubernetes.client.proto.V1.FlexVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.FlexVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        driver_ = "";
        fsType_ = "";
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        readOnly_ = false;
        internalGetMutableOptions().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlexVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FlexVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.FlexVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FlexVolumeSource build() {
        io.kubernetes.client.proto.V1.FlexVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FlexVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.FlexVolumeSource result = new io.kubernetes.client.proto.V1.FlexVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.FlexVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.driver_ = driver_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.options_ = internalGetOptions();
          result.options_.makeImmutable();
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.FlexVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.FlexVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.FlexVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.FlexVolumeSource.getDefaultInstance()) return this;
        if (other.hasDriver()) {
          driver_ = other.driver_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        internalGetMutableOptions().mergeFrom(
            other.internalGetOptions());
        bitField0_ |= 0x00000010;
        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: {
                driver_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                options__ = input.readMessage(
                    OptionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableOptions().getMutableMap().put(
                    options__.getKey(), options__.getValue());
                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 driver_ = "";
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return Whether the driver field is set.
       */
      public boolean hasDriver() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return The driver.
       */
      public java.lang.String getDriver() {
        java.lang.Object ref = driver_;
        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()) {
            driver_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return The bytes for driver.
       */
      public com.google.protobuf.ByteString
          getDriverBytes() {
        java.lang.Object ref = driver_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          driver_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @param value The driver to set.
       * @return This builder for chaining.
       */
      public Builder setDriver(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        driver_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDriver() {
        driver_ = getDefaultInstance().getDriver();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * driver is the name of the driver to use for this volume.
       * </pre>
       *
       * <code>optional string driver = 1;</code>
       * @param value The bytes for driver to set.
       * @return This builder for chaining.
       */
      public Builder setDriverBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        driver_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef is Optional: secretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * secretRef is Optional: secretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef is Optional: secretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: secretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: secretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: secretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000004);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is Optional: secretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef is Optional: secretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef is Optional: secretRef is reference to the secret object containing
       * sensitive information to pass to the plugin scripts. This may be
       * empty if no secret object is specified. If the secret object
       * contains more than one secret, all secrets are passed to the plugin
       * scripts.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly is Optional: defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000008);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> options_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetOptions() {
        if (options_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              OptionsDefaultEntryHolder.defaultEntry);
        }
        return options_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableOptions() {
        if (options_ == null) {
          options_ = com.google.protobuf.MapField.newMapField(
              OptionsDefaultEntryHolder.defaultEntry);
        }
        if (!options_.isMutable()) {
          options_ = options_.copy();
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return options_;
      }
      public int getOptionsCount() {
        return internalGetOptions().getMap().size();
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      @java.lang.Override
      public boolean containsOptions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetOptions().getMap().containsKey(key);
      }
      /**
       * Use {@link #getOptionsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getOptions() {
        return getOptionsMap();
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getOptionsMap() {
        return internalGetOptions().getMap();
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getOptionsOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetOptions().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      @java.lang.Override
      public java.lang.String getOptionsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetOptions().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000010);
        internalGetMutableOptions().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      public Builder removeOptions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableOptions().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableOptions() {
        bitField0_ |= 0x00000010;
        return internalGetMutableOptions().getMutableMap();
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      public Builder putOptions(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableOptions().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * options is Optional: this field holds extra command options if any.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 5;</code>
       */
      public Builder putAllOptions(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableOptions().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000010;
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.FlexVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.FlexVolumeSource)
    private static final io.kubernetes.client.proto.V1.FlexVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.FlexVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.FlexVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FlexVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<FlexVolumeSource>() {
      @java.lang.Override
      public FlexVolumeSource 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<FlexVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<FlexVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlexVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FlockerVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.FlockerVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
     * should be considered as deprecated
     * +optional
     * </pre>
     *
     * <code>optional string datasetName = 1;</code>
     * @return Whether the datasetName field is set.
     */
    boolean hasDatasetName();
    /**
     * <pre>
     * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
     * should be considered as deprecated
     * +optional
     * </pre>
     *
     * <code>optional string datasetName = 1;</code>
     * @return The datasetName.
     */
    java.lang.String getDatasetName();
    /**
     * <pre>
     * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
     * should be considered as deprecated
     * +optional
     * </pre>
     *
     * <code>optional string datasetName = 1;</code>
     * @return The bytes for datasetName.
     */
    com.google.protobuf.ByteString
        getDatasetNameBytes();

    /**
     * <pre>
     * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
     * +optional
     * </pre>
     *
     * <code>optional string datasetUUID = 2;</code>
     * @return Whether the datasetUUID field is set.
     */
    boolean hasDatasetUUID();
    /**
     * <pre>
     * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
     * +optional
     * </pre>
     *
     * <code>optional string datasetUUID = 2;</code>
     * @return The datasetUUID.
     */
    java.lang.String getDatasetUUID();
    /**
     * <pre>
     * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
     * +optional
     * </pre>
     *
     * <code>optional string datasetUUID = 2;</code>
     * @return The bytes for datasetUUID.
     */
    com.google.protobuf.ByteString
        getDatasetUUIDBytes();
  }
  /**
   * <pre>
   * Represents a Flocker volume mounted by the Flocker agent.
   * One and only one of datasetName and datasetUUID should be set.
   * Flocker volumes do not support ownership management or SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.FlockerVolumeSource}
   */
  public static final class FlockerVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.FlockerVolumeSource)
      FlockerVolumeSourceOrBuilder {
  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= */ "",
        FlockerVolumeSource.class.getName());
    }
    // Use FlockerVolumeSource.newBuilder() to construct.
    private FlockerVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private FlockerVolumeSource() {
      datasetName_ = "";
      datasetUUID_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlockerVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlockerVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.FlockerVolumeSource.class, io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int DATASETNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object datasetName_ = "";
    /**
     * <pre>
     * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
     * should be considered as deprecated
     * +optional
     * </pre>
     *
     * <code>optional string datasetName = 1;</code>
     * @return Whether the datasetName field is set.
     */
    @java.lang.Override
    public boolean hasDatasetName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
     * should be considered as deprecated
     * +optional
     * </pre>
     *
     * <code>optional string datasetName = 1;</code>
     * @return The datasetName.
     */
    @java.lang.Override
    public java.lang.String getDatasetName() {
      java.lang.Object ref = datasetName_;
      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()) {
          datasetName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
     * should be considered as deprecated
     * +optional
     * </pre>
     *
     * <code>optional string datasetName = 1;</code>
     * @return The bytes for datasetName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDatasetNameBytes() {
      java.lang.Object ref = datasetName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        datasetName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATASETUUID_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object datasetUUID_ = "";
    /**
     * <pre>
     * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
     * +optional
     * </pre>
     *
     * <code>optional string datasetUUID = 2;</code>
     * @return Whether the datasetUUID field is set.
     */
    @java.lang.Override
    public boolean hasDatasetUUID() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
     * +optional
     * </pre>
     *
     * <code>optional string datasetUUID = 2;</code>
     * @return The datasetUUID.
     */
    @java.lang.Override
    public java.lang.String getDatasetUUID() {
      java.lang.Object ref = datasetUUID_;
      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()) {
          datasetUUID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
     * +optional
     * </pre>
     *
     * <code>optional string datasetUUID = 2;</code>
     * @return The bytes for datasetUUID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDatasetUUIDBytes() {
      java.lang.Object ref = datasetUUID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        datasetUUID_ = 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, datasetName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, datasetUUID_);
      }
      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, datasetName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, datasetUUID_);
      }
      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.V1.FlockerVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.FlockerVolumeSource other = (io.kubernetes.client.proto.V1.FlockerVolumeSource) obj;

      if (hasDatasetName() != other.hasDatasetName()) return false;
      if (hasDatasetName()) {
        if (!getDatasetName()
            .equals(other.getDatasetName())) return false;
      }
      if (hasDatasetUUID() != other.hasDatasetUUID()) return false;
      if (hasDatasetUUID()) {
        if (!getDatasetUUID()
            .equals(other.getDatasetUUID())) 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 (hasDatasetName()) {
        hash = (37 * hash) + DATASETNAME_FIELD_NUMBER;
        hash = (53 * hash) + getDatasetName().hashCode();
      }
      if (hasDatasetUUID()) {
        hash = (37 * hash) + DATASETUUID_FIELD_NUMBER;
        hash = (53 * hash) + getDatasetUUID().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.FlockerVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FlockerVolumeSource 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.V1.FlockerVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FlockerVolumeSource 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.V1.FlockerVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.FlockerVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.FlockerVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.FlockerVolumeSource 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.V1.FlockerVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.FlockerVolumeSource 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.V1.FlockerVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.FlockerVolumeSource 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.V1.FlockerVolumeSource 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>
     * Represents a Flocker volume mounted by the Flocker agent.
     * One and only one of datasetName and datasetUUID should be set.
     * Flocker volumes do not support ownership management or SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.FlockerVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.FlockerVolumeSource)
        io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlockerVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlockerVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.FlockerVolumeSource.class, io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.FlockerVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        datasetName_ = "";
        datasetUUID_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_FlockerVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FlockerVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FlockerVolumeSource build() {
        io.kubernetes.client.proto.V1.FlockerVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.FlockerVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.FlockerVolumeSource result = new io.kubernetes.client.proto.V1.FlockerVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.FlockerVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.datasetName_ = datasetName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.datasetUUID_ = datasetUUID_;
          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.V1.FlockerVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.FlockerVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.FlockerVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance()) return this;
        if (other.hasDatasetName()) {
          datasetName_ = other.datasetName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasDatasetUUID()) {
          datasetUUID_ = other.datasetUUID_;
          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: {
                datasetName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                datasetUUID_ = 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 datasetName_ = "";
      /**
       * <pre>
       * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
       * should be considered as deprecated
       * +optional
       * </pre>
       *
       * <code>optional string datasetName = 1;</code>
       * @return Whether the datasetName field is set.
       */
      public boolean hasDatasetName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
       * should be considered as deprecated
       * +optional
       * </pre>
       *
       * <code>optional string datasetName = 1;</code>
       * @return The datasetName.
       */
      public java.lang.String getDatasetName() {
        java.lang.Object ref = datasetName_;
        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()) {
            datasetName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
       * should be considered as deprecated
       * +optional
       * </pre>
       *
       * <code>optional string datasetName = 1;</code>
       * @return The bytes for datasetName.
       */
      public com.google.protobuf.ByteString
          getDatasetNameBytes() {
        java.lang.Object ref = datasetName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          datasetName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
       * should be considered as deprecated
       * +optional
       * </pre>
       *
       * <code>optional string datasetName = 1;</code>
       * @param value The datasetName to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        datasetName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
       * should be considered as deprecated
       * +optional
       * </pre>
       *
       * <code>optional string datasetName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatasetName() {
        datasetName_ = getDefaultInstance().getDatasetName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker
       * should be considered as deprecated
       * +optional
       * </pre>
       *
       * <code>optional string datasetName = 1;</code>
       * @param value The bytes for datasetName to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        datasetName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object datasetUUID_ = "";
      /**
       * <pre>
       * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
       * +optional
       * </pre>
       *
       * <code>optional string datasetUUID = 2;</code>
       * @return Whether the datasetUUID field is set.
       */
      public boolean hasDatasetUUID() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
       * +optional
       * </pre>
       *
       * <code>optional string datasetUUID = 2;</code>
       * @return The datasetUUID.
       */
      public java.lang.String getDatasetUUID() {
        java.lang.Object ref = datasetUUID_;
        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()) {
            datasetUUID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
       * +optional
       * </pre>
       *
       * <code>optional string datasetUUID = 2;</code>
       * @return The bytes for datasetUUID.
       */
      public com.google.protobuf.ByteString
          getDatasetUUIDBytes() {
        java.lang.Object ref = datasetUUID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          datasetUUID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
       * +optional
       * </pre>
       *
       * <code>optional string datasetUUID = 2;</code>
       * @param value The datasetUUID to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetUUID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        datasetUUID_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
       * +optional
       * </pre>
       *
       * <code>optional string datasetUUID = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatasetUUID() {
        datasetUUID_ = getDefaultInstance().getDatasetUUID();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset
       * +optional
       * </pre>
       *
       * <code>optional string datasetUUID = 2;</code>
       * @param value The bytes for datasetUUID to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetUUIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        datasetUUID_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.FlockerVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.FlockerVolumeSource)
    private static final io.kubernetes.client.proto.V1.FlockerVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.FlockerVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.FlockerVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FlockerVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<FlockerVolumeSource>() {
      @java.lang.Override
      public FlockerVolumeSource 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<FlockerVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<FlockerVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlockerVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GCEPersistentDiskVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.GCEPersistentDiskVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * </pre>
     *
     * <code>optional string pdName = 1;</code>
     * @return Whether the pdName field is set.
     */
    boolean hasPdName();
    /**
     * <pre>
     * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * </pre>
     *
     * <code>optional string pdName = 1;</code>
     * @return The pdName.
     */
    java.lang.String getPdName();
    /**
     * <pre>
     * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * </pre>
     *
     * <code>optional string pdName = 1;</code>
     * @return The bytes for pdName.
     */
    com.google.protobuf.ByteString
        getPdNameBytes();

    /**
     * <pre>
     * fsType is filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * partition is the partition in the volume that you want to mount.
     * If omitted, the default is to mount by volume name.
     * Examples: For volume /dev/sda1, you specify the partition as "1".
     * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional int32 partition = 3;</code>
     * @return Whether the partition field is set.
     */
    boolean hasPartition();
    /**
     * <pre>
     * partition is the partition in the volume that you want to mount.
     * If omitted, the default is to mount by volume name.
     * Examples: For volume /dev/sda1, you specify the partition as "1".
     * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional int32 partition = 3;</code>
     * @return The partition.
     */
    int getPartition();

    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * Represents a Persistent Disk resource in Google Compute Engine.
   *
   * A GCE PD must exist before mounting to a container. The disk must
   * also be in the same GCE project and zone as the kubelet. A GCE PD
   * can only be mounted as read/write once or read-only many times. GCE
   * PDs support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.GCEPersistentDiskVolumeSource}
   */
  public static final class GCEPersistentDiskVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.GCEPersistentDiskVolumeSource)
      GCEPersistentDiskVolumeSourceOrBuilder {
  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= */ "",
        GCEPersistentDiskVolumeSource.class.getName());
    }
    // Use GCEPersistentDiskVolumeSource.newBuilder() to construct.
    private GCEPersistentDiskVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private GCEPersistentDiskVolumeSource() {
      pdName_ = "";
      fsType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GCEPersistentDiskVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GCEPersistentDiskVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.class, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int PDNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object pdName_ = "";
    /**
     * <pre>
     * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * </pre>
     *
     * <code>optional string pdName = 1;</code>
     * @return Whether the pdName field is set.
     */
    @java.lang.Override
    public boolean hasPdName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * </pre>
     *
     * <code>optional string pdName = 1;</code>
     * @return The pdName.
     */
    @java.lang.Override
    public java.lang.String getPdName() {
      java.lang.Object ref = pdName_;
      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()) {
          pdName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * </pre>
     *
     * <code>optional string pdName = 1;</code>
     * @return The bytes for pdName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPdNameBytes() {
      java.lang.Object ref = pdName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pdName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PARTITION_FIELD_NUMBER = 3;
    private int partition_ = 0;
    /**
     * <pre>
     * partition is the partition in the volume that you want to mount.
     * If omitted, the default is to mount by volume name.
     * Examples: For volume /dev/sda1, you specify the partition as "1".
     * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional int32 partition = 3;</code>
     * @return Whether the partition field is set.
     */
    @java.lang.Override
    public boolean hasPartition() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * partition is the partition in the volume that you want to mount.
     * If omitted, the default is to mount by volume name.
     * Examples: For volume /dev/sda1, you specify the partition as "1".
     * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional int32 partition = 3;</code>
     * @return The partition.
     */
    @java.lang.Override
    public int getPartition() {
      return partition_;
    }

    public static final int READONLY_FIELD_NUMBER = 4;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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, pdName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, partition_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, readOnly_);
      }
      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, pdName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, partition_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, readOnly_);
      }
      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.V1.GCEPersistentDiskVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource other = (io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource) obj;

      if (hasPdName() != other.hasPdName()) return false;
      if (hasPdName()) {
        if (!getPdName()
            .equals(other.getPdName())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasPartition() != other.hasPartition()) return false;
      if (hasPartition()) {
        if (getPartition()
            != other.getPartition()) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (hasPdName()) {
        hash = (37 * hash) + PDNAME_FIELD_NUMBER;
        hash = (53 * hash) + getPdName().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasPartition()) {
        hash = (37 * hash) + PARTITION_FIELD_NUMBER;
        hash = (53 * hash) + getPartition();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource 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.V1.GCEPersistentDiskVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource 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.V1.GCEPersistentDiskVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource 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.V1.GCEPersistentDiskVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource 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.V1.GCEPersistentDiskVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource 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.V1.GCEPersistentDiskVolumeSource 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>
     * Represents a Persistent Disk resource in Google Compute Engine.
     *
     * A GCE PD must exist before mounting to a container. The disk must
     * also be in the same GCE project and zone as the kubelet. A GCE PD
     * can only be mounted as read/write once or read-only many times. GCE
     * PDs support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.GCEPersistentDiskVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.GCEPersistentDiskVolumeSource)
        io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GCEPersistentDiskVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GCEPersistentDiskVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.class, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        pdName_ = "";
        fsType_ = "";
        partition_ = 0;
        readOnly_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GCEPersistentDiskVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource build() {
        io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource result = new io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.pdName_ = pdName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.partition_ = partition_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.GCEPersistentDiskVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance()) return this;
        if (other.hasPdName()) {
          pdName_ = other.pdName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasPartition()) {
          setPartition(other.getPartition());
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        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: {
                pdName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                partition_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                readOnly_ = input.readBool();
                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 pdName_ = "";
      /**
       * <pre>
       * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * </pre>
       *
       * <code>optional string pdName = 1;</code>
       * @return Whether the pdName field is set.
       */
      public boolean hasPdName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * </pre>
       *
       * <code>optional string pdName = 1;</code>
       * @return The pdName.
       */
      public java.lang.String getPdName() {
        java.lang.Object ref = pdName_;
        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()) {
            pdName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * </pre>
       *
       * <code>optional string pdName = 1;</code>
       * @return The bytes for pdName.
       */
      public com.google.protobuf.ByteString
          getPdNameBytes() {
        java.lang.Object ref = pdName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pdName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * </pre>
       *
       * <code>optional string pdName = 1;</code>
       * @param value The pdName to set.
       * @return This builder for chaining.
       */
      public Builder setPdName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        pdName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * </pre>
       *
       * <code>optional string pdName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPdName() {
        pdName_ = getDefaultInstance().getPdName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * </pre>
       *
       * <code>optional string pdName = 1;</code>
       * @param value The bytes for pdName to set.
       * @return This builder for chaining.
       */
      public Builder setPdNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        pdName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * fsType is filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private int partition_ ;
      /**
       * <pre>
       * partition is the partition in the volume that you want to mount.
       * If omitted, the default is to mount by volume name.
       * Examples: For volume /dev/sda1, you specify the partition as "1".
       * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional int32 partition = 3;</code>
       * @return Whether the partition field is set.
       */
      @java.lang.Override
      public boolean hasPartition() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * partition is the partition in the volume that you want to mount.
       * If omitted, the default is to mount by volume name.
       * Examples: For volume /dev/sda1, you specify the partition as "1".
       * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional int32 partition = 3;</code>
       * @return The partition.
       */
      @java.lang.Override
      public int getPartition() {
        return partition_;
      }
      /**
       * <pre>
       * partition is the partition in the volume that you want to mount.
       * If omitted, the default is to mount by volume name.
       * Examples: For volume /dev/sda1, you specify the partition as "1".
       * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional int32 partition = 3;</code>
       * @param value The partition to set.
       * @return This builder for chaining.
       */
      public Builder setPartition(int value) {

        partition_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * partition is the partition in the volume that you want to mount.
       * If omitted, the default is to mount by volume name.
       * Examples: For volume /dev/sda1, you specify the partition as "1".
       * Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional int32 partition = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPartition() {
        bitField0_ = (bitField0_ & ~0x00000004);
        partition_ = 0;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000008);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.GCEPersistentDiskVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.GCEPersistentDiskVolumeSource)
    private static final io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GCEPersistentDiskVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<GCEPersistentDiskVolumeSource>() {
      @java.lang.Override
      public GCEPersistentDiskVolumeSource 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<GCEPersistentDiskVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GCEPersistentDiskVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GRPCActionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.GRPCAction)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Port number of the gRPC service. Number must be in the range 1 to 65535.
     * </pre>
     *
     * <code>optional int32 port = 1;</code>
     * @return Whether the port field is set.
     */
    boolean hasPort();
    /**
     * <pre>
     * Port number of the gRPC service. Number must be in the range 1 to 65535.
     * </pre>
     *
     * <code>optional int32 port = 1;</code>
     * @return The port.
     */
    int getPort();

    /**
     * <pre>
     * Service is the name of the service to place in the gRPC HealthCheckRequest
     * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
     *
     * If this is not specified, the default behavior is defined by gRPC.
     * +optional
     * +default=""
     * </pre>
     *
     * <code>optional string service = 2;</code>
     * @return Whether the service field is set.
     */
    boolean hasService();
    /**
     * <pre>
     * Service is the name of the service to place in the gRPC HealthCheckRequest
     * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
     *
     * If this is not specified, the default behavior is defined by gRPC.
     * +optional
     * +default=""
     * </pre>
     *
     * <code>optional string service = 2;</code>
     * @return The service.
     */
    java.lang.String getService();
    /**
     * <pre>
     * Service is the name of the service to place in the gRPC HealthCheckRequest
     * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
     *
     * If this is not specified, the default behavior is defined by gRPC.
     * +optional
     * +default=""
     * </pre>
     *
     * <code>optional string service = 2;</code>
     * @return The bytes for service.
     */
    com.google.protobuf.ByteString
        getServiceBytes();
  }
  /**
   * Protobuf type {@code k8s.io.api.core.v1.GRPCAction}
   */
  public static final class GRPCAction extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.GRPCAction)
      GRPCActionOrBuilder {
  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= */ "",
        GRPCAction.class.getName());
    }
    // Use GRPCAction.newBuilder() to construct.
    private GRPCAction(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private GRPCAction() {
      service_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GRPCAction_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GRPCAction_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.GRPCAction.class, io.kubernetes.client.proto.V1.GRPCAction.Builder.class);
    }

    private int bitField0_;
    public static final int PORT_FIELD_NUMBER = 1;
    private int port_ = 0;
    /**
     * <pre>
     * Port number of the gRPC service. Number must be in the range 1 to 65535.
     * </pre>
     *
     * <code>optional int32 port = 1;</code>
     * @return Whether the port field is set.
     */
    @java.lang.Override
    public boolean hasPort() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Port number of the gRPC service. Number must be in the range 1 to 65535.
     * </pre>
     *
     * <code>optional int32 port = 1;</code>
     * @return The port.
     */
    @java.lang.Override
    public int getPort() {
      return port_;
    }

    public static final int SERVICE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object service_ = "";
    /**
     * <pre>
     * Service is the name of the service to place in the gRPC HealthCheckRequest
     * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
     *
     * If this is not specified, the default behavior is defined by gRPC.
     * +optional
     * +default=""
     * </pre>
     *
     * <code>optional string service = 2;</code>
     * @return Whether the service field is set.
     */
    @java.lang.Override
    public boolean hasService() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Service is the name of the service to place in the gRPC HealthCheckRequest
     * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
     *
     * If this is not specified, the default behavior is defined by gRPC.
     * +optional
     * +default=""
     * </pre>
     *
     * <code>optional string service = 2;</code>
     * @return The service.
     */
    @java.lang.Override
    public java.lang.String getService() {
      java.lang.Object ref = service_;
      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()) {
          service_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Service is the name of the service to place in the gRPC HealthCheckRequest
     * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
     *
     * If this is not specified, the default behavior is defined by gRPC.
     * +optional
     * +default=""
     * </pre>
     *
     * <code>optional string service = 2;</code>
     * @return The bytes for service.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getServiceBytes() {
      java.lang.Object ref = service_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        service_ = 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)) {
        output.writeInt32(1, port_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, service_);
      }
      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
          .computeInt32Size(1, port_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, service_);
      }
      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.V1.GRPCAction)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.GRPCAction other = (io.kubernetes.client.proto.V1.GRPCAction) obj;

      if (hasPort() != other.hasPort()) return false;
      if (hasPort()) {
        if (getPort()
            != other.getPort()) return false;
      }
      if (hasService() != other.hasService()) return false;
      if (hasService()) {
        if (!getService()
            .equals(other.getService())) 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 (hasPort()) {
        hash = (37 * hash) + PORT_FIELD_NUMBER;
        hash = (53 * hash) + getPort();
      }
      if (hasService()) {
        hash = (37 * hash) + SERVICE_FIELD_NUMBER;
        hash = (53 * hash) + getService().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.GRPCAction parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GRPCAction 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.V1.GRPCAction parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GRPCAction 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.V1.GRPCAction parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GRPCAction parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.GRPCAction parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.GRPCAction 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.V1.GRPCAction parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.GRPCAction 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.V1.GRPCAction parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.GRPCAction 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.V1.GRPCAction 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;
    }
    /**
     * Protobuf type {@code k8s.io.api.core.v1.GRPCAction}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.GRPCAction)
        io.kubernetes.client.proto.V1.GRPCActionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GRPCAction_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GRPCAction_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.GRPCAction.class, io.kubernetes.client.proto.V1.GRPCAction.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.GRPCAction.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        port_ = 0;
        service_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GRPCAction_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GRPCAction getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.GRPCAction.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GRPCAction build() {
        io.kubernetes.client.proto.V1.GRPCAction result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GRPCAction buildPartial() {
        io.kubernetes.client.proto.V1.GRPCAction result = new io.kubernetes.client.proto.V1.GRPCAction(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.GRPCAction result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.port_ = port_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.service_ = service_;
          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.V1.GRPCAction) {
          return mergeFrom((io.kubernetes.client.proto.V1.GRPCAction)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.GRPCAction other) {
        if (other == io.kubernetes.client.proto.V1.GRPCAction.getDefaultInstance()) return this;
        if (other.hasPort()) {
          setPort(other.getPort());
        }
        if (other.hasService()) {
          service_ = other.service_;
          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 8: {
                port_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                service_ = 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 int port_ ;
      /**
       * <pre>
       * Port number of the gRPC service. Number must be in the range 1 to 65535.
       * </pre>
       *
       * <code>optional int32 port = 1;</code>
       * @return Whether the port field is set.
       */
      @java.lang.Override
      public boolean hasPort() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Port number of the gRPC service. Number must be in the range 1 to 65535.
       * </pre>
       *
       * <code>optional int32 port = 1;</code>
       * @return The port.
       */
      @java.lang.Override
      public int getPort() {
        return port_;
      }
      /**
       * <pre>
       * Port number of the gRPC service. Number must be in the range 1 to 65535.
       * </pre>
       *
       * <code>optional int32 port = 1;</code>
       * @param value The port to set.
       * @return This builder for chaining.
       */
      public Builder setPort(int value) {

        port_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Port number of the gRPC service. Number must be in the range 1 to 65535.
       * </pre>
       *
       * <code>optional int32 port = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        bitField0_ = (bitField0_ & ~0x00000001);
        port_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object service_ = "";
      /**
       * <pre>
       * Service is the name of the service to place in the gRPC HealthCheckRequest
       * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
       *
       * If this is not specified, the default behavior is defined by gRPC.
       * +optional
       * +default=""
       * </pre>
       *
       * <code>optional string service = 2;</code>
       * @return Whether the service field is set.
       */
      public boolean hasService() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Service is the name of the service to place in the gRPC HealthCheckRequest
       * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
       *
       * If this is not specified, the default behavior is defined by gRPC.
       * +optional
       * +default=""
       * </pre>
       *
       * <code>optional string service = 2;</code>
       * @return The service.
       */
      public java.lang.String getService() {
        java.lang.Object ref = service_;
        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()) {
            service_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Service is the name of the service to place in the gRPC HealthCheckRequest
       * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
       *
       * If this is not specified, the default behavior is defined by gRPC.
       * +optional
       * +default=""
       * </pre>
       *
       * <code>optional string service = 2;</code>
       * @return The bytes for service.
       */
      public com.google.protobuf.ByteString
          getServiceBytes() {
        java.lang.Object ref = service_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          service_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Service is the name of the service to place in the gRPC HealthCheckRequest
       * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
       *
       * If this is not specified, the default behavior is defined by gRPC.
       * +optional
       * +default=""
       * </pre>
       *
       * <code>optional string service = 2;</code>
       * @param value The service to set.
       * @return This builder for chaining.
       */
      public Builder setService(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        service_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Service is the name of the service to place in the gRPC HealthCheckRequest
       * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
       *
       * If this is not specified, the default behavior is defined by gRPC.
       * +optional
       * +default=""
       * </pre>
       *
       * <code>optional string service = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearService() {
        service_ = getDefaultInstance().getService();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Service is the name of the service to place in the gRPC HealthCheckRequest
       * (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
       *
       * If this is not specified, the default behavior is defined by gRPC.
       * +optional
       * +default=""
       * </pre>
       *
       * <code>optional string service = 2;</code>
       * @param value The bytes for service to set.
       * @return This builder for chaining.
       */
      public Builder setServiceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        service_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.GRPCAction)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.GRPCAction)
    private static final io.kubernetes.client.proto.V1.GRPCAction DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.GRPCAction();
    }

    public static io.kubernetes.client.proto.V1.GRPCAction getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GRPCAction>
        PARSER = new com.google.protobuf.AbstractParser<GRPCAction>() {
      @java.lang.Override
      public GRPCAction 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<GRPCAction> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GRPCAction> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.GRPCAction getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GitRepoVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.GitRepoVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * repository is the URL
     * </pre>
     *
     * <code>optional string repository = 1;</code>
     * @return Whether the repository field is set.
     */
    boolean hasRepository();
    /**
     * <pre>
     * repository is the URL
     * </pre>
     *
     * <code>optional string repository = 1;</code>
     * @return The repository.
     */
    java.lang.String getRepository();
    /**
     * <pre>
     * repository is the URL
     * </pre>
     *
     * <code>optional string repository = 1;</code>
     * @return The bytes for repository.
     */
    com.google.protobuf.ByteString
        getRepositoryBytes();

    /**
     * <pre>
     * revision is the commit hash for the specified revision.
     * +optional
     * </pre>
     *
     * <code>optional string revision = 2;</code>
     * @return Whether the revision field is set.
     */
    boolean hasRevision();
    /**
     * <pre>
     * revision is the commit hash for the specified revision.
     * +optional
     * </pre>
     *
     * <code>optional string revision = 2;</code>
     * @return The revision.
     */
    java.lang.String getRevision();
    /**
     * <pre>
     * revision is the commit hash for the specified revision.
     * +optional
     * </pre>
     *
     * <code>optional string revision = 2;</code>
     * @return The bytes for revision.
     */
    com.google.protobuf.ByteString
        getRevisionBytes();

    /**
     * <pre>
     * directory is the target directory name.
     * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
     * git repository.  Otherwise, if specified, the volume will contain the git repository in
     * the subdirectory with the given name.
     * +optional
     * </pre>
     *
     * <code>optional string directory = 3;</code>
     * @return Whether the directory field is set.
     */
    boolean hasDirectory();
    /**
     * <pre>
     * directory is the target directory name.
     * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
     * git repository.  Otherwise, if specified, the volume will contain the git repository in
     * the subdirectory with the given name.
     * +optional
     * </pre>
     *
     * <code>optional string directory = 3;</code>
     * @return The directory.
     */
    java.lang.String getDirectory();
    /**
     * <pre>
     * directory is the target directory name.
     * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
     * git repository.  Otherwise, if specified, the volume will contain the git repository in
     * the subdirectory with the given name.
     * +optional
     * </pre>
     *
     * <code>optional string directory = 3;</code>
     * @return The bytes for directory.
     */
    com.google.protobuf.ByteString
        getDirectoryBytes();
  }
  /**
   * <pre>
   * Represents a volume that is populated with the contents of a git repository.
   * Git repo volumes do not support ownership management.
   * Git repo volumes support SELinux relabeling.
   *
   * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
   * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
   * into the Pod's container.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.GitRepoVolumeSource}
   */
  public static final class GitRepoVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.GitRepoVolumeSource)
      GitRepoVolumeSourceOrBuilder {
  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= */ "",
        GitRepoVolumeSource.class.getName());
    }
    // Use GitRepoVolumeSource.newBuilder() to construct.
    private GitRepoVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private GitRepoVolumeSource() {
      repository_ = "";
      revision_ = "";
      directory_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GitRepoVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GitRepoVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.GitRepoVolumeSource.class, io.kubernetes.client.proto.V1.GitRepoVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int REPOSITORY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object repository_ = "";
    /**
     * <pre>
     * repository is the URL
     * </pre>
     *
     * <code>optional string repository = 1;</code>
     * @return Whether the repository field is set.
     */
    @java.lang.Override
    public boolean hasRepository() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * repository is the URL
     * </pre>
     *
     * <code>optional string repository = 1;</code>
     * @return The repository.
     */
    @java.lang.Override
    public java.lang.String getRepository() {
      java.lang.Object ref = repository_;
      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()) {
          repository_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * repository is the URL
     * </pre>
     *
     * <code>optional string repository = 1;</code>
     * @return The bytes for repository.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRepositoryBytes() {
      java.lang.Object ref = repository_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        repository_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REVISION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object revision_ = "";
    /**
     * <pre>
     * revision is the commit hash for the specified revision.
     * +optional
     * </pre>
     *
     * <code>optional string revision = 2;</code>
     * @return Whether the revision field is set.
     */
    @java.lang.Override
    public boolean hasRevision() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * revision is the commit hash for the specified revision.
     * +optional
     * </pre>
     *
     * <code>optional string revision = 2;</code>
     * @return The revision.
     */
    @java.lang.Override
    public java.lang.String getRevision() {
      java.lang.Object ref = revision_;
      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()) {
          revision_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * revision is the commit hash for the specified revision.
     * +optional
     * </pre>
     *
     * <code>optional string revision = 2;</code>
     * @return The bytes for revision.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRevisionBytes() {
      java.lang.Object ref = revision_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        revision_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DIRECTORY_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object directory_ = "";
    /**
     * <pre>
     * directory is the target directory name.
     * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
     * git repository.  Otherwise, if specified, the volume will contain the git repository in
     * the subdirectory with the given name.
     * +optional
     * </pre>
     *
     * <code>optional string directory = 3;</code>
     * @return Whether the directory field is set.
     */
    @java.lang.Override
    public boolean hasDirectory() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * directory is the target directory name.
     * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
     * git repository.  Otherwise, if specified, the volume will contain the git repository in
     * the subdirectory with the given name.
     * +optional
     * </pre>
     *
     * <code>optional string directory = 3;</code>
     * @return The directory.
     */
    @java.lang.Override
    public java.lang.String getDirectory() {
      java.lang.Object ref = directory_;
      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()) {
          directory_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * directory is the target directory name.
     * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
     * git repository.  Otherwise, if specified, the volume will contain the git repository in
     * the subdirectory with the given name.
     * +optional
     * </pre>
     *
     * <code>optional string directory = 3;</code>
     * @return The bytes for directory.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDirectoryBytes() {
      java.lang.Object ref = directory_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        directory_ = 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, repository_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, revision_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, directory_);
      }
      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, repository_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, revision_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, directory_);
      }
      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.V1.GitRepoVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.GitRepoVolumeSource other = (io.kubernetes.client.proto.V1.GitRepoVolumeSource) obj;

      if (hasRepository() != other.hasRepository()) return false;
      if (hasRepository()) {
        if (!getRepository()
            .equals(other.getRepository())) return false;
      }
      if (hasRevision() != other.hasRevision()) return false;
      if (hasRevision()) {
        if (!getRevision()
            .equals(other.getRevision())) return false;
      }
      if (hasDirectory() != other.hasDirectory()) return false;
      if (hasDirectory()) {
        if (!getDirectory()
            .equals(other.getDirectory())) 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 (hasRepository()) {
        hash = (37 * hash) + REPOSITORY_FIELD_NUMBER;
        hash = (53 * hash) + getRepository().hashCode();
      }
      if (hasRevision()) {
        hash = (37 * hash) + REVISION_FIELD_NUMBER;
        hash = (53 * hash) + getRevision().hashCode();
      }
      if (hasDirectory()) {
        hash = (37 * hash) + DIRECTORY_FIELD_NUMBER;
        hash = (53 * hash) + getDirectory().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.GitRepoVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GitRepoVolumeSource 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.V1.GitRepoVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GitRepoVolumeSource 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.V1.GitRepoVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GitRepoVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.GitRepoVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.GitRepoVolumeSource 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.V1.GitRepoVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.GitRepoVolumeSource 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.V1.GitRepoVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.GitRepoVolumeSource 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.V1.GitRepoVolumeSource 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>
     * Represents a volume that is populated with the contents of a git repository.
     * Git repo volumes do not support ownership management.
     * Git repo volumes support SELinux relabeling.
     *
     * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
     * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
     * into the Pod's container.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.GitRepoVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.GitRepoVolumeSource)
        io.kubernetes.client.proto.V1.GitRepoVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GitRepoVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GitRepoVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.GitRepoVolumeSource.class, io.kubernetes.client.proto.V1.GitRepoVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.GitRepoVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        repository_ = "";
        revision_ = "";
        directory_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GitRepoVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GitRepoVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.GitRepoVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GitRepoVolumeSource build() {
        io.kubernetes.client.proto.V1.GitRepoVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GitRepoVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.GitRepoVolumeSource result = new io.kubernetes.client.proto.V1.GitRepoVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.GitRepoVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.repository_ = repository_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.revision_ = revision_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.directory_ = directory_;
          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.V1.GitRepoVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.GitRepoVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.GitRepoVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.GitRepoVolumeSource.getDefaultInstance()) return this;
        if (other.hasRepository()) {
          repository_ = other.repository_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasRevision()) {
          revision_ = other.revision_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasDirectory()) {
          directory_ = other.directory_;
          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: {
                repository_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                revision_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                directory_ = 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 repository_ = "";
      /**
       * <pre>
       * repository is the URL
       * </pre>
       *
       * <code>optional string repository = 1;</code>
       * @return Whether the repository field is set.
       */
      public boolean hasRepository() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * repository is the URL
       * </pre>
       *
       * <code>optional string repository = 1;</code>
       * @return The repository.
       */
      public java.lang.String getRepository() {
        java.lang.Object ref = repository_;
        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()) {
            repository_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * repository is the URL
       * </pre>
       *
       * <code>optional string repository = 1;</code>
       * @return The bytes for repository.
       */
      public com.google.protobuf.ByteString
          getRepositoryBytes() {
        java.lang.Object ref = repository_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          repository_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * repository is the URL
       * </pre>
       *
       * <code>optional string repository = 1;</code>
       * @param value The repository to set.
       * @return This builder for chaining.
       */
      public Builder setRepository(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        repository_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * repository is the URL
       * </pre>
       *
       * <code>optional string repository = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRepository() {
        repository_ = getDefaultInstance().getRepository();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * repository is the URL
       * </pre>
       *
       * <code>optional string repository = 1;</code>
       * @param value The bytes for repository to set.
       * @return This builder for chaining.
       */
      public Builder setRepositoryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        repository_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object revision_ = "";
      /**
       * <pre>
       * revision is the commit hash for the specified revision.
       * +optional
       * </pre>
       *
       * <code>optional string revision = 2;</code>
       * @return Whether the revision field is set.
       */
      public boolean hasRevision() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * revision is the commit hash for the specified revision.
       * +optional
       * </pre>
       *
       * <code>optional string revision = 2;</code>
       * @return The revision.
       */
      public java.lang.String getRevision() {
        java.lang.Object ref = revision_;
        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()) {
            revision_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * revision is the commit hash for the specified revision.
       * +optional
       * </pre>
       *
       * <code>optional string revision = 2;</code>
       * @return The bytes for revision.
       */
      public com.google.protobuf.ByteString
          getRevisionBytes() {
        java.lang.Object ref = revision_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          revision_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * revision is the commit hash for the specified revision.
       * +optional
       * </pre>
       *
       * <code>optional string revision = 2;</code>
       * @param value The revision to set.
       * @return This builder for chaining.
       */
      public Builder setRevision(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        revision_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * revision is the commit hash for the specified revision.
       * +optional
       * </pre>
       *
       * <code>optional string revision = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRevision() {
        revision_ = getDefaultInstance().getRevision();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * revision is the commit hash for the specified revision.
       * +optional
       * </pre>
       *
       * <code>optional string revision = 2;</code>
       * @param value The bytes for revision to set.
       * @return This builder for chaining.
       */
      public Builder setRevisionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        revision_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object directory_ = "";
      /**
       * <pre>
       * directory is the target directory name.
       * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
       * git repository.  Otherwise, if specified, the volume will contain the git repository in
       * the subdirectory with the given name.
       * +optional
       * </pre>
       *
       * <code>optional string directory = 3;</code>
       * @return Whether the directory field is set.
       */
      public boolean hasDirectory() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * directory is the target directory name.
       * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
       * git repository.  Otherwise, if specified, the volume will contain the git repository in
       * the subdirectory with the given name.
       * +optional
       * </pre>
       *
       * <code>optional string directory = 3;</code>
       * @return The directory.
       */
      public java.lang.String getDirectory() {
        java.lang.Object ref = directory_;
        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()) {
            directory_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * directory is the target directory name.
       * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
       * git repository.  Otherwise, if specified, the volume will contain the git repository in
       * the subdirectory with the given name.
       * +optional
       * </pre>
       *
       * <code>optional string directory = 3;</code>
       * @return The bytes for directory.
       */
      public com.google.protobuf.ByteString
          getDirectoryBytes() {
        java.lang.Object ref = directory_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          directory_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * directory is the target directory name.
       * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
       * git repository.  Otherwise, if specified, the volume will contain the git repository in
       * the subdirectory with the given name.
       * +optional
       * </pre>
       *
       * <code>optional string directory = 3;</code>
       * @param value The directory to set.
       * @return This builder for chaining.
       */
      public Builder setDirectory(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        directory_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * directory is the target directory name.
       * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
       * git repository.  Otherwise, if specified, the volume will contain the git repository in
       * the subdirectory with the given name.
       * +optional
       * </pre>
       *
       * <code>optional string directory = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDirectory() {
        directory_ = getDefaultInstance().getDirectory();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * directory is the target directory name.
       * Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
       * git repository.  Otherwise, if specified, the volume will contain the git repository in
       * the subdirectory with the given name.
       * +optional
       * </pre>
       *
       * <code>optional string directory = 3;</code>
       * @param value The bytes for directory to set.
       * @return This builder for chaining.
       */
      public Builder setDirectoryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        directory_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.GitRepoVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.GitRepoVolumeSource)
    private static final io.kubernetes.client.proto.V1.GitRepoVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.GitRepoVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.GitRepoVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GitRepoVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<GitRepoVolumeSource>() {
      @java.lang.Override
      public GitRepoVolumeSource 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<GitRepoVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GitRepoVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.GitRepoVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GlusterfsPersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.GlusterfsPersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return Whether the endpoints field is set.
     */
    boolean hasEndpoints();
    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return The endpoints.
     */
    java.lang.String getEndpoints();
    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return The bytes for endpoints.
     */
    com.google.protobuf.ByteString
        getEndpointsBytes();

    /**
     * <pre>
     * path is the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * path is the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path is the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * endpointsNamespace is the namespace that contains Glusterfs endpoint.
     * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional string endpointsNamespace = 4;</code>
     * @return Whether the endpointsNamespace field is set.
     */
    boolean hasEndpointsNamespace();
    /**
     * <pre>
     * endpointsNamespace is the namespace that contains Glusterfs endpoint.
     * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional string endpointsNamespace = 4;</code>
     * @return The endpointsNamespace.
     */
    java.lang.String getEndpointsNamespace();
    /**
     * <pre>
     * endpointsNamespace is the namespace that contains Glusterfs endpoint.
     * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional string endpointsNamespace = 4;</code>
     * @return The bytes for endpointsNamespace.
     */
    com.google.protobuf.ByteString
        getEndpointsNamespaceBytes();
  }
  /**
   * <pre>
   * Represents a Glusterfs mount that lasts the lifetime of a pod.
   * Glusterfs volumes do not support ownership management or SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.GlusterfsPersistentVolumeSource}
   */
  public static final class GlusterfsPersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.GlusterfsPersistentVolumeSource)
      GlusterfsPersistentVolumeSourceOrBuilder {
  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= */ "",
        GlusterfsPersistentVolumeSource.class.getName());
    }
    // Use GlusterfsPersistentVolumeSource.newBuilder() to construct.
    private GlusterfsPersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private GlusterfsPersistentVolumeSource() {
      endpoints_ = "";
      path_ = "";
      endpointsNamespace_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GlusterfsPersistentVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GlusterfsPersistentVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.class, io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int ENDPOINTS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object endpoints_ = "";
    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return Whether the endpoints field is set.
     */
    @java.lang.Override
    public boolean hasEndpoints() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return The endpoints.
     */
    @java.lang.Override
    public java.lang.String getEndpoints() {
      java.lang.Object ref = endpoints_;
      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()) {
          endpoints_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return The bytes for endpoints.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEndpointsBytes() {
      java.lang.Object ref = endpoints_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        endpoints_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * path is the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * path is the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</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 the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</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 READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int ENDPOINTSNAMESPACE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object endpointsNamespace_ = "";
    /**
     * <pre>
     * endpointsNamespace is the namespace that contains Glusterfs endpoint.
     * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional string endpointsNamespace = 4;</code>
     * @return Whether the endpointsNamespace field is set.
     */
    @java.lang.Override
    public boolean hasEndpointsNamespace() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * endpointsNamespace is the namespace that contains Glusterfs endpoint.
     * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional string endpointsNamespace = 4;</code>
     * @return The endpointsNamespace.
     */
    @java.lang.Override
    public java.lang.String getEndpointsNamespace() {
      java.lang.Object ref = endpointsNamespace_;
      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()) {
          endpointsNamespace_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * endpointsNamespace is the namespace that contains Glusterfs endpoint.
     * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional string endpointsNamespace = 4;</code>
     * @return The bytes for endpointsNamespace.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEndpointsNamespaceBytes() {
      java.lang.Object ref = endpointsNamespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        endpointsNamespace_ = 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, endpoints_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, path_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, endpointsNamespace_);
      }
      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, endpoints_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, path_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, endpointsNamespace_);
      }
      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.V1.GlusterfsPersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource other = (io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource) obj;

      if (hasEndpoints() != other.hasEndpoints()) return false;
      if (hasEndpoints()) {
        if (!getEndpoints()
            .equals(other.getEndpoints())) return false;
      }
      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasEndpointsNamespace() != other.hasEndpointsNamespace()) return false;
      if (hasEndpointsNamespace()) {
        if (!getEndpointsNamespace()
            .equals(other.getEndpointsNamespace())) 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 (hasEndpoints()) {
        hash = (37 * hash) + ENDPOINTS_FIELD_NUMBER;
        hash = (53 * hash) + getEndpoints().hashCode();
      }
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasEndpointsNamespace()) {
        hash = (37 * hash) + ENDPOINTSNAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getEndpointsNamespace().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource 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.V1.GlusterfsPersistentVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource 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.V1.GlusterfsPersistentVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource 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.V1.GlusterfsPersistentVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource 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.V1.GlusterfsPersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource 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.V1.GlusterfsPersistentVolumeSource 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>
     * Represents a Glusterfs mount that lasts the lifetime of a pod.
     * Glusterfs volumes do not support ownership management or SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.GlusterfsPersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.GlusterfsPersistentVolumeSource)
        io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GlusterfsPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GlusterfsPersistentVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.class, io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        endpoints_ = "";
        path_ = "";
        readOnly_ = false;
        endpointsNamespace_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GlusterfsPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource build() {
        io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource result = new io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.endpoints_ = endpoints_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.endpointsNamespace_ = endpointsNamespace_;
          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.V1.GlusterfsPersistentVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.getDefaultInstance()) return this;
        if (other.hasEndpoints()) {
          endpoints_ = other.endpoints_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasEndpointsNamespace()) {
          endpointsNamespace_ = other.endpointsNamespace_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                endpoints_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                endpointsNamespace_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object endpoints_ = "";
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @return Whether the endpoints field is set.
       */
      public boolean hasEndpoints() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @return The endpoints.
       */
      public java.lang.String getEndpoints() {
        java.lang.Object ref = endpoints_;
        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()) {
            endpoints_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @return The bytes for endpoints.
       */
      public com.google.protobuf.ByteString
          getEndpointsBytes() {
        java.lang.Object ref = endpoints_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          endpoints_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @param value The endpoints to set.
       * @return This builder for chaining.
       */
      public Builder setEndpoints(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        endpoints_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndpoints() {
        endpoints_ = getDefaultInstance().getEndpoints();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @param value The bytes for endpoints to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        endpoints_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * path is the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * path is the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</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 the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</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 the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object endpointsNamespace_ = "";
      /**
       * <pre>
       * endpointsNamespace is the namespace that contains Glusterfs endpoint.
       * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional string endpointsNamespace = 4;</code>
       * @return Whether the endpointsNamespace field is set.
       */
      public boolean hasEndpointsNamespace() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * endpointsNamespace is the namespace that contains Glusterfs endpoint.
       * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional string endpointsNamespace = 4;</code>
       * @return The endpointsNamespace.
       */
      public java.lang.String getEndpointsNamespace() {
        java.lang.Object ref = endpointsNamespace_;
        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()) {
            endpointsNamespace_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * endpointsNamespace is the namespace that contains Glusterfs endpoint.
       * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional string endpointsNamespace = 4;</code>
       * @return The bytes for endpointsNamespace.
       */
      public com.google.protobuf.ByteString
          getEndpointsNamespaceBytes() {
        java.lang.Object ref = endpointsNamespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          endpointsNamespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * endpointsNamespace is the namespace that contains Glusterfs endpoint.
       * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional string endpointsNamespace = 4;</code>
       * @param value The endpointsNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointsNamespace(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        endpointsNamespace_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * endpointsNamespace is the namespace that contains Glusterfs endpoint.
       * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional string endpointsNamespace = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndpointsNamespace() {
        endpointsNamespace_ = getDefaultInstance().getEndpointsNamespace();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * endpointsNamespace is the namespace that contains Glusterfs endpoint.
       * If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional string endpointsNamespace = 4;</code>
       * @param value The bytes for endpointsNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointsNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        endpointsNamespace_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.GlusterfsPersistentVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.GlusterfsPersistentVolumeSource)
    private static final io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GlusterfsPersistentVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<GlusterfsPersistentVolumeSource>() {
      @java.lang.Override
      public GlusterfsPersistentVolumeSource 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<GlusterfsPersistentVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GlusterfsPersistentVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GlusterfsVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.GlusterfsVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return Whether the endpoints field is set.
     */
    boolean hasEndpoints();
    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return The endpoints.
     */
    java.lang.String getEndpoints();
    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return The bytes for endpoints.
     */
    com.google.protobuf.ByteString
        getEndpointsBytes();

    /**
     * <pre>
     * path is the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * path is the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path is the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * Represents a Glusterfs mount that lasts the lifetime of a pod.
   * Glusterfs volumes do not support ownership management or SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.GlusterfsVolumeSource}
   */
  public static final class GlusterfsVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.GlusterfsVolumeSource)
      GlusterfsVolumeSourceOrBuilder {
  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= */ "",
        GlusterfsVolumeSource.class.getName());
    }
    // Use GlusterfsVolumeSource.newBuilder() to construct.
    private GlusterfsVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private GlusterfsVolumeSource() {
      endpoints_ = "";
      path_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GlusterfsVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GlusterfsVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.GlusterfsVolumeSource.class, io.kubernetes.client.proto.V1.GlusterfsVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int ENDPOINTS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object endpoints_ = "";
    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return Whether the endpoints field is set.
     */
    @java.lang.Override
    public boolean hasEndpoints() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return The endpoints.
     */
    @java.lang.Override
    public java.lang.String getEndpoints() {
      java.lang.Object ref = endpoints_;
      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()) {
          endpoints_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * endpoints is the endpoint name that details Glusterfs topology.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string endpoints = 1;</code>
     * @return The bytes for endpoints.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEndpointsBytes() {
      java.lang.Object ref = endpoints_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        endpoints_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * path is the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * path is the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</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 the Glusterfs volume path.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * </pre>
     *
     * <code>optional string path = 2;</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 READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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, endpoints_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, path_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      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, endpoints_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, path_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      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.V1.GlusterfsVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.GlusterfsVolumeSource other = (io.kubernetes.client.proto.V1.GlusterfsVolumeSource) obj;

      if (hasEndpoints() != other.hasEndpoints()) return false;
      if (hasEndpoints()) {
        if (!getEndpoints()
            .equals(other.getEndpoints())) return false;
      }
      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (hasEndpoints()) {
        hash = (37 * hash) + ENDPOINTS_FIELD_NUMBER;
        hash = (53 * hash) + getEndpoints().hashCode();
      }
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.GlusterfsVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsVolumeSource 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.V1.GlusterfsVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsVolumeSource 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.V1.GlusterfsVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsVolumeSource 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.V1.GlusterfsVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.GlusterfsVolumeSource 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.V1.GlusterfsVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.GlusterfsVolumeSource 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.V1.GlusterfsVolumeSource 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>
     * Represents a Glusterfs mount that lasts the lifetime of a pod.
     * Glusterfs volumes do not support ownership management or SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.GlusterfsVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.GlusterfsVolumeSource)
        io.kubernetes.client.proto.V1.GlusterfsVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GlusterfsVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GlusterfsVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.GlusterfsVolumeSource.class, io.kubernetes.client.proto.V1.GlusterfsVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.GlusterfsVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        endpoints_ = "";
        path_ = "";
        readOnly_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_GlusterfsVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GlusterfsVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.GlusterfsVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GlusterfsVolumeSource build() {
        io.kubernetes.client.proto.V1.GlusterfsVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.GlusterfsVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.GlusterfsVolumeSource result = new io.kubernetes.client.proto.V1.GlusterfsVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.GlusterfsVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.endpoints_ = endpoints_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.GlusterfsVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.GlusterfsVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.GlusterfsVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.GlusterfsVolumeSource.getDefaultInstance()) return this;
        if (other.hasEndpoints()) {
          endpoints_ = other.endpoints_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        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: {
                endpoints_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object endpoints_ = "";
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @return Whether the endpoints field is set.
       */
      public boolean hasEndpoints() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @return The endpoints.
       */
      public java.lang.String getEndpoints() {
        java.lang.Object ref = endpoints_;
        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()) {
            endpoints_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @return The bytes for endpoints.
       */
      public com.google.protobuf.ByteString
          getEndpointsBytes() {
        java.lang.Object ref = endpoints_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          endpoints_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @param value The endpoints to set.
       * @return This builder for chaining.
       */
      public Builder setEndpoints(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        endpoints_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndpoints() {
        endpoints_ = getDefaultInstance().getEndpoints();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * endpoints is the endpoint name that details Glusterfs topology.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string endpoints = 1;</code>
       * @param value The bytes for endpoints to set.
       * @return This builder for chaining.
       */
      public Builder setEndpointsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        endpoints_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * path is the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * path is the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</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 the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</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 the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is the Glusterfs volume path.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.GlusterfsVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.GlusterfsVolumeSource)
    private static final io.kubernetes.client.proto.V1.GlusterfsVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.GlusterfsVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.GlusterfsVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GlusterfsVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<GlusterfsVolumeSource>() {
      @java.lang.Override
      public GlusterfsVolumeSource 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<GlusterfsVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GlusterfsVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.GlusterfsVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HTTPGetActionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.HTTPGetAction)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Path to access on the HTTP server.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * Path to access on the HTTP server.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Path to access on the HTTP server.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * Name or number of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
     * @return Whether the port field is set.
     */
    boolean hasPort();
    /**
     * <pre>
     * Name or number of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
     * @return The port.
     */
    io.kubernetes.client.proto.IntStr.IntOrString getPort();
    /**
     * <pre>
     * Name or number of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
     */
    io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder getPortOrBuilder();

    /**
     * <pre>
     * Host name to connect to, defaults to the pod IP. You probably want to set
     * "Host" in httpHeaders instead.
     * +optional
     * </pre>
     *
     * <code>optional string host = 3;</code>
     * @return Whether the host field is set.
     */
    boolean hasHost();
    /**
     * <pre>
     * Host name to connect to, defaults to the pod IP. You probably want to set
     * "Host" in httpHeaders instead.
     * +optional
     * </pre>
     *
     * <code>optional string host = 3;</code>
     * @return The host.
     */
    java.lang.String getHost();
    /**
     * <pre>
     * Host name to connect to, defaults to the pod IP. You probably want to set
     * "Host" in httpHeaders instead.
     * +optional
     * </pre>
     *
     * <code>optional string host = 3;</code>
     * @return The bytes for host.
     */
    com.google.protobuf.ByteString
        getHostBytes();

    /**
     * <pre>
     * Scheme to use for connecting to the host.
     * Defaults to HTTP.
     * +optional
     * </pre>
     *
     * <code>optional string scheme = 4;</code>
     * @return Whether the scheme field is set.
     */
    boolean hasScheme();
    /**
     * <pre>
     * Scheme to use for connecting to the host.
     * Defaults to HTTP.
     * +optional
     * </pre>
     *
     * <code>optional string scheme = 4;</code>
     * @return The scheme.
     */
    java.lang.String getScheme();
    /**
     * <pre>
     * Scheme to use for connecting to the host.
     * Defaults to HTTP.
     * +optional
     * </pre>
     *
     * <code>optional string scheme = 4;</code>
     * @return The bytes for scheme.
     */
    com.google.protobuf.ByteString
        getSchemeBytes();

    /**
     * <pre>
     * Custom headers to set in the request. HTTP allows repeated headers.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.HTTPHeader> 
        getHttpHeadersList();
    /**
     * <pre>
     * Custom headers to set in the request. HTTP allows repeated headers.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
     */
    io.kubernetes.client.proto.V1.HTTPHeader getHttpHeaders(int index);
    /**
     * <pre>
     * Custom headers to set in the request. HTTP allows repeated headers.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
     */
    int getHttpHeadersCount();
    /**
     * <pre>
     * Custom headers to set in the request. HTTP allows repeated headers.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.HTTPHeaderOrBuilder> 
        getHttpHeadersOrBuilderList();
    /**
     * <pre>
     * Custom headers to set in the request. HTTP allows repeated headers.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
     */
    io.kubernetes.client.proto.V1.HTTPHeaderOrBuilder getHttpHeadersOrBuilder(
        int index);
  }
  /**
   * <pre>
   * HTTPGetAction describes an action based on HTTP Get requests.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.HTTPGetAction}
   */
  public static final class HTTPGetAction extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.HTTPGetAction)
      HTTPGetActionOrBuilder {
  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= */ "",
        HTTPGetAction.class.getName());
    }
    // Use HTTPGetAction.newBuilder() to construct.
    private HTTPGetAction(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private HTTPGetAction() {
      path_ = "";
      host_ = "";
      scheme_ = "";
      httpHeaders_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HTTPGetAction_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HTTPGetAction_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.HTTPGetAction.class, io.kubernetes.client.proto.V1.HTTPGetAction.Builder.class);
    }

    private int bitField0_;
    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * Path to access on the HTTP server.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Path to access on the HTTP server.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</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 to access on the HTTP server.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</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 = 2;
    private io.kubernetes.client.proto.IntStr.IntOrString port_;
    /**
     * <pre>
     * Name or number of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
     * @return Whether the port field is set.
     */
    @java.lang.Override
    public boolean hasPort() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Name or number of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
     * @return The port.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.IntStr.IntOrString getPort() {
      return port_ == null ? io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : port_;
    }
    /**
     * <pre>
     * Name or number of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder getPortOrBuilder() {
      return port_ == null ? io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : port_;
    }

    public static final int HOST_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object host_ = "";
    /**
     * <pre>
     * Host name to connect to, defaults to the pod IP. You probably want to set
     * "Host" in httpHeaders instead.
     * +optional
     * </pre>
     *
     * <code>optional string host = 3;</code>
     * @return Whether the host field is set.
     */
    @java.lang.Override
    public boolean hasHost() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Host name to connect to, defaults to the pod IP. You probably want to set
     * "Host" in httpHeaders instead.
     * +optional
     * </pre>
     *
     * <code>optional string host = 3;</code>
     * @return The host.
     */
    @java.lang.Override
    public java.lang.String getHost() {
      java.lang.Object ref = host_;
      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()) {
          host_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Host name to connect to, defaults to the pod IP. You probably want to set
     * "Host" in httpHeaders instead.
     * +optional
     * </pre>
     *
     * <code>optional string host = 3;</code>
     * @return The bytes for host.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHostBytes() {
      java.lang.Object ref = host_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        host_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SCHEME_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object scheme_ = "";
    /**
     * <pre>
     * Scheme to use for connecting to the host.
     * Defaults to HTTP.
     * +optional
     * </pre>
     *
     * <code>optional string scheme = 4;</code>
     * @return Whether the scheme field is set.
     */
    @java.lang.Override
    public boolean hasScheme() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Scheme to use for connecting to the host.
     * Defaults to HTTP.
     * +optional
     * </pre>
     *
     * <code>optional string scheme = 4;</code>
     * @return The scheme.
     */
    @java.lang.Override
    public java.lang.String getScheme() {
      java.lang.Object ref = scheme_;
      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()) {
          scheme_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Scheme to use for connecting to the host.
     * Defaults to HTTP.
     * +optional
     * </pre>
     *
     * <code>optional string scheme = 4;</code>
     * @return The bytes for scheme.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSchemeBytes() {
      java.lang.Object ref = scheme_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        scheme_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HTTPHEADERS_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.HTTPHeader> httpHeaders_;
    /**
     * <pre>
     * Custom headers to set in the request. HTTP allows repeated headers.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.HTTPHeader> getHttpHeadersList() {
      return httpHeaders_;
    }
    /**
     * <pre>
     * Custom headers to set in the request. HTTP allows repeated headers.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.HTTPHeaderOrBuilder> 
        getHttpHeadersOrBuilderList() {
      return httpHeaders_;
    }
    /**
     * <pre>
     * Custom headers to set in the request. HTTP allows repeated headers.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
     */
    @java.lang.Override
    public int getHttpHeadersCount() {
      return httpHeaders_.size();
    }
    /**
     * <pre>
     * Custom headers to set in the request. HTTP allows repeated headers.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HTTPHeader getHttpHeaders(int index) {
      return httpHeaders_.get(index);
    }
    /**
     * <pre>
     * Custom headers to set in the request. HTTP allows repeated headers.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HTTPHeaderOrBuilder getHttpHeadersOrBuilder(
        int index) {
      return httpHeaders_.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, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getPort());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, host_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, scheme_);
      }
      for (int i = 0; i < httpHeaders_.size(); i++) {
        output.writeMessage(5, httpHeaders_.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, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPort());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, host_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, scheme_);
      }
      for (int i = 0; i < httpHeaders_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, httpHeaders_.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.V1.HTTPGetAction)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.HTTPGetAction other = (io.kubernetes.client.proto.V1.HTTPGetAction) obj;

      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()
            .equals(other.getPort())) return false;
      }
      if (hasHost() != other.hasHost()) return false;
      if (hasHost()) {
        if (!getHost()
            .equals(other.getHost())) return false;
      }
      if (hasScheme() != other.hasScheme()) return false;
      if (hasScheme()) {
        if (!getScheme()
            .equals(other.getScheme())) return false;
      }
      if (!getHttpHeadersList()
          .equals(other.getHttpHeadersList())) 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 (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasPort()) {
        hash = (37 * hash) + PORT_FIELD_NUMBER;
        hash = (53 * hash) + getPort().hashCode();
      }
      if (hasHost()) {
        hash = (37 * hash) + HOST_FIELD_NUMBER;
        hash = (53 * hash) + getHost().hashCode();
      }
      if (hasScheme()) {
        hash = (37 * hash) + SCHEME_FIELD_NUMBER;
        hash = (53 * hash) + getScheme().hashCode();
      }
      if (getHttpHeadersCount() > 0) {
        hash = (37 * hash) + HTTPHEADERS_FIELD_NUMBER;
        hash = (53 * hash) + getHttpHeadersList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.HTTPGetAction parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HTTPGetAction 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.V1.HTTPGetAction parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HTTPGetAction 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.V1.HTTPGetAction parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HTTPGetAction parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.HTTPGetAction parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.HTTPGetAction 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.V1.HTTPGetAction parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.HTTPGetAction 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.V1.HTTPGetAction parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.HTTPGetAction 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.V1.HTTPGetAction 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>
     * HTTPGetAction describes an action based on HTTP Get requests.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.HTTPGetAction}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.HTTPGetAction)
        io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HTTPGetAction_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HTTPGetAction_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.HTTPGetAction.class, io.kubernetes.client.proto.V1.HTTPGetAction.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.HTTPGetAction.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPortFieldBuilder();
          getHttpHeadersFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        port_ = null;
        if (portBuilder_ != null) {
          portBuilder_.dispose();
          portBuilder_ = null;
        }
        host_ = "";
        scheme_ = "";
        if (httpHeadersBuilder_ == null) {
          httpHeaders_ = java.util.Collections.emptyList();
        } else {
          httpHeaders_ = null;
          httpHeadersBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HTTPGetAction_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HTTPGetAction getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HTTPGetAction build() {
        io.kubernetes.client.proto.V1.HTTPGetAction result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HTTPGetAction buildPartial() {
        io.kubernetes.client.proto.V1.HTTPGetAction result = new io.kubernetes.client.proto.V1.HTTPGetAction(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.HTTPGetAction result) {
        if (httpHeadersBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            httpHeaders_ = java.util.Collections.unmodifiableList(httpHeaders_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.httpHeaders_ = httpHeaders_;
        } else {
          result.httpHeaders_ = httpHeadersBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.HTTPGetAction result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.port_ = portBuilder_ == null
              ? port_
              : portBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.host_ = host_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.scheme_ = scheme_;
          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.V1.HTTPGetAction) {
          return mergeFrom((io.kubernetes.client.proto.V1.HTTPGetAction)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.HTTPGetAction other) {
        if (other == io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance()) return this;
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasPort()) {
          mergePort(other.getPort());
        }
        if (other.hasHost()) {
          host_ = other.host_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasScheme()) {
          scheme_ = other.scheme_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (httpHeadersBuilder_ == null) {
          if (!other.httpHeaders_.isEmpty()) {
            if (httpHeaders_.isEmpty()) {
              httpHeaders_ = other.httpHeaders_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureHttpHeadersIsMutable();
              httpHeaders_.addAll(other.httpHeaders_);
            }
            onChanged();
          }
        } else {
          if (!other.httpHeaders_.isEmpty()) {
            if (httpHeadersBuilder_.isEmpty()) {
              httpHeadersBuilder_.dispose();
              httpHeadersBuilder_ = null;
              httpHeaders_ = other.httpHeaders_;
              bitField0_ = (bitField0_ & ~0x00000010);
              httpHeadersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getHttpHeadersFieldBuilder() : null;
            } else {
              httpHeadersBuilder_.addAllMessages(other.httpHeaders_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getPortFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                host_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                scheme_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                io.kubernetes.client.proto.V1.HTTPHeader m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.HTTPHeader.parser(),
                        extensionRegistry);
                if (httpHeadersBuilder_ == null) {
                  ensureHttpHeadersIsMutable();
                  httpHeaders_.add(m);
                } else {
                  httpHeadersBuilder_.addMessage(m);
                }
                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 path_ = "";
      /**
       * <pre>
       * Path to access on the HTTP server.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Path to access on the HTTP server.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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 to access on the HTTP server.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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 to access on the HTTP server.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path to access on the HTTP server.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path to access on the HTTP server.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.IntStr.IntOrString port_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.IntStr.IntOrString, io.kubernetes.client.proto.IntStr.IntOrString.Builder, io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder> portBuilder_;
      /**
       * <pre>
       * Name or number of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
       * @return Whether the port field is set.
       */
      public boolean hasPort() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Name or number of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
       * @return The port.
       */
      public io.kubernetes.client.proto.IntStr.IntOrString getPort() {
        if (portBuilder_ == null) {
          return port_ == null ? io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : port_;
        } else {
          return portBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Name or number of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
       */
      public Builder setPort(io.kubernetes.client.proto.IntStr.IntOrString value) {
        if (portBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          port_ = value;
        } else {
          portBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name or number of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
       */
      public Builder setPort(
          io.kubernetes.client.proto.IntStr.IntOrString.Builder builderForValue) {
        if (portBuilder_ == null) {
          port_ = builderForValue.build();
        } else {
          portBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name or number of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
       */
      public Builder mergePort(io.kubernetes.client.proto.IntStr.IntOrString value) {
        if (portBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            port_ != null &&
            port_ != io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance()) {
            getPortBuilder().mergeFrom(value);
          } else {
            port_ = value;
          }
        } else {
          portBuilder_.mergeFrom(value);
        }
        if (port_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Name or number of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
       */
      public Builder clearPort() {
        bitField0_ = (bitField0_ & ~0x00000002);
        port_ = null;
        if (portBuilder_ != null) {
          portBuilder_.dispose();
          portBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name or number of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
       */
      public io.kubernetes.client.proto.IntStr.IntOrString.Builder getPortBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPortFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Name or number of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
       */
      public io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder getPortOrBuilder() {
        if (portBuilder_ != null) {
          return portBuilder_.getMessageOrBuilder();
        } else {
          return port_ == null ?
              io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : port_;
        }
      }
      /**
       * <pre>
       * Name or number of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.IntStr.IntOrString, io.kubernetes.client.proto.IntStr.IntOrString.Builder, io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder> 
          getPortFieldBuilder() {
        if (portBuilder_ == null) {
          portBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.IntStr.IntOrString, io.kubernetes.client.proto.IntStr.IntOrString.Builder, io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder>(
                  getPort(),
                  getParentForChildren(),
                  isClean());
          port_ = null;
        }
        return portBuilder_;
      }

      private java.lang.Object host_ = "";
      /**
       * <pre>
       * Host name to connect to, defaults to the pod IP. You probably want to set
       * "Host" in httpHeaders instead.
       * +optional
       * </pre>
       *
       * <code>optional string host = 3;</code>
       * @return Whether the host field is set.
       */
      public boolean hasHost() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Host name to connect to, defaults to the pod IP. You probably want to set
       * "Host" in httpHeaders instead.
       * +optional
       * </pre>
       *
       * <code>optional string host = 3;</code>
       * @return The host.
       */
      public java.lang.String getHost() {
        java.lang.Object ref = host_;
        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()) {
            host_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Host name to connect to, defaults to the pod IP. You probably want to set
       * "Host" in httpHeaders instead.
       * +optional
       * </pre>
       *
       * <code>optional string host = 3;</code>
       * @return The bytes for host.
       */
      public com.google.protobuf.ByteString
          getHostBytes() {
        java.lang.Object ref = host_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          host_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Host name to connect to, defaults to the pod IP. You probably want to set
       * "Host" in httpHeaders instead.
       * +optional
       * </pre>
       *
       * <code>optional string host = 3;</code>
       * @param value The host to set.
       * @return This builder for chaining.
       */
      public Builder setHost(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        host_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Host name to connect to, defaults to the pod IP. You probably want to set
       * "Host" in httpHeaders instead.
       * +optional
       * </pre>
       *
       * <code>optional string host = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearHost() {
        host_ = getDefaultInstance().getHost();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Host name to connect to, defaults to the pod IP. You probably want to set
       * "Host" in httpHeaders instead.
       * +optional
       * </pre>
       *
       * <code>optional string host = 3;</code>
       * @param value The bytes for host to set.
       * @return This builder for chaining.
       */
      public Builder setHostBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        host_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object scheme_ = "";
      /**
       * <pre>
       * Scheme to use for connecting to the host.
       * Defaults to HTTP.
       * +optional
       * </pre>
       *
       * <code>optional string scheme = 4;</code>
       * @return Whether the scheme field is set.
       */
      public boolean hasScheme() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Scheme to use for connecting to the host.
       * Defaults to HTTP.
       * +optional
       * </pre>
       *
       * <code>optional string scheme = 4;</code>
       * @return The scheme.
       */
      public java.lang.String getScheme() {
        java.lang.Object ref = scheme_;
        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()) {
            scheme_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Scheme to use for connecting to the host.
       * Defaults to HTTP.
       * +optional
       * </pre>
       *
       * <code>optional string scheme = 4;</code>
       * @return The bytes for scheme.
       */
      public com.google.protobuf.ByteString
          getSchemeBytes() {
        java.lang.Object ref = scheme_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          scheme_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Scheme to use for connecting to the host.
       * Defaults to HTTP.
       * +optional
       * </pre>
       *
       * <code>optional string scheme = 4;</code>
       * @param value The scheme to set.
       * @return This builder for chaining.
       */
      public Builder setScheme(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        scheme_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Scheme to use for connecting to the host.
       * Defaults to HTTP.
       * +optional
       * </pre>
       *
       * <code>optional string scheme = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearScheme() {
        scheme_ = getDefaultInstance().getScheme();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Scheme to use for connecting to the host.
       * Defaults to HTTP.
       * +optional
       * </pre>
       *
       * <code>optional string scheme = 4;</code>
       * @param value The bytes for scheme to set.
       * @return This builder for chaining.
       */
      public Builder setSchemeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        scheme_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.HTTPHeader> httpHeaders_ =
        java.util.Collections.emptyList();
      private void ensureHttpHeadersIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          httpHeaders_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.HTTPHeader>(httpHeaders_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.HTTPHeader, io.kubernetes.client.proto.V1.HTTPHeader.Builder, io.kubernetes.client.proto.V1.HTTPHeaderOrBuilder> httpHeadersBuilder_;

      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.HTTPHeader> getHttpHeadersList() {
        if (httpHeadersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(httpHeaders_);
        } else {
          return httpHeadersBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public int getHttpHeadersCount() {
        if (httpHeadersBuilder_ == null) {
          return httpHeaders_.size();
        } else {
          return httpHeadersBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public io.kubernetes.client.proto.V1.HTTPHeader getHttpHeaders(int index) {
        if (httpHeadersBuilder_ == null) {
          return httpHeaders_.get(index);
        } else {
          return httpHeadersBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public Builder setHttpHeaders(
          int index, io.kubernetes.client.proto.V1.HTTPHeader value) {
        if (httpHeadersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHttpHeadersIsMutable();
          httpHeaders_.set(index, value);
          onChanged();
        } else {
          httpHeadersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public Builder setHttpHeaders(
          int index, io.kubernetes.client.proto.V1.HTTPHeader.Builder builderForValue) {
        if (httpHeadersBuilder_ == null) {
          ensureHttpHeadersIsMutable();
          httpHeaders_.set(index, builderForValue.build());
          onChanged();
        } else {
          httpHeadersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public Builder addHttpHeaders(io.kubernetes.client.proto.V1.HTTPHeader value) {
        if (httpHeadersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHttpHeadersIsMutable();
          httpHeaders_.add(value);
          onChanged();
        } else {
          httpHeadersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public Builder addHttpHeaders(
          int index, io.kubernetes.client.proto.V1.HTTPHeader value) {
        if (httpHeadersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHttpHeadersIsMutable();
          httpHeaders_.add(index, value);
          onChanged();
        } else {
          httpHeadersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public Builder addHttpHeaders(
          io.kubernetes.client.proto.V1.HTTPHeader.Builder builderForValue) {
        if (httpHeadersBuilder_ == null) {
          ensureHttpHeadersIsMutable();
          httpHeaders_.add(builderForValue.build());
          onChanged();
        } else {
          httpHeadersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public Builder addHttpHeaders(
          int index, io.kubernetes.client.proto.V1.HTTPHeader.Builder builderForValue) {
        if (httpHeadersBuilder_ == null) {
          ensureHttpHeadersIsMutable();
          httpHeaders_.add(index, builderForValue.build());
          onChanged();
        } else {
          httpHeadersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public Builder addAllHttpHeaders(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.HTTPHeader> values) {
        if (httpHeadersBuilder_ == null) {
          ensureHttpHeadersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, httpHeaders_);
          onChanged();
        } else {
          httpHeadersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public Builder clearHttpHeaders() {
        if (httpHeadersBuilder_ == null) {
          httpHeaders_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          httpHeadersBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public Builder removeHttpHeaders(int index) {
        if (httpHeadersBuilder_ == null) {
          ensureHttpHeadersIsMutable();
          httpHeaders_.remove(index);
          onChanged();
        } else {
          httpHeadersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public io.kubernetes.client.proto.V1.HTTPHeader.Builder getHttpHeadersBuilder(
          int index) {
        return getHttpHeadersFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public io.kubernetes.client.proto.V1.HTTPHeaderOrBuilder getHttpHeadersOrBuilder(
          int index) {
        if (httpHeadersBuilder_ == null) {
          return httpHeaders_.get(index);  } else {
          return httpHeadersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.HTTPHeaderOrBuilder> 
           getHttpHeadersOrBuilderList() {
        if (httpHeadersBuilder_ != null) {
          return httpHeadersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(httpHeaders_);
        }
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public io.kubernetes.client.proto.V1.HTTPHeader.Builder addHttpHeadersBuilder() {
        return getHttpHeadersFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.HTTPHeader.getDefaultInstance());
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public io.kubernetes.client.proto.V1.HTTPHeader.Builder addHttpHeadersBuilder(
          int index) {
        return getHttpHeadersFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.HTTPHeader.getDefaultInstance());
      }
      /**
       * <pre>
       * Custom headers to set in the request. HTTP allows repeated headers.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HTTPHeader httpHeaders = 5;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.HTTPHeader.Builder> 
           getHttpHeadersBuilderList() {
        return getHttpHeadersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.HTTPHeader, io.kubernetes.client.proto.V1.HTTPHeader.Builder, io.kubernetes.client.proto.V1.HTTPHeaderOrBuilder> 
          getHttpHeadersFieldBuilder() {
        if (httpHeadersBuilder_ == null) {
          httpHeadersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.HTTPHeader, io.kubernetes.client.proto.V1.HTTPHeader.Builder, io.kubernetes.client.proto.V1.HTTPHeaderOrBuilder>(
                  httpHeaders_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          httpHeaders_ = null;
        }
        return httpHeadersBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.HTTPGetAction)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.HTTPGetAction)
    private static final io.kubernetes.client.proto.V1.HTTPGetAction DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.HTTPGetAction();
    }

    public static io.kubernetes.client.proto.V1.HTTPGetAction getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HTTPGetAction>
        PARSER = new com.google.protobuf.AbstractParser<HTTPGetAction>() {
      @java.lang.Override
      public HTTPGetAction 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<HTTPGetAction> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<HTTPGetAction> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.HTTPGetAction getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HTTPHeaderOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.HTTPHeader)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The header field name.
     * This will be canonicalized upon output, so case-variant names will be understood as the same header.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * The header field name.
     * This will be canonicalized upon output, so case-variant names will be understood as the same header.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * The header field name.
     * This will be canonicalized upon output, so case-variant names will be understood as the same header.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The header field value
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * The header field value
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <pre>
     * The header field value
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * <pre>
   * HTTPHeader describes a custom header to be used in HTTP probes
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.HTTPHeader}
   */
  public static final class HTTPHeader extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.HTTPHeader)
      HTTPHeaderOrBuilder {
  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= */ "",
        HTTPHeader.class.getName());
    }
    // Use HTTPHeader.newBuilder() to construct.
    private HTTPHeader(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private HTTPHeader() {
      name_ = "";
      value_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HTTPHeader_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HTTPHeader_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.HTTPHeader.class, io.kubernetes.client.proto.V1.HTTPHeader.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * The header field name.
     * This will be canonicalized upon output, so case-variant names will be understood as the same header.
     * </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>
     * The header field name.
     * This will be canonicalized upon output, so case-variant names will be understood as the same header.
     * </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>
     * The header field name.
     * This will be canonicalized upon output, so case-variant names will be understood as the same header.
     * </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 VALUE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object value_ = "";
    /**
     * <pre>
     * The header field value
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The header field value
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The header field value
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, value_);
      }
      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, value_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1.HTTPHeader)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.HTTPHeader other = (io.kubernetes.client.proto.V1.HTTPHeader) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.HTTPHeader parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HTTPHeader 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.V1.HTTPHeader parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HTTPHeader 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.V1.HTTPHeader parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HTTPHeader parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.HTTPHeader parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.HTTPHeader 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.V1.HTTPHeader parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.HTTPHeader 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.V1.HTTPHeader parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.HTTPHeader 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.V1.HTTPHeader 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>
     * HTTPHeader describes a custom header to be used in HTTP probes
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.HTTPHeader}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.HTTPHeader)
        io.kubernetes.client.proto.V1.HTTPHeaderOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HTTPHeader_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HTTPHeader_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.HTTPHeader.class, io.kubernetes.client.proto.V1.HTTPHeader.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.HTTPHeader.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        value_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HTTPHeader_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HTTPHeader getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.HTTPHeader.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HTTPHeader build() {
        io.kubernetes.client.proto.V1.HTTPHeader result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HTTPHeader buildPartial() {
        io.kubernetes.client.proto.V1.HTTPHeader result = new io.kubernetes.client.proto.V1.HTTPHeader(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.HTTPHeader 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.value_ = value_;
          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.V1.HTTPHeader) {
          return mergeFrom((io.kubernetes.client.proto.V1.HTTPHeader)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.HTTPHeader other) {
        if (other == io.kubernetes.client.proto.V1.HTTPHeader.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasValue()) {
          value_ = other.value_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                value_ = 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 name_ = "";
      /**
       * <pre>
       * The header field name.
       * This will be canonicalized upon output, so case-variant names will be understood as the same header.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The header field name.
       * This will be canonicalized upon output, so case-variant names will be understood as the same header.
       * </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>
       * The header field name.
       * This will be canonicalized upon output, so case-variant names will be understood as the same header.
       * </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>
       * The header field name.
       * This will be canonicalized upon output, so case-variant names will be understood as the same header.
       * </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>
       * The header field name.
       * This will be canonicalized upon output, so case-variant names will be understood as the same header.
       * </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>
       * The header field name.
       * This will be canonicalized upon output, so case-variant names will be understood as the same header.
       * </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 value_ = "";
      /**
       * <pre>
       * The header field value
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The header field value
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The header field value
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The header field value
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The header field value
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        value_ = getDefaultInstance().getValue();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The header field value
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.HTTPHeader)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.HTTPHeader)
    private static final io.kubernetes.client.proto.V1.HTTPHeader DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.HTTPHeader();
    }

    public static io.kubernetes.client.proto.V1.HTTPHeader getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HTTPHeader>
        PARSER = new com.google.protobuf.AbstractParser<HTTPHeader>() {
      @java.lang.Override
      public HTTPHeader 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<HTTPHeader> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<HTTPHeader> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.HTTPHeader getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HostAliasOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.HostAlias)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * IP address of the host file entry.
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return Whether the ip field is set.
     */
    boolean hasIp();
    /**
     * <pre>
     * IP address of the host file entry.
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The ip.
     */
    java.lang.String getIp();
    /**
     * <pre>
     * IP address of the host file entry.
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The bytes for ip.
     */
    com.google.protobuf.ByteString
        getIpBytes();

    /**
     * <pre>
     * Hostnames for the above IP address.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string hostnames = 2;</code>
     * @return A list containing the hostnames.
     */
    java.util.List<java.lang.String>
        getHostnamesList();
    /**
     * <pre>
     * Hostnames for the above IP address.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string hostnames = 2;</code>
     * @return The count of hostnames.
     */
    int getHostnamesCount();
    /**
     * <pre>
     * Hostnames for the above IP address.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string hostnames = 2;</code>
     * @param index The index of the element to return.
     * @return The hostnames at the given index.
     */
    java.lang.String getHostnames(int index);
    /**
     * <pre>
     * Hostnames for the above IP address.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string hostnames = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the hostnames at the given index.
     */
    com.google.protobuf.ByteString
        getHostnamesBytes(int index);
  }
  /**
   * <pre>
   * HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the
   * pod's hosts file.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.HostAlias}
   */
  public static final class HostAlias extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.HostAlias)
      HostAliasOrBuilder {
  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= */ "",
        HostAlias.class.getName());
    }
    // Use HostAlias.newBuilder() to construct.
    private HostAlias(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private HostAlias() {
      ip_ = "";
      hostnames_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostAlias_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostAlias_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.HostAlias.class, io.kubernetes.client.proto.V1.HostAlias.Builder.class);
    }

    private int bitField0_;
    public static final int IP_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object ip_ = "";
    /**
     * <pre>
     * IP address of the host file entry.
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return Whether the ip field is set.
     */
    @java.lang.Override
    public boolean hasIp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * IP address of the host file entry.
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The ip.
     */
    @java.lang.Override
    public java.lang.String getIp() {
      java.lang.Object ref = ip_;
      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()) {
          ip_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * IP address of the host file entry.
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The bytes for ip.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIpBytes() {
      java.lang.Object ref = ip_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ip_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HOSTNAMES_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList hostnames_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Hostnames for the above IP address.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string hostnames = 2;</code>
     * @return A list containing the hostnames.
     */
    public com.google.protobuf.ProtocolStringList
        getHostnamesList() {
      return hostnames_;
    }
    /**
     * <pre>
     * Hostnames for the above IP address.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string hostnames = 2;</code>
     * @return The count of hostnames.
     */
    public int getHostnamesCount() {
      return hostnames_.size();
    }
    /**
     * <pre>
     * Hostnames for the above IP address.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string hostnames = 2;</code>
     * @param index The index of the element to return.
     * @return The hostnames at the given index.
     */
    public java.lang.String getHostnames(int index) {
      return hostnames_.get(index);
    }
    /**
     * <pre>
     * Hostnames for the above IP address.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string hostnames = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the hostnames at the given index.
     */
    public com.google.protobuf.ByteString
        getHostnamesBytes(int index) {
      return hostnames_.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, ip_);
      }
      for (int i = 0; i < hostnames_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, hostnames_.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, ip_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < hostnames_.size(); i++) {
          dataSize += computeStringSizeNoTag(hostnames_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getHostnamesList().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.V1.HostAlias)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.HostAlias other = (io.kubernetes.client.proto.V1.HostAlias) obj;

      if (hasIp() != other.hasIp()) return false;
      if (hasIp()) {
        if (!getIp()
            .equals(other.getIp())) return false;
      }
      if (!getHostnamesList()
          .equals(other.getHostnamesList())) 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 (hasIp()) {
        hash = (37 * hash) + IP_FIELD_NUMBER;
        hash = (53 * hash) + getIp().hashCode();
      }
      if (getHostnamesCount() > 0) {
        hash = (37 * hash) + HOSTNAMES_FIELD_NUMBER;
        hash = (53 * hash) + getHostnamesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.HostAlias parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HostAlias 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.V1.HostAlias parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HostAlias 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.V1.HostAlias parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HostAlias parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.HostAlias parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.HostAlias 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.V1.HostAlias parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.HostAlias 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.V1.HostAlias parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.HostAlias 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.V1.HostAlias 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>
     * HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the
     * pod's hosts file.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.HostAlias}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.HostAlias)
        io.kubernetes.client.proto.V1.HostAliasOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostAlias_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostAlias_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.HostAlias.class, io.kubernetes.client.proto.V1.HostAlias.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.HostAlias.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ip_ = "";
        hostnames_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostAlias_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HostAlias getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.HostAlias.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HostAlias build() {
        io.kubernetes.client.proto.V1.HostAlias result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HostAlias buildPartial() {
        io.kubernetes.client.proto.V1.HostAlias result = new io.kubernetes.client.proto.V1.HostAlias(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.HostAlias result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ip_ = ip_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          hostnames_.makeImmutable();
          result.hostnames_ = hostnames_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.HostAlias) {
          return mergeFrom((io.kubernetes.client.proto.V1.HostAlias)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.HostAlias other) {
        if (other == io.kubernetes.client.proto.V1.HostAlias.getDefaultInstance()) return this;
        if (other.hasIp()) {
          ip_ = other.ip_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.hostnames_.isEmpty()) {
          if (hostnames_.isEmpty()) {
            hostnames_ = other.hostnames_;
            bitField0_ |= 0x00000002;
          } else {
            ensureHostnamesIsMutable();
            hostnames_.addAll(other.hostnames_);
          }
          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: {
                ip_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureHostnamesIsMutable();
                hostnames_.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 java.lang.Object ip_ = "";
      /**
       * <pre>
       * IP address of the host file entry.
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return Whether the ip field is set.
       */
      public boolean hasIp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * IP address of the host file entry.
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return The ip.
       */
      public java.lang.String getIp() {
        java.lang.Object ref = ip_;
        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()) {
            ip_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * IP address of the host file entry.
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return The bytes for ip.
       */
      public com.google.protobuf.ByteString
          getIpBytes() {
        java.lang.Object ref = ip_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ip_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * IP address of the host file entry.
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @param value The ip to set.
       * @return This builder for chaining.
       */
      public Builder setIp(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ip_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IP address of the host file entry.
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIp() {
        ip_ = getDefaultInstance().getIp();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IP address of the host file entry.
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @param value The bytes for ip to set.
       * @return This builder for chaining.
       */
      public Builder setIpBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ip_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList hostnames_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureHostnamesIsMutable() {
        if (!hostnames_.isModifiable()) {
          hostnames_ = new com.google.protobuf.LazyStringArrayList(hostnames_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * Hostnames for the above IP address.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string hostnames = 2;</code>
       * @return A list containing the hostnames.
       */
      public com.google.protobuf.ProtocolStringList
          getHostnamesList() {
        hostnames_.makeImmutable();
        return hostnames_;
      }
      /**
       * <pre>
       * Hostnames for the above IP address.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string hostnames = 2;</code>
       * @return The count of hostnames.
       */
      public int getHostnamesCount() {
        return hostnames_.size();
      }
      /**
       * <pre>
       * Hostnames for the above IP address.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string hostnames = 2;</code>
       * @param index The index of the element to return.
       * @return The hostnames at the given index.
       */
      public java.lang.String getHostnames(int index) {
        return hostnames_.get(index);
      }
      /**
       * <pre>
       * Hostnames for the above IP address.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string hostnames = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the hostnames at the given index.
       */
      public com.google.protobuf.ByteString
          getHostnamesBytes(int index) {
        return hostnames_.getByteString(index);
      }
      /**
       * <pre>
       * Hostnames for the above IP address.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string hostnames = 2;</code>
       * @param index The index to set the value at.
       * @param value The hostnames to set.
       * @return This builder for chaining.
       */
      public Builder setHostnames(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureHostnamesIsMutable();
        hostnames_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Hostnames for the above IP address.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string hostnames = 2;</code>
       * @param value The hostnames to add.
       * @return This builder for chaining.
       */
      public Builder addHostnames(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureHostnamesIsMutable();
        hostnames_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Hostnames for the above IP address.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string hostnames = 2;</code>
       * @param values The hostnames to add.
       * @return This builder for chaining.
       */
      public Builder addAllHostnames(
          java.lang.Iterable<java.lang.String> values) {
        ensureHostnamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, hostnames_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Hostnames for the above IP address.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string hostnames = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostnames() {
        hostnames_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Hostnames for the above IP address.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string hostnames = 2;</code>
       * @param value The bytes of the hostnames to add.
       * @return This builder for chaining.
       */
      public Builder addHostnamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureHostnamesIsMutable();
        hostnames_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.HostAlias)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.HostAlias)
    private static final io.kubernetes.client.proto.V1.HostAlias DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.HostAlias();
    }

    public static io.kubernetes.client.proto.V1.HostAlias getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HostAlias>
        PARSER = new com.google.protobuf.AbstractParser<HostAlias>() {
      @java.lang.Override
      public HostAlias 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<HostAlias> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<HostAlias> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostAlias getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HostIPOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.HostIP)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * IP is the IP address assigned to the host
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return Whether the ip field is set.
     */
    boolean hasIp();
    /**
     * <pre>
     * IP is the IP address assigned to the host
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The ip.
     */
    java.lang.String getIp();
    /**
     * <pre>
     * IP is the IP address assigned to the host
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The bytes for ip.
     */
    com.google.protobuf.ByteString
        getIpBytes();
  }
  /**
   * <pre>
   * HostIP represents a single IP address allocated to the host.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.HostIP}
   */
  public static final class HostIP extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.HostIP)
      HostIPOrBuilder {
  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= */ "",
        HostIP.class.getName());
    }
    // Use HostIP.newBuilder() to construct.
    private HostIP(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private HostIP() {
      ip_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostIP_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostIP_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.HostIP.class, io.kubernetes.client.proto.V1.HostIP.Builder.class);
    }

    private int bitField0_;
    public static final int IP_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object ip_ = "";
    /**
     * <pre>
     * IP is the IP address assigned to the host
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return Whether the ip field is set.
     */
    @java.lang.Override
    public boolean hasIp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * IP is the IP address assigned to the host
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The ip.
     */
    @java.lang.Override
    public java.lang.String getIp() {
      java.lang.Object ref = ip_;
      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()) {
          ip_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * IP is the IP address assigned to the host
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The bytes for ip.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIpBytes() {
      java.lang.Object ref = ip_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ip_ = 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, ip_);
      }
      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, ip_);
      }
      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.V1.HostIP)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.HostIP other = (io.kubernetes.client.proto.V1.HostIP) obj;

      if (hasIp() != other.hasIp()) return false;
      if (hasIp()) {
        if (!getIp()
            .equals(other.getIp())) 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 (hasIp()) {
        hash = (37 * hash) + IP_FIELD_NUMBER;
        hash = (53 * hash) + getIp().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.HostIP parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HostIP 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.V1.HostIP parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HostIP 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.V1.HostIP parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HostIP parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.HostIP parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.HostIP 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.V1.HostIP parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.HostIP 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.V1.HostIP parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.HostIP 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.V1.HostIP 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>
     * HostIP represents a single IP address allocated to the host.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.HostIP}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.HostIP)
        io.kubernetes.client.proto.V1.HostIPOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostIP_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostIP_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.HostIP.class, io.kubernetes.client.proto.V1.HostIP.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.HostIP.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ip_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostIP_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HostIP getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.HostIP.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HostIP build() {
        io.kubernetes.client.proto.V1.HostIP result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HostIP buildPartial() {
        io.kubernetes.client.proto.V1.HostIP result = new io.kubernetes.client.proto.V1.HostIP(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.HostIP result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ip_ = ip_;
          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.V1.HostIP) {
          return mergeFrom((io.kubernetes.client.proto.V1.HostIP)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.HostIP other) {
        if (other == io.kubernetes.client.proto.V1.HostIP.getDefaultInstance()) return this;
        if (other.hasIp()) {
          ip_ = other.ip_;
          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: {
                ip_ = 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 ip_ = "";
      /**
       * <pre>
       * IP is the IP address assigned to the host
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return Whether the ip field is set.
       */
      public boolean hasIp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * IP is the IP address assigned to the host
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return The ip.
       */
      public java.lang.String getIp() {
        java.lang.Object ref = ip_;
        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()) {
            ip_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * IP is the IP address assigned to the host
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return The bytes for ip.
       */
      public com.google.protobuf.ByteString
          getIpBytes() {
        java.lang.Object ref = ip_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ip_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * IP is the IP address assigned to the host
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @param value The ip to set.
       * @return This builder for chaining.
       */
      public Builder setIp(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ip_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IP is the IP address assigned to the host
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIp() {
        ip_ = getDefaultInstance().getIp();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IP is the IP address assigned to the host
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @param value The bytes for ip to set.
       * @return This builder for chaining.
       */
      public Builder setIpBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ip_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.HostIP)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.HostIP)
    private static final io.kubernetes.client.proto.V1.HostIP DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.HostIP();
    }

    public static io.kubernetes.client.proto.V1.HostIP getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HostIP>
        PARSER = new com.google.protobuf.AbstractParser<HostIP>() {
      @java.lang.Override
      public HostIP 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<HostIP> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<HostIP> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostIP getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HostPathVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.HostPathVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * path of the directory on the host.
     * If the path is a symlink, it will follow the link to the real path.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * path of the directory on the host.
     * If the path is a symlink, it will follow the link to the real path.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path of the directory on the host.
     * If the path is a symlink, it will follow the link to the real path.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * type for HostPath Volume
     * Defaults to ""
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </pre>
     *
     * <code>optional string type = 2;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * type for HostPath Volume
     * Defaults to ""
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </pre>
     *
     * <code>optional string type = 2;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * type for HostPath Volume
     * Defaults to ""
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </pre>
     *
     * <code>optional string type = 2;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();
  }
  /**
   * <pre>
   * Represents a host path mapped into a pod.
   * Host path volumes do not support ownership management or SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.HostPathVolumeSource}
   */
  public static final class HostPathVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.HostPathVolumeSource)
      HostPathVolumeSourceOrBuilder {
  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= */ "",
        HostPathVolumeSource.class.getName());
    }
    // Use HostPathVolumeSource.newBuilder() to construct.
    private HostPathVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private HostPathVolumeSource() {
      path_ = "";
      type_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostPathVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostPathVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.HostPathVolumeSource.class, io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * path of the directory on the host.
     * If the path is a symlink, it will follow the link to the real path.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * path of the directory on the host.
     * If the path is a symlink, it will follow the link to the real path.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * </pre>
     *
     * <code>optional string path = 1;</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 of the directory on the host.
     * If the path is a symlink, it will follow the link to the real path.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * </pre>
     *
     * <code>optional string path = 1;</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 TYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * type for HostPath Volume
     * Defaults to ""
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </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 for HostPath Volume
     * Defaults to ""
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </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 for HostPath Volume
     * Defaults to ""
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </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;
      }
    }

    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, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, type_);
      }
      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, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1.HostPathVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.HostPathVolumeSource other = (io.kubernetes.client.proto.V1.HostPathVolumeSource) obj;

      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) 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 (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.HostPathVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HostPathVolumeSource 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.V1.HostPathVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HostPathVolumeSource 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.V1.HostPathVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.HostPathVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.HostPathVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.HostPathVolumeSource 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.V1.HostPathVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.HostPathVolumeSource 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.V1.HostPathVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.HostPathVolumeSource 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.V1.HostPathVolumeSource 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>
     * Represents a host path mapped into a pod.
     * Host path volumes do not support ownership management or SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.HostPathVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.HostPathVolumeSource)
        io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostPathVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostPathVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.HostPathVolumeSource.class, io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.HostPathVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        type_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_HostPathVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HostPathVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HostPathVolumeSource build() {
        io.kubernetes.client.proto.V1.HostPathVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.HostPathVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.HostPathVolumeSource result = new io.kubernetes.client.proto.V1.HostPathVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.HostPathVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.type_ = type_;
          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.V1.HostPathVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.HostPathVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.HostPathVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance()) return this;
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                type_ = 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 path_ = "";
      /**
       * <pre>
       * path of the directory on the host.
       * If the path is a symlink, it will follow the link to the real path.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * path of the directory on the host.
       * If the path is a symlink, it will follow the link to the real path.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * </pre>
       *
       * <code>optional string path = 1;</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 of the directory on the host.
       * If the path is a symlink, it will follow the link to the real path.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * </pre>
       *
       * <code>optional string path = 1;</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 of the directory on the host.
       * If the path is a symlink, it will follow the link to the real path.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of the directory on the host.
       * If the path is a symlink, it will follow the link to the real path.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of the directory on the host.
       * If the path is a symlink, it will follow the link to the real path.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * </pre>
       *
       * <code>optional string path = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <pre>
       * type for HostPath Volume
       * Defaults to ""
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </pre>
       *
       * <code>optional string type = 2;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * type for HostPath Volume
       * Defaults to ""
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </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 for HostPath Volume
       * Defaults to ""
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </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 for HostPath Volume
       * Defaults to ""
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </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 for HostPath Volume
       * Defaults to ""
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </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 for HostPath Volume
       * Defaults to ""
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </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;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.HostPathVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.HostPathVolumeSource)
    private static final io.kubernetes.client.proto.V1.HostPathVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.HostPathVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.HostPathVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HostPathVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<HostPathVolumeSource>() {
      @java.lang.Override
      public HostPathVolumeSource 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<HostPathVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<HostPathVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostPathVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ISCSIPersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ISCSIPersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return Whether the targetPortal field is set.
     */
    boolean hasTargetPortal();
    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return The targetPortal.
     */
    java.lang.String getTargetPortal();
    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return The bytes for targetPortal.
     */
    com.google.protobuf.ByteString
        getTargetPortalBytes();

    /**
     * <pre>
     * iqn is Target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return Whether the iqn field is set.
     */
    boolean hasIqn();
    /**
     * <pre>
     * iqn is Target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return The iqn.
     */
    java.lang.String getIqn();
    /**
     * <pre>
     * iqn is Target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return The bytes for iqn.
     */
    com.google.protobuf.ByteString
        getIqnBytes();

    /**
     * <pre>
     * lun is iSCSI Target Lun number.
     * </pre>
     *
     * <code>optional int32 lun = 3;</code>
     * @return Whether the lun field is set.
     */
    boolean hasLun();
    /**
     * <pre>
     * lun is iSCSI Target Lun number.
     * </pre>
     *
     * <code>optional int32 lun = 3;</code>
     * @return The lun.
     */
    int getLun();

    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return Whether the iscsiInterface field is set.
     */
    boolean hasIscsiInterface();
    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return The iscsiInterface.
     */
    java.lang.String getIscsiInterface();
    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return The bytes for iscsiInterface.
     */
    com.google.protobuf.ByteString
        getIscsiInterfaceBytes();

    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @return A list containing the portals.
     */
    java.util.List<java.lang.String>
        getPortalsList();
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @return The count of portals.
     */
    int getPortalsCount();
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @param index The index of the element to return.
     * @return The portals at the given index.
     */
    java.lang.String getPortals(int index);
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the portals at the given index.
     */
    com.google.protobuf.ByteString
        getPortalsBytes(int index);

    /**
     * <pre>
     * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthDiscovery = 8;</code>
     * @return Whether the chapAuthDiscovery field is set.
     */
    boolean hasChapAuthDiscovery();
    /**
     * <pre>
     * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthDiscovery = 8;</code>
     * @return The chapAuthDiscovery.
     */
    boolean getChapAuthDiscovery();

    /**
     * <pre>
     * chapAuthSession defines whether support iSCSI Session CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthSession = 11;</code>
     * @return Whether the chapAuthSession field is set.
     */
    boolean hasChapAuthSession();
    /**
     * <pre>
     * chapAuthSession defines whether support iSCSI Session CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthSession = 11;</code>
     * @return The chapAuthSession.
     */
    boolean getChapAuthSession();

    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getSecretRef();
    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder();

    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return Whether the initiatorName field is set.
     */
    boolean hasInitiatorName();
    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return The initiatorName.
     */
    java.lang.String getInitiatorName();
    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return The bytes for initiatorName.
     */
    com.google.protobuf.ByteString
        getInitiatorNameBytes();
  }
  /**
   * <pre>
   * ISCSIPersistentVolumeSource represents an ISCSI disk.
   * ISCSI volumes can only be mounted as read/write once.
   * ISCSI volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ISCSIPersistentVolumeSource}
   */
  public static final class ISCSIPersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ISCSIPersistentVolumeSource)
      ISCSIPersistentVolumeSourceOrBuilder {
  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= */ "",
        ISCSIPersistentVolumeSource.class.getName());
    }
    // Use ISCSIPersistentVolumeSource.newBuilder() to construct.
    private ISCSIPersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ISCSIPersistentVolumeSource() {
      targetPortal_ = "";
      iqn_ = "";
      iscsiInterface_ = "";
      fsType_ = "";
      portals_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      initiatorName_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ISCSIPersistentVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ISCSIPersistentVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.class, io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int TARGETPORTAL_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object targetPortal_ = "";
    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return Whether the targetPortal field is set.
     */
    @java.lang.Override
    public boolean hasTargetPortal() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return The targetPortal.
     */
    @java.lang.Override
    public java.lang.String getTargetPortal() {
      java.lang.Object ref = targetPortal_;
      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()) {
          targetPortal_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return The bytes for targetPortal.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTargetPortalBytes() {
      java.lang.Object ref = targetPortal_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetPortal_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IQN_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object iqn_ = "";
    /**
     * <pre>
     * iqn is Target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return Whether the iqn field is set.
     */
    @java.lang.Override
    public boolean hasIqn() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * iqn is Target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return The iqn.
     */
    @java.lang.Override
    public java.lang.String getIqn() {
      java.lang.Object ref = iqn_;
      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()) {
          iqn_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * iqn is Target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return The bytes for iqn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIqnBytes() {
      java.lang.Object ref = iqn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        iqn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LUN_FIELD_NUMBER = 3;
    private int lun_ = 0;
    /**
     * <pre>
     * lun is iSCSI Target Lun number.
     * </pre>
     *
     * <code>optional int32 lun = 3;</code>
     * @return Whether the lun field is set.
     */
    @java.lang.Override
    public boolean hasLun() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * lun is iSCSI Target Lun number.
     * </pre>
     *
     * <code>optional int32 lun = 3;</code>
     * @return The lun.
     */
    @java.lang.Override
    public int getLun() {
      return lun_;
    }

    public static final int ISCSIINTERFACE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object iscsiInterface_ = "";
    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return Whether the iscsiInterface field is set.
     */
    @java.lang.Override
    public boolean hasIscsiInterface() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return The iscsiInterface.
     */
    @java.lang.Override
    public java.lang.String getIscsiInterface() {
      java.lang.Object ref = iscsiInterface_;
      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()) {
          iscsiInterface_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return The bytes for iscsiInterface.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIscsiInterfaceBytes() {
      java.lang.Object ref = iscsiInterface_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        iscsiInterface_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 6;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int PORTALS_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList portals_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @return A list containing the portals.
     */
    public com.google.protobuf.ProtocolStringList
        getPortalsList() {
      return portals_;
    }
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @return The count of portals.
     */
    public int getPortalsCount() {
      return portals_.size();
    }
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @param index The index of the element to return.
     * @return The portals at the given index.
     */
    public java.lang.String getPortals(int index) {
      return portals_.get(index);
    }
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the portals at the given index.
     */
    public com.google.protobuf.ByteString
        getPortalsBytes(int index) {
      return portals_.getByteString(index);
    }

    public static final int CHAPAUTHDISCOVERY_FIELD_NUMBER = 8;
    private boolean chapAuthDiscovery_ = false;
    /**
     * <pre>
     * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthDiscovery = 8;</code>
     * @return Whether the chapAuthDiscovery field is set.
     */
    @java.lang.Override
    public boolean hasChapAuthDiscovery() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthDiscovery = 8;</code>
     * @return The chapAuthDiscovery.
     */
    @java.lang.Override
    public boolean getChapAuthDiscovery() {
      return chapAuthDiscovery_;
    }

    public static final int CHAPAUTHSESSION_FIELD_NUMBER = 11;
    private boolean chapAuthSession_ = false;
    /**
     * <pre>
     * chapAuthSession defines whether support iSCSI Session CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthSession = 11;</code>
     * @return Whether the chapAuthSession field is set.
     */
    @java.lang.Override
    public boolean hasChapAuthSession() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * chapAuthSession defines whether support iSCSI Session CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthSession = 11;</code>
     * @return The chapAuthSession.
     */
    @java.lang.Override
    public boolean getChapAuthSession() {
      return chapAuthSession_;
    }

    public static final int SECRETREF_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.V1.SecretReference secretRef_;
    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }

    public static final int INITIATORNAME_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private volatile java.lang.Object initiatorName_ = "";
    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return Whether the initiatorName field is set.
     */
    @java.lang.Override
    public boolean hasInitiatorName() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return The initiatorName.
     */
    @java.lang.Override
    public java.lang.String getInitiatorName() {
      java.lang.Object ref = initiatorName_;
      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()) {
          initiatorName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return The bytes for initiatorName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getInitiatorNameBytes() {
      java.lang.Object ref = initiatorName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        initiatorName_ = 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, targetPortal_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, iqn_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, lun_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, iscsiInterface_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, fsType_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(6, readOnly_);
      }
      for (int i = 0; i < portals_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, portals_.getRaw(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeBool(8, chapAuthDiscovery_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeMessage(10, getSecretRef());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeBool(11, chapAuthSession_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 12, initiatorName_);
      }
      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, targetPortal_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, iqn_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, lun_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, iscsiInterface_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, fsType_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, readOnly_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < portals_.size(); i++) {
          dataSize += computeStringSizeNoTag(portals_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPortalsList().size();
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, chapAuthDiscovery_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getSecretRef());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, chapAuthSession_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(12, initiatorName_);
      }
      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.V1.ISCSIPersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource other = (io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource) obj;

      if (hasTargetPortal() != other.hasTargetPortal()) return false;
      if (hasTargetPortal()) {
        if (!getTargetPortal()
            .equals(other.getTargetPortal())) return false;
      }
      if (hasIqn() != other.hasIqn()) return false;
      if (hasIqn()) {
        if (!getIqn()
            .equals(other.getIqn())) return false;
      }
      if (hasLun() != other.hasLun()) return false;
      if (hasLun()) {
        if (getLun()
            != other.getLun()) return false;
      }
      if (hasIscsiInterface() != other.hasIscsiInterface()) return false;
      if (hasIscsiInterface()) {
        if (!getIscsiInterface()
            .equals(other.getIscsiInterface())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (!getPortalsList()
          .equals(other.getPortalsList())) return false;
      if (hasChapAuthDiscovery() != other.hasChapAuthDiscovery()) return false;
      if (hasChapAuthDiscovery()) {
        if (getChapAuthDiscovery()
            != other.getChapAuthDiscovery()) return false;
      }
      if (hasChapAuthSession() != other.hasChapAuthSession()) return false;
      if (hasChapAuthSession()) {
        if (getChapAuthSession()
            != other.getChapAuthSession()) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) return false;
      }
      if (hasInitiatorName() != other.hasInitiatorName()) return false;
      if (hasInitiatorName()) {
        if (!getInitiatorName()
            .equals(other.getInitiatorName())) 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 (hasTargetPortal()) {
        hash = (37 * hash) + TARGETPORTAL_FIELD_NUMBER;
        hash = (53 * hash) + getTargetPortal().hashCode();
      }
      if (hasIqn()) {
        hash = (37 * hash) + IQN_FIELD_NUMBER;
        hash = (53 * hash) + getIqn().hashCode();
      }
      if (hasLun()) {
        hash = (37 * hash) + LUN_FIELD_NUMBER;
        hash = (53 * hash) + getLun();
      }
      if (hasIscsiInterface()) {
        hash = (37 * hash) + ISCSIINTERFACE_FIELD_NUMBER;
        hash = (53 * hash) + getIscsiInterface().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (getPortalsCount() > 0) {
        hash = (37 * hash) + PORTALS_FIELD_NUMBER;
        hash = (53 * hash) + getPortalsList().hashCode();
      }
      if (hasChapAuthDiscovery()) {
        hash = (37 * hash) + CHAPAUTHDISCOVERY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getChapAuthDiscovery());
      }
      if (hasChapAuthSession()) {
        hash = (37 * hash) + CHAPAUTHSESSION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getChapAuthSession());
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      if (hasInitiatorName()) {
        hash = (37 * hash) + INITIATORNAME_FIELD_NUMBER;
        hash = (53 * hash) + getInitiatorName().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource 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.V1.ISCSIPersistentVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource 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.V1.ISCSIPersistentVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource 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.V1.ISCSIPersistentVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource 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.V1.ISCSIPersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource 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.V1.ISCSIPersistentVolumeSource 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>
     * ISCSIPersistentVolumeSource represents an ISCSI disk.
     * ISCSI volumes can only be mounted as read/write once.
     * ISCSI volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ISCSIPersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ISCSIPersistentVolumeSource)
        io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ISCSIPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ISCSIPersistentVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.class, io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        targetPortal_ = "";
        iqn_ = "";
        lun_ = 0;
        iscsiInterface_ = "";
        fsType_ = "";
        readOnly_ = false;
        portals_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        chapAuthDiscovery_ = false;
        chapAuthSession_ = false;
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        initiatorName_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ISCSIPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource build() {
        io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource result = new io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.targetPortal_ = targetPortal_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.iqn_ = iqn_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.lun_ = lun_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.iscsiInterface_ = iscsiInterface_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          portals_.makeImmutable();
          result.portals_ = portals_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.chapAuthDiscovery_ = chapAuthDiscovery_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.chapAuthSession_ = chapAuthSession_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.initiatorName_ = initiatorName_;
          to_bitField0_ |= 0x00000200;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.getDefaultInstance()) return this;
        if (other.hasTargetPortal()) {
          targetPortal_ = other.targetPortal_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasIqn()) {
          iqn_ = other.iqn_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasLun()) {
          setLun(other.getLun());
        }
        if (other.hasIscsiInterface()) {
          iscsiInterface_ = other.iscsiInterface_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (!other.portals_.isEmpty()) {
          if (portals_.isEmpty()) {
            portals_ = other.portals_;
            bitField0_ |= 0x00000040;
          } else {
            ensurePortalsIsMutable();
            portals_.addAll(other.portals_);
          }
          onChanged();
        }
        if (other.hasChapAuthDiscovery()) {
          setChapAuthDiscovery(other.getChapAuthDiscovery());
        }
        if (other.hasChapAuthSession()) {
          setChapAuthSession(other.getChapAuthSession());
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        if (other.hasInitiatorName()) {
          initiatorName_ = other.initiatorName_;
          bitField0_ |= 0x00000400;
          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: {
                targetPortal_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                iqn_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                lun_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                iscsiInterface_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 58: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensurePortalsIsMutable();
                portals_.add(bs);
                break;
              } // case 58
              case 64: {
                chapAuthDiscovery_ = input.readBool();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              case 82: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 88: {
                chapAuthSession_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 88
              case 98: {
                initiatorName_ = input.readBytes();
                bitField0_ |= 0x00000400;
                break;
              } // case 98
              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 targetPortal_ = "";
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @return Whether the targetPortal field is set.
       */
      public boolean hasTargetPortal() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @return The targetPortal.
       */
      public java.lang.String getTargetPortal() {
        java.lang.Object ref = targetPortal_;
        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()) {
            targetPortal_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @return The bytes for targetPortal.
       */
      public com.google.protobuf.ByteString
          getTargetPortalBytes() {
        java.lang.Object ref = targetPortal_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetPortal_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @param value The targetPortal to set.
       * @return This builder for chaining.
       */
      public Builder setTargetPortal(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        targetPortal_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetPortal() {
        targetPortal_ = getDefaultInstance().getTargetPortal();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @param value The bytes for targetPortal to set.
       * @return This builder for chaining.
       */
      public Builder setTargetPortalBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        targetPortal_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object iqn_ = "";
      /**
       * <pre>
       * iqn is Target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @return Whether the iqn field is set.
       */
      public boolean hasIqn() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * iqn is Target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @return The iqn.
       */
      public java.lang.String getIqn() {
        java.lang.Object ref = iqn_;
        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()) {
            iqn_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * iqn is Target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @return The bytes for iqn.
       */
      public com.google.protobuf.ByteString
          getIqnBytes() {
        java.lang.Object ref = iqn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          iqn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * iqn is Target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @param value The iqn to set.
       * @return This builder for chaining.
       */
      public Builder setIqn(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        iqn_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iqn is Target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIqn() {
        iqn_ = getDefaultInstance().getIqn();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iqn is Target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @param value The bytes for iqn to set.
       * @return This builder for chaining.
       */
      public Builder setIqnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        iqn_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private int lun_ ;
      /**
       * <pre>
       * lun is iSCSI Target Lun number.
       * </pre>
       *
       * <code>optional int32 lun = 3;</code>
       * @return Whether the lun field is set.
       */
      @java.lang.Override
      public boolean hasLun() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * lun is iSCSI Target Lun number.
       * </pre>
       *
       * <code>optional int32 lun = 3;</code>
       * @return The lun.
       */
      @java.lang.Override
      public int getLun() {
        return lun_;
      }
      /**
       * <pre>
       * lun is iSCSI Target Lun number.
       * </pre>
       *
       * <code>optional int32 lun = 3;</code>
       * @param value The lun to set.
       * @return This builder for chaining.
       */
      public Builder setLun(int value) {

        lun_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lun is iSCSI Target Lun number.
       * </pre>
       *
       * <code>optional int32 lun = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLun() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lun_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object iscsiInterface_ = "";
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @return Whether the iscsiInterface field is set.
       */
      public boolean hasIscsiInterface() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @return The iscsiInterface.
       */
      public java.lang.String getIscsiInterface() {
        java.lang.Object ref = iscsiInterface_;
        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()) {
            iscsiInterface_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @return The bytes for iscsiInterface.
       */
      public com.google.protobuf.ByteString
          getIscsiInterfaceBytes() {
        java.lang.Object ref = iscsiInterface_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          iscsiInterface_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @param value The iscsiInterface to set.
       * @return This builder for chaining.
       */
      public Builder setIscsiInterface(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        iscsiInterface_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIscsiInterface() {
        iscsiInterface_ = getDefaultInstance().getIscsiInterface();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @param value The bytes for iscsiInterface to set.
       * @return This builder for chaining.
       */
      public Builder setIscsiInterfaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        iscsiInterface_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000020);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList portals_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensurePortalsIsMutable() {
        if (!portals_.isModifiable()) {
          portals_ = new com.google.protobuf.LazyStringArrayList(portals_);
        }
        bitField0_ |= 0x00000040;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @return A list containing the portals.
       */
      public com.google.protobuf.ProtocolStringList
          getPortalsList() {
        portals_.makeImmutable();
        return portals_;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @return The count of portals.
       */
      public int getPortalsCount() {
        return portals_.size();
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param index The index of the element to return.
       * @return The portals at the given index.
       */
      public java.lang.String getPortals(int index) {
        return portals_.get(index);
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the portals at the given index.
       */
      public com.google.protobuf.ByteString
          getPortalsBytes(int index) {
        return portals_.getByteString(index);
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param index The index to set the value at.
       * @param value The portals to set.
       * @return This builder for chaining.
       */
      public Builder setPortals(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePortalsIsMutable();
        portals_.set(index, value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param value The portals to add.
       * @return This builder for chaining.
       */
      public Builder addPortals(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePortalsIsMutable();
        portals_.add(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param values The portals to add.
       * @return This builder for chaining.
       */
      public Builder addAllPortals(
          java.lang.Iterable<java.lang.String> values) {
        ensurePortalsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, portals_);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearPortals() {
        portals_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param value The bytes of the portals to add.
       * @return This builder for chaining.
       */
      public Builder addPortalsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePortalsIsMutable();
        portals_.add(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private boolean chapAuthDiscovery_ ;
      /**
       * <pre>
       * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthDiscovery = 8;</code>
       * @return Whether the chapAuthDiscovery field is set.
       */
      @java.lang.Override
      public boolean hasChapAuthDiscovery() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthDiscovery = 8;</code>
       * @return The chapAuthDiscovery.
       */
      @java.lang.Override
      public boolean getChapAuthDiscovery() {
        return chapAuthDiscovery_;
      }
      /**
       * <pre>
       * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthDiscovery = 8;</code>
       * @param value The chapAuthDiscovery to set.
       * @return This builder for chaining.
       */
      public Builder setChapAuthDiscovery(boolean value) {

        chapAuthDiscovery_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthDiscovery = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearChapAuthDiscovery() {
        bitField0_ = (bitField0_ & ~0x00000080);
        chapAuthDiscovery_ = false;
        onChanged();
        return this;
      }

      private boolean chapAuthSession_ ;
      /**
       * <pre>
       * chapAuthSession defines whether support iSCSI Session CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthSession = 11;</code>
       * @return Whether the chapAuthSession field is set.
       */
      @java.lang.Override
      public boolean hasChapAuthSession() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * chapAuthSession defines whether support iSCSI Session CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthSession = 11;</code>
       * @return The chapAuthSession.
       */
      @java.lang.Override
      public boolean getChapAuthSession() {
        return chapAuthSession_;
      }
      /**
       * <pre>
       * chapAuthSession defines whether support iSCSI Session CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthSession = 11;</code>
       * @param value The chapAuthSession to set.
       * @return This builder for chaining.
       */
      public Builder setChapAuthSession(boolean value) {

        chapAuthSession_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * chapAuthSession defines whether support iSCSI Session CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthSession = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearChapAuthSession() {
        bitField0_ = (bitField0_ & ~0x00000100);
        chapAuthSession_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SecretReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000200);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      private java.lang.Object initiatorName_ = "";
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @return Whether the initiatorName field is set.
       */
      public boolean hasInitiatorName() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @return The initiatorName.
       */
      public java.lang.String getInitiatorName() {
        java.lang.Object ref = initiatorName_;
        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()) {
            initiatorName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @return The bytes for initiatorName.
       */
      public com.google.protobuf.ByteString
          getInitiatorNameBytes() {
        java.lang.Object ref = initiatorName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          initiatorName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @param value The initiatorName to set.
       * @return This builder for chaining.
       */
      public Builder setInitiatorName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        initiatorName_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearInitiatorName() {
        initiatorName_ = getDefaultInstance().getInitiatorName();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @param value The bytes for initiatorName to set.
       * @return This builder for chaining.
       */
      public Builder setInitiatorNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        initiatorName_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ISCSIPersistentVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ISCSIPersistentVolumeSource)
    private static final io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ISCSIPersistentVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<ISCSIPersistentVolumeSource>() {
      @java.lang.Override
      public ISCSIPersistentVolumeSource 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<ISCSIPersistentVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ISCSIPersistentVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ISCSIVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ISCSIVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return Whether the targetPortal field is set.
     */
    boolean hasTargetPortal();
    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return The targetPortal.
     */
    java.lang.String getTargetPortal();
    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return The bytes for targetPortal.
     */
    com.google.protobuf.ByteString
        getTargetPortalBytes();

    /**
     * <pre>
     * iqn is the target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return Whether the iqn field is set.
     */
    boolean hasIqn();
    /**
     * <pre>
     * iqn is the target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return The iqn.
     */
    java.lang.String getIqn();
    /**
     * <pre>
     * iqn is the target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return The bytes for iqn.
     */
    com.google.protobuf.ByteString
        getIqnBytes();

    /**
     * <pre>
     * lun represents iSCSI Target Lun number.
     * </pre>
     *
     * <code>optional int32 lun = 3;</code>
     * @return Whether the lun field is set.
     */
    boolean hasLun();
    /**
     * <pre>
     * lun represents iSCSI Target Lun number.
     * </pre>
     *
     * <code>optional int32 lun = 3;</code>
     * @return The lun.
     */
    int getLun();

    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return Whether the iscsiInterface field is set.
     */
    boolean hasIscsiInterface();
    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return The iscsiInterface.
     */
    java.lang.String getIscsiInterface();
    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return The bytes for iscsiInterface.
     */
    com.google.protobuf.ByteString
        getIscsiInterfaceBytes();

    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @return A list containing the portals.
     */
    java.util.List<java.lang.String>
        getPortalsList();
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @return The count of portals.
     */
    int getPortalsCount();
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @param index The index of the element to return.
     * @return The portals at the given index.
     */
    java.lang.String getPortals(int index);
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the portals at the given index.
     */
    com.google.protobuf.ByteString
        getPortalsBytes(int index);

    /**
     * <pre>
     * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthDiscovery = 8;</code>
     * @return Whether the chapAuthDiscovery field is set.
     */
    boolean hasChapAuthDiscovery();
    /**
     * <pre>
     * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthDiscovery = 8;</code>
     * @return The chapAuthDiscovery.
     */
    boolean getChapAuthDiscovery();

    /**
     * <pre>
     * chapAuthSession defines whether support iSCSI Session CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthSession = 11;</code>
     * @return Whether the chapAuthSession field is set.
     */
    boolean hasChapAuthSession();
    /**
     * <pre>
     * chapAuthSession defines whether support iSCSI Session CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthSession = 11;</code>
     * @return The chapAuthSession.
     */
    boolean getChapAuthSession();

    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef();
    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder();

    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return Whether the initiatorName field is set.
     */
    boolean hasInitiatorName();
    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return The initiatorName.
     */
    java.lang.String getInitiatorName();
    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return The bytes for initiatorName.
     */
    com.google.protobuf.ByteString
        getInitiatorNameBytes();
  }
  /**
   * <pre>
   * Represents an ISCSI disk.
   * ISCSI volumes can only be mounted as read/write once.
   * ISCSI volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ISCSIVolumeSource}
   */
  public static final class ISCSIVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ISCSIVolumeSource)
      ISCSIVolumeSourceOrBuilder {
  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= */ "",
        ISCSIVolumeSource.class.getName());
    }
    // Use ISCSIVolumeSource.newBuilder() to construct.
    private ISCSIVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ISCSIVolumeSource() {
      targetPortal_ = "";
      iqn_ = "";
      iscsiInterface_ = "";
      fsType_ = "";
      portals_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      initiatorName_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ISCSIVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ISCSIVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ISCSIVolumeSource.class, io.kubernetes.client.proto.V1.ISCSIVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int TARGETPORTAL_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object targetPortal_ = "";
    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return Whether the targetPortal field is set.
     */
    @java.lang.Override
    public boolean hasTargetPortal() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return The targetPortal.
     */
    @java.lang.Override
    public java.lang.String getTargetPortal() {
      java.lang.Object ref = targetPortal_;
      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()) {
          targetPortal_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * </pre>
     *
     * <code>optional string targetPortal = 1;</code>
     * @return The bytes for targetPortal.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTargetPortalBytes() {
      java.lang.Object ref = targetPortal_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetPortal_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IQN_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object iqn_ = "";
    /**
     * <pre>
     * iqn is the target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return Whether the iqn field is set.
     */
    @java.lang.Override
    public boolean hasIqn() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * iqn is the target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return The iqn.
     */
    @java.lang.Override
    public java.lang.String getIqn() {
      java.lang.Object ref = iqn_;
      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()) {
          iqn_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * iqn is the target iSCSI Qualified Name.
     * </pre>
     *
     * <code>optional string iqn = 2;</code>
     * @return The bytes for iqn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIqnBytes() {
      java.lang.Object ref = iqn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        iqn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LUN_FIELD_NUMBER = 3;
    private int lun_ = 0;
    /**
     * <pre>
     * lun represents iSCSI Target Lun number.
     * </pre>
     *
     * <code>optional int32 lun = 3;</code>
     * @return Whether the lun field is set.
     */
    @java.lang.Override
    public boolean hasLun() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * lun represents iSCSI Target Lun number.
     * </pre>
     *
     * <code>optional int32 lun = 3;</code>
     * @return The lun.
     */
    @java.lang.Override
    public int getLun() {
      return lun_;
    }

    public static final int ISCSIINTERFACE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object iscsiInterface_ = "";
    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return Whether the iscsiInterface field is set.
     */
    @java.lang.Override
    public boolean hasIscsiInterface() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return The iscsiInterface.
     */
    @java.lang.Override
    public java.lang.String getIscsiInterface() {
      java.lang.Object ref = iscsiInterface_;
      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()) {
          iscsiInterface_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * iscsiInterface is the interface Name that uses an iSCSI transport.
     * Defaults to 'default' (tcp).
     * +optional
     * </pre>
     *
     * <code>optional string iscsiInterface = 4;</code>
     * @return The bytes for iscsiInterface.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIscsiInterfaceBytes() {
      java.lang.Object ref = iscsiInterface_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        iscsiInterface_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 5;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 6;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 6;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int PORTALS_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList portals_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @return A list containing the portals.
     */
    public com.google.protobuf.ProtocolStringList
        getPortalsList() {
      return portals_;
    }
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @return The count of portals.
     */
    public int getPortalsCount() {
      return portals_.size();
    }
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @param index The index of the element to return.
     * @return The portals at the given index.
     */
    public java.lang.String getPortals(int index) {
      return portals_.get(index);
    }
    /**
     * <pre>
     * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
     * is other than default (typically TCP ports 860 and 3260).
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string portals = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the portals at the given index.
     */
    public com.google.protobuf.ByteString
        getPortalsBytes(int index) {
      return portals_.getByteString(index);
    }

    public static final int CHAPAUTHDISCOVERY_FIELD_NUMBER = 8;
    private boolean chapAuthDiscovery_ = false;
    /**
     * <pre>
     * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthDiscovery = 8;</code>
     * @return Whether the chapAuthDiscovery field is set.
     */
    @java.lang.Override
    public boolean hasChapAuthDiscovery() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthDiscovery = 8;</code>
     * @return The chapAuthDiscovery.
     */
    @java.lang.Override
    public boolean getChapAuthDiscovery() {
      return chapAuthDiscovery_;
    }

    public static final int CHAPAUTHSESSION_FIELD_NUMBER = 11;
    private boolean chapAuthSession_ = false;
    /**
     * <pre>
     * chapAuthSession defines whether support iSCSI Session CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthSession = 11;</code>
     * @return Whether the chapAuthSession field is set.
     */
    @java.lang.Override
    public boolean hasChapAuthSession() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * chapAuthSession defines whether support iSCSI Session CHAP authentication
     * +optional
     * </pre>
     *
     * <code>optional bool chapAuthSession = 11;</code>
     * @return The chapAuthSession.
     */
    @java.lang.Override
    public boolean getChapAuthSession() {
      return chapAuthSession_;
    }

    public static final int SECRETREF_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef is the CHAP Secret for iSCSI target and initiator authentication
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }

    public static final int INITIATORNAME_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private volatile java.lang.Object initiatorName_ = "";
    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return Whether the initiatorName field is set.
     */
    @java.lang.Override
    public boolean hasInitiatorName() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return The initiatorName.
     */
    @java.lang.Override
    public java.lang.String getInitiatorName() {
      java.lang.Object ref = initiatorName_;
      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()) {
          initiatorName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * initiatorName is the custom iSCSI Initiator Name.
     * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
     * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
     * +optional
     * </pre>
     *
     * <code>optional string initiatorName = 12;</code>
     * @return The bytes for initiatorName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getInitiatorNameBytes() {
      java.lang.Object ref = initiatorName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        initiatorName_ = 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, targetPortal_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, iqn_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, lun_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, iscsiInterface_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, fsType_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(6, readOnly_);
      }
      for (int i = 0; i < portals_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, portals_.getRaw(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeBool(8, chapAuthDiscovery_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeMessage(10, getSecretRef());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeBool(11, chapAuthSession_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 12, initiatorName_);
      }
      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, targetPortal_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, iqn_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, lun_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, iscsiInterface_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, fsType_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, readOnly_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < portals_.size(); i++) {
          dataSize += computeStringSizeNoTag(portals_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPortalsList().size();
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, chapAuthDiscovery_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getSecretRef());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, chapAuthSession_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(12, initiatorName_);
      }
      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.V1.ISCSIVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ISCSIVolumeSource other = (io.kubernetes.client.proto.V1.ISCSIVolumeSource) obj;

      if (hasTargetPortal() != other.hasTargetPortal()) return false;
      if (hasTargetPortal()) {
        if (!getTargetPortal()
            .equals(other.getTargetPortal())) return false;
      }
      if (hasIqn() != other.hasIqn()) return false;
      if (hasIqn()) {
        if (!getIqn()
            .equals(other.getIqn())) return false;
      }
      if (hasLun() != other.hasLun()) return false;
      if (hasLun()) {
        if (getLun()
            != other.getLun()) return false;
      }
      if (hasIscsiInterface() != other.hasIscsiInterface()) return false;
      if (hasIscsiInterface()) {
        if (!getIscsiInterface()
            .equals(other.getIscsiInterface())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (!getPortalsList()
          .equals(other.getPortalsList())) return false;
      if (hasChapAuthDiscovery() != other.hasChapAuthDiscovery()) return false;
      if (hasChapAuthDiscovery()) {
        if (getChapAuthDiscovery()
            != other.getChapAuthDiscovery()) return false;
      }
      if (hasChapAuthSession() != other.hasChapAuthSession()) return false;
      if (hasChapAuthSession()) {
        if (getChapAuthSession()
            != other.getChapAuthSession()) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) return false;
      }
      if (hasInitiatorName() != other.hasInitiatorName()) return false;
      if (hasInitiatorName()) {
        if (!getInitiatorName()
            .equals(other.getInitiatorName())) 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 (hasTargetPortal()) {
        hash = (37 * hash) + TARGETPORTAL_FIELD_NUMBER;
        hash = (53 * hash) + getTargetPortal().hashCode();
      }
      if (hasIqn()) {
        hash = (37 * hash) + IQN_FIELD_NUMBER;
        hash = (53 * hash) + getIqn().hashCode();
      }
      if (hasLun()) {
        hash = (37 * hash) + LUN_FIELD_NUMBER;
        hash = (53 * hash) + getLun();
      }
      if (hasIscsiInterface()) {
        hash = (37 * hash) + ISCSIINTERFACE_FIELD_NUMBER;
        hash = (53 * hash) + getIscsiInterface().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (getPortalsCount() > 0) {
        hash = (37 * hash) + PORTALS_FIELD_NUMBER;
        hash = (53 * hash) + getPortalsList().hashCode();
      }
      if (hasChapAuthDiscovery()) {
        hash = (37 * hash) + CHAPAUTHDISCOVERY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getChapAuthDiscovery());
      }
      if (hasChapAuthSession()) {
        hash = (37 * hash) + CHAPAUTHSESSION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getChapAuthSession());
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      if (hasInitiatorName()) {
        hash = (37 * hash) + INITIATORNAME_FIELD_NUMBER;
        hash = (53 * hash) + getInitiatorName().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ISCSIVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ISCSIVolumeSource 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.V1.ISCSIVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ISCSIVolumeSource 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.V1.ISCSIVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ISCSIVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ISCSIVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ISCSIVolumeSource 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.V1.ISCSIVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ISCSIVolumeSource 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.V1.ISCSIVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ISCSIVolumeSource 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.V1.ISCSIVolumeSource 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>
     * Represents an ISCSI disk.
     * ISCSI volumes can only be mounted as read/write once.
     * ISCSI volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ISCSIVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ISCSIVolumeSource)
        io.kubernetes.client.proto.V1.ISCSIVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ISCSIVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ISCSIVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ISCSIVolumeSource.class, io.kubernetes.client.proto.V1.ISCSIVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ISCSIVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        targetPortal_ = "";
        iqn_ = "";
        lun_ = 0;
        iscsiInterface_ = "";
        fsType_ = "";
        readOnly_ = false;
        portals_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        chapAuthDiscovery_ = false;
        chapAuthSession_ = false;
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        initiatorName_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ISCSIVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ISCSIVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ISCSIVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ISCSIVolumeSource build() {
        io.kubernetes.client.proto.V1.ISCSIVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ISCSIVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.ISCSIVolumeSource result = new io.kubernetes.client.proto.V1.ISCSIVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ISCSIVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.targetPortal_ = targetPortal_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.iqn_ = iqn_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.lun_ = lun_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.iscsiInterface_ = iscsiInterface_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          portals_.makeImmutable();
          result.portals_ = portals_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.chapAuthDiscovery_ = chapAuthDiscovery_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.chapAuthSession_ = chapAuthSession_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.initiatorName_ = initiatorName_;
          to_bitField0_ |= 0x00000200;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.ISCSIVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.ISCSIVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ISCSIVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.ISCSIVolumeSource.getDefaultInstance()) return this;
        if (other.hasTargetPortal()) {
          targetPortal_ = other.targetPortal_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasIqn()) {
          iqn_ = other.iqn_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasLun()) {
          setLun(other.getLun());
        }
        if (other.hasIscsiInterface()) {
          iscsiInterface_ = other.iscsiInterface_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (!other.portals_.isEmpty()) {
          if (portals_.isEmpty()) {
            portals_ = other.portals_;
            bitField0_ |= 0x00000040;
          } else {
            ensurePortalsIsMutable();
            portals_.addAll(other.portals_);
          }
          onChanged();
        }
        if (other.hasChapAuthDiscovery()) {
          setChapAuthDiscovery(other.getChapAuthDiscovery());
        }
        if (other.hasChapAuthSession()) {
          setChapAuthSession(other.getChapAuthSession());
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        if (other.hasInitiatorName()) {
          initiatorName_ = other.initiatorName_;
          bitField0_ |= 0x00000400;
          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: {
                targetPortal_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                iqn_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                lun_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                iscsiInterface_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 58: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensurePortalsIsMutable();
                portals_.add(bs);
                break;
              } // case 58
              case 64: {
                chapAuthDiscovery_ = input.readBool();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              case 82: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 88: {
                chapAuthSession_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 88
              case 98: {
                initiatorName_ = input.readBytes();
                bitField0_ |= 0x00000400;
                break;
              } // case 98
              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 targetPortal_ = "";
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @return Whether the targetPortal field is set.
       */
      public boolean hasTargetPortal() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @return The targetPortal.
       */
      public java.lang.String getTargetPortal() {
        java.lang.Object ref = targetPortal_;
        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()) {
            targetPortal_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @return The bytes for targetPortal.
       */
      public com.google.protobuf.ByteString
          getTargetPortalBytes() {
        java.lang.Object ref = targetPortal_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetPortal_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @param value The targetPortal to set.
       * @return This builder for chaining.
       */
      public Builder setTargetPortal(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        targetPortal_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetPortal() {
        targetPortal_ = getDefaultInstance().getTargetPortal();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * </pre>
       *
       * <code>optional string targetPortal = 1;</code>
       * @param value The bytes for targetPortal to set.
       * @return This builder for chaining.
       */
      public Builder setTargetPortalBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        targetPortal_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object iqn_ = "";
      /**
       * <pre>
       * iqn is the target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @return Whether the iqn field is set.
       */
      public boolean hasIqn() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * iqn is the target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @return The iqn.
       */
      public java.lang.String getIqn() {
        java.lang.Object ref = iqn_;
        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()) {
            iqn_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * iqn is the target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @return The bytes for iqn.
       */
      public com.google.protobuf.ByteString
          getIqnBytes() {
        java.lang.Object ref = iqn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          iqn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * iqn is the target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @param value The iqn to set.
       * @return This builder for chaining.
       */
      public Builder setIqn(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        iqn_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iqn is the target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIqn() {
        iqn_ = getDefaultInstance().getIqn();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iqn is the target iSCSI Qualified Name.
       * </pre>
       *
       * <code>optional string iqn = 2;</code>
       * @param value The bytes for iqn to set.
       * @return This builder for chaining.
       */
      public Builder setIqnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        iqn_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private int lun_ ;
      /**
       * <pre>
       * lun represents iSCSI Target Lun number.
       * </pre>
       *
       * <code>optional int32 lun = 3;</code>
       * @return Whether the lun field is set.
       */
      @java.lang.Override
      public boolean hasLun() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * lun represents iSCSI Target Lun number.
       * </pre>
       *
       * <code>optional int32 lun = 3;</code>
       * @return The lun.
       */
      @java.lang.Override
      public int getLun() {
        return lun_;
      }
      /**
       * <pre>
       * lun represents iSCSI Target Lun number.
       * </pre>
       *
       * <code>optional int32 lun = 3;</code>
       * @param value The lun to set.
       * @return This builder for chaining.
       */
      public Builder setLun(int value) {

        lun_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lun represents iSCSI Target Lun number.
       * </pre>
       *
       * <code>optional int32 lun = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLun() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lun_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object iscsiInterface_ = "";
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @return Whether the iscsiInterface field is set.
       */
      public boolean hasIscsiInterface() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @return The iscsiInterface.
       */
      public java.lang.String getIscsiInterface() {
        java.lang.Object ref = iscsiInterface_;
        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()) {
            iscsiInterface_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @return The bytes for iscsiInterface.
       */
      public com.google.protobuf.ByteString
          getIscsiInterfaceBytes() {
        java.lang.Object ref = iscsiInterface_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          iscsiInterface_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @param value The iscsiInterface to set.
       * @return This builder for chaining.
       */
      public Builder setIscsiInterface(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        iscsiInterface_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIscsiInterface() {
        iscsiInterface_ = getDefaultInstance().getIscsiInterface();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iscsiInterface is the interface Name that uses an iSCSI transport.
       * Defaults to 'default' (tcp).
       * +optional
       * </pre>
       *
       * <code>optional string iscsiInterface = 4;</code>
       * @param value The bytes for iscsiInterface to set.
       * @return This builder for chaining.
       */
      public Builder setIscsiInterfaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        iscsiInterface_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 5;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000020);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList portals_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensurePortalsIsMutable() {
        if (!portals_.isModifiable()) {
          portals_ = new com.google.protobuf.LazyStringArrayList(portals_);
        }
        bitField0_ |= 0x00000040;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @return A list containing the portals.
       */
      public com.google.protobuf.ProtocolStringList
          getPortalsList() {
        portals_.makeImmutable();
        return portals_;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @return The count of portals.
       */
      public int getPortalsCount() {
        return portals_.size();
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param index The index of the element to return.
       * @return The portals at the given index.
       */
      public java.lang.String getPortals(int index) {
        return portals_.get(index);
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the portals at the given index.
       */
      public com.google.protobuf.ByteString
          getPortalsBytes(int index) {
        return portals_.getByteString(index);
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param index The index to set the value at.
       * @param value The portals to set.
       * @return This builder for chaining.
       */
      public Builder setPortals(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePortalsIsMutable();
        portals_.set(index, value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param value The portals to add.
       * @return This builder for chaining.
       */
      public Builder addPortals(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePortalsIsMutable();
        portals_.add(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param values The portals to add.
       * @return This builder for chaining.
       */
      public Builder addAllPortals(
          java.lang.Iterable<java.lang.String> values) {
        ensurePortalsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, portals_);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearPortals() {
        portals_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
       * is other than default (typically TCP ports 860 and 3260).
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string portals = 7;</code>
       * @param value The bytes of the portals to add.
       * @return This builder for chaining.
       */
      public Builder addPortalsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePortalsIsMutable();
        portals_.add(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private boolean chapAuthDiscovery_ ;
      /**
       * <pre>
       * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthDiscovery = 8;</code>
       * @return Whether the chapAuthDiscovery field is set.
       */
      @java.lang.Override
      public boolean hasChapAuthDiscovery() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthDiscovery = 8;</code>
       * @return The chapAuthDiscovery.
       */
      @java.lang.Override
      public boolean getChapAuthDiscovery() {
        return chapAuthDiscovery_;
      }
      /**
       * <pre>
       * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthDiscovery = 8;</code>
       * @param value The chapAuthDiscovery to set.
       * @return This builder for chaining.
       */
      public Builder setChapAuthDiscovery(boolean value) {

        chapAuthDiscovery_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthDiscovery = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearChapAuthDiscovery() {
        bitField0_ = (bitField0_ & ~0x00000080);
        chapAuthDiscovery_ = false;
        onChanged();
        return this;
      }

      private boolean chapAuthSession_ ;
      /**
       * <pre>
       * chapAuthSession defines whether support iSCSI Session CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthSession = 11;</code>
       * @return Whether the chapAuthSession field is set.
       */
      @java.lang.Override
      public boolean hasChapAuthSession() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * chapAuthSession defines whether support iSCSI Session CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthSession = 11;</code>
       * @return The chapAuthSession.
       */
      @java.lang.Override
      public boolean getChapAuthSession() {
        return chapAuthSession_;
      }
      /**
       * <pre>
       * chapAuthSession defines whether support iSCSI Session CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthSession = 11;</code>
       * @param value The chapAuthSession to set.
       * @return This builder for chaining.
       */
      public Builder setChapAuthSession(boolean value) {

        chapAuthSession_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * chapAuthSession defines whether support iSCSI Session CHAP authentication
       * +optional
       * </pre>
       *
       * <code>optional bool chapAuthSession = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearChapAuthSession() {
        bitField0_ = (bitField0_ & ~0x00000100);
        chapAuthSession_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000200);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef is the CHAP Secret for iSCSI target and initiator authentication
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      private java.lang.Object initiatorName_ = "";
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @return Whether the initiatorName field is set.
       */
      public boolean hasInitiatorName() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @return The initiatorName.
       */
      public java.lang.String getInitiatorName() {
        java.lang.Object ref = initiatorName_;
        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()) {
            initiatorName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @return The bytes for initiatorName.
       */
      public com.google.protobuf.ByteString
          getInitiatorNameBytes() {
        java.lang.Object ref = initiatorName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          initiatorName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @param value The initiatorName to set.
       * @return This builder for chaining.
       */
      public Builder setInitiatorName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        initiatorName_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearInitiatorName() {
        initiatorName_ = getDefaultInstance().getInitiatorName();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * initiatorName is the custom iSCSI Initiator Name.
       * If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
       * &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.
       * +optional
       * </pre>
       *
       * <code>optional string initiatorName = 12;</code>
       * @param value The bytes for initiatorName to set.
       * @return This builder for chaining.
       */
      public Builder setInitiatorNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        initiatorName_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ISCSIVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ISCSIVolumeSource)
    private static final io.kubernetes.client.proto.V1.ISCSIVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ISCSIVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.ISCSIVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ISCSIVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<ISCSIVolumeSource>() {
      @java.lang.Override
      public ISCSIVolumeSource 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<ISCSIVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ISCSIVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ISCSIVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface KeyToPathOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.KeyToPath)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * key is the key to project.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <pre>
     * key is the key to project.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <pre>
     * key is the key to project.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * path is the relative path of the file to map the key to.
     * May not be an absolute path.
     * May not contain the path element '..'.
     * May not start with the string '..'.
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * path is the relative path of the file to map the key to.
     * May not be an absolute path.
     * May not contain the path element '..'.
     * May not start with the string '..'.
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path is the relative path of the file to map the key to.
     * May not be an absolute path.
     * May not contain the path element '..'.
     * May not start with the string '..'.
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * mode is Optional: mode bits used to set permissions on this file.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * If not specified, the volume defaultMode will be used.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 mode = 3;</code>
     * @return Whether the mode field is set.
     */
    boolean hasMode();
    /**
     * <pre>
     * mode is Optional: mode bits used to set permissions on this file.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * If not specified, the volume defaultMode will be used.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 mode = 3;</code>
     * @return The mode.
     */
    int getMode();
  }
  /**
   * <pre>
   * Maps a string key to a path within a volume.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.KeyToPath}
   */
  public static final class KeyToPath extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.KeyToPath)
      KeyToPathOrBuilder {
  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= */ "",
        KeyToPath.class.getName());
    }
    // Use KeyToPath.newBuilder() to construct.
    private KeyToPath(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private KeyToPath() {
      key_ = "";
      path_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_KeyToPath_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_KeyToPath_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.KeyToPath.class, io.kubernetes.client.proto.V1.KeyToPath.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object key_ = "";
    /**
     * <pre>
     * key is the key to project.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * key is the key to project.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * key is the key to project.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * path is the relative path of the file to map the key to.
     * May not be an absolute path.
     * May not contain the path element '..'.
     * May not start with the string '..'.
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * path is the relative path of the file to map the key to.
     * May not be an absolute path.
     * May not contain the path element '..'.
     * May not start with the string '..'.
     * </pre>
     *
     * <code>optional string path = 2;</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 the relative path of the file to map the key to.
     * May not be an absolute path.
     * May not contain the path element '..'.
     * May not start with the string '..'.
     * </pre>
     *
     * <code>optional string path = 2;</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 MODE_FIELD_NUMBER = 3;
    private int mode_ = 0;
    /**
     * <pre>
     * mode is Optional: mode bits used to set permissions on this file.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * If not specified, the volume defaultMode will be used.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 mode = 3;</code>
     * @return Whether the mode field is set.
     */
    @java.lang.Override
    public boolean hasMode() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * mode is Optional: mode bits used to set permissions on this file.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * If not specified, the volume defaultMode will be used.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 mode = 3;</code>
     * @return The mode.
     */
    @java.lang.Override
    public int getMode() {
      return mode_;
    }

    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, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, path_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, mode_);
      }
      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, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, path_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, mode_);
      }
      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.V1.KeyToPath)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.KeyToPath other = (io.kubernetes.client.proto.V1.KeyToPath) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (hasMode() != other.hasMode()) return false;
      if (hasMode()) {
        if (getMode()
            != other.getMode()) 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 (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasMode()) {
        hash = (37 * hash) + MODE_FIELD_NUMBER;
        hash = (53 * hash) + getMode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.KeyToPath parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.KeyToPath 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.V1.KeyToPath parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.KeyToPath 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.V1.KeyToPath parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.KeyToPath parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.KeyToPath parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.KeyToPath 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.V1.KeyToPath parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.KeyToPath 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.V1.KeyToPath parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.KeyToPath 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.V1.KeyToPath 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>
     * Maps a string key to a path within a volume.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.KeyToPath}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.KeyToPath)
        io.kubernetes.client.proto.V1.KeyToPathOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_KeyToPath_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_KeyToPath_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.KeyToPath.class, io.kubernetes.client.proto.V1.KeyToPath.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.KeyToPath.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        key_ = "";
        path_ = "";
        mode_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_KeyToPath_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.KeyToPath getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.KeyToPath.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.KeyToPath build() {
        io.kubernetes.client.proto.V1.KeyToPath result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.KeyToPath buildPartial() {
        io.kubernetes.client.proto.V1.KeyToPath result = new io.kubernetes.client.proto.V1.KeyToPath(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.KeyToPath result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.key_ = key_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.mode_ = mode_;
          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.V1.KeyToPath) {
          return mergeFrom((io.kubernetes.client.proto.V1.KeyToPath)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.KeyToPath other) {
        if (other == io.kubernetes.client.proto.V1.KeyToPath.getDefaultInstance()) return this;
        if (other.hasKey()) {
          key_ = other.key_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasMode()) {
          setMode(other.getMode());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                key_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                mode_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * <pre>
       * key is the key to project.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * key is the key to project.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * key is the key to project.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * key is the key to project.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * key is the key to project.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = getDefaultInstance().getKey();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * key is the key to project.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * path is the relative path of the file to map the key to.
       * May not be an absolute path.
       * May not contain the path element '..'.
       * May not start with the string '..'.
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * path is the relative path of the file to map the key to.
       * May not be an absolute path.
       * May not contain the path element '..'.
       * May not start with the string '..'.
       * </pre>
       *
       * <code>optional string path = 2;</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 the relative path of the file to map the key to.
       * May not be an absolute path.
       * May not contain the path element '..'.
       * May not start with the string '..'.
       * </pre>
       *
       * <code>optional string path = 2;</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 the relative path of the file to map the key to.
       * May not be an absolute path.
       * May not contain the path element '..'.
       * May not start with the string '..'.
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is the relative path of the file to map the key to.
       * May not be an absolute path.
       * May not contain the path element '..'.
       * May not start with the string '..'.
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is the relative path of the file to map the key to.
       * May not be an absolute path.
       * May not contain the path element '..'.
       * May not start with the string '..'.
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      private int mode_ ;
      /**
       * <pre>
       * mode is Optional: mode bits used to set permissions on this file.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * If not specified, the volume defaultMode will be used.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 mode = 3;</code>
       * @return Whether the mode field is set.
       */
      @java.lang.Override
      public boolean hasMode() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * mode is Optional: mode bits used to set permissions on this file.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * If not specified, the volume defaultMode will be used.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 mode = 3;</code>
       * @return The mode.
       */
      @java.lang.Override
      public int getMode() {
        return mode_;
      }
      /**
       * <pre>
       * mode is Optional: mode bits used to set permissions on this file.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * If not specified, the volume defaultMode will be used.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 mode = 3;</code>
       * @param value The mode to set.
       * @return This builder for chaining.
       */
      public Builder setMode(int value) {

        mode_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mode is Optional: mode bits used to set permissions on this file.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * If not specified, the volume defaultMode will be used.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 mode = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMode() {
        bitField0_ = (bitField0_ & ~0x00000004);
        mode_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.KeyToPath)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.KeyToPath)
    private static final io.kubernetes.client.proto.V1.KeyToPath DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.KeyToPath();
    }

    public static io.kubernetes.client.proto.V1.KeyToPath getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<KeyToPath>
        PARSER = new com.google.protobuf.AbstractParser<KeyToPath>() {
      @java.lang.Override
      public KeyToPath 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<KeyToPath> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<KeyToPath> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.KeyToPath getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LifecycleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Lifecycle)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * PostStart is called immediately after a container is created. If the handler fails,
     * the container is terminated and restarted according to its restart policy.
     * Other management of the container blocks until the hook completes.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
     * @return Whether the postStart field is set.
     */
    boolean hasPostStart();
    /**
     * <pre>
     * PostStart is called immediately after a container is created. If the handler fails,
     * the container is terminated and restarted according to its restart policy.
     * Other management of the container blocks until the hook completes.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
     * @return The postStart.
     */
    io.kubernetes.client.proto.V1.LifecycleHandler getPostStart();
    /**
     * <pre>
     * PostStart is called immediately after a container is created. If the handler fails,
     * the container is terminated and restarted according to its restart policy.
     * Other management of the container blocks until the hook completes.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
     */
    io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder getPostStartOrBuilder();

    /**
     * <pre>
     * PreStop is called immediately before a container is terminated due to an
     * API request or management event such as liveness/startup probe failure,
     * preemption, resource contention, etc. The handler is not called if the
     * container crashes or exits. The Pod's termination grace period countdown begins before the
     * PreStop hook is executed. Regardless of the outcome of the handler, the
     * container will eventually terminate within the Pod's termination grace
     * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
     * or until the termination grace period is reached.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
     * @return Whether the preStop field is set.
     */
    boolean hasPreStop();
    /**
     * <pre>
     * PreStop is called immediately before a container is terminated due to an
     * API request or management event such as liveness/startup probe failure,
     * preemption, resource contention, etc. The handler is not called if the
     * container crashes or exits. The Pod's termination grace period countdown begins before the
     * PreStop hook is executed. Regardless of the outcome of the handler, the
     * container will eventually terminate within the Pod's termination grace
     * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
     * or until the termination grace period is reached.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
     * @return The preStop.
     */
    io.kubernetes.client.proto.V1.LifecycleHandler getPreStop();
    /**
     * <pre>
     * PreStop is called immediately before a container is terminated due to an
     * API request or management event such as liveness/startup probe failure,
     * preemption, resource contention, etc. The handler is not called if the
     * container crashes or exits. The Pod's termination grace period countdown begins before the
     * PreStop hook is executed. Regardless of the outcome of the handler, the
     * container will eventually terminate within the Pod's termination grace
     * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
     * or until the termination grace period is reached.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
     */
    io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder getPreStopOrBuilder();
  }
  /**
   * <pre>
   * Lifecycle describes actions that the management system should take in response to container lifecycle
   * events. For the PostStart and PreStop lifecycle handlers, management of the container blocks
   * until the action is complete, unless the container process fails, in which case the handler is aborted.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Lifecycle}
   */
  public static final class Lifecycle extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Lifecycle)
      LifecycleOrBuilder {
  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= */ "",
        Lifecycle.class.getName());
    }
    // Use Lifecycle.newBuilder() to construct.
    private Lifecycle(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Lifecycle() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Lifecycle_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Lifecycle_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Lifecycle.class, io.kubernetes.client.proto.V1.Lifecycle.Builder.class);
    }

    private int bitField0_;
    public static final int POSTSTART_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.LifecycleHandler postStart_;
    /**
     * <pre>
     * PostStart is called immediately after a container is created. If the handler fails,
     * the container is terminated and restarted according to its restart policy.
     * Other management of the container blocks until the hook completes.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
     * @return Whether the postStart field is set.
     */
    @java.lang.Override
    public boolean hasPostStart() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * PostStart is called immediately after a container is created. If the handler fails,
     * the container is terminated and restarted according to its restart policy.
     * Other management of the container blocks until the hook completes.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
     * @return The postStart.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LifecycleHandler getPostStart() {
      return postStart_ == null ? io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance() : postStart_;
    }
    /**
     * <pre>
     * PostStart is called immediately after a container is created. If the handler fails,
     * the container is terminated and restarted according to its restart policy.
     * Other management of the container blocks until the hook completes.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder getPostStartOrBuilder() {
      return postStart_ == null ? io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance() : postStart_;
    }

    public static final int PRESTOP_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.LifecycleHandler preStop_;
    /**
     * <pre>
     * PreStop is called immediately before a container is terminated due to an
     * API request or management event such as liveness/startup probe failure,
     * preemption, resource contention, etc. The handler is not called if the
     * container crashes or exits. The Pod's termination grace period countdown begins before the
     * PreStop hook is executed. Regardless of the outcome of the handler, the
     * container will eventually terminate within the Pod's termination grace
     * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
     * or until the termination grace period is reached.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
     * @return Whether the preStop field is set.
     */
    @java.lang.Override
    public boolean hasPreStop() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * PreStop is called immediately before a container is terminated due to an
     * API request or management event such as liveness/startup probe failure,
     * preemption, resource contention, etc. The handler is not called if the
     * container crashes or exits. The Pod's termination grace period countdown begins before the
     * PreStop hook is executed. Regardless of the outcome of the handler, the
     * container will eventually terminate within the Pod's termination grace
     * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
     * or until the termination grace period is reached.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
     * @return The preStop.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LifecycleHandler getPreStop() {
      return preStop_ == null ? io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance() : preStop_;
    }
    /**
     * <pre>
     * PreStop is called immediately before a container is terminated due to an
     * API request or management event such as liveness/startup probe failure,
     * preemption, resource contention, etc. The handler is not called if the
     * container crashes or exits. The Pod's termination grace period countdown begins before the
     * PreStop hook is executed. Regardless of the outcome of the handler, the
     * container will eventually terminate within the Pod's termination grace
     * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
     * or until the termination grace period is reached.
     * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder getPreStopOrBuilder() {
      return preStop_ == null ? io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance() : preStop_;
    }

    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, getPostStart());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getPreStop());
      }
      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, getPostStart());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPreStop());
      }
      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.V1.Lifecycle)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Lifecycle other = (io.kubernetes.client.proto.V1.Lifecycle) obj;

      if (hasPostStart() != other.hasPostStart()) return false;
      if (hasPostStart()) {
        if (!getPostStart()
            .equals(other.getPostStart())) return false;
      }
      if (hasPreStop() != other.hasPreStop()) return false;
      if (hasPreStop()) {
        if (!getPreStop()
            .equals(other.getPreStop())) 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 (hasPostStart()) {
        hash = (37 * hash) + POSTSTART_FIELD_NUMBER;
        hash = (53 * hash) + getPostStart().hashCode();
      }
      if (hasPreStop()) {
        hash = (37 * hash) + PRESTOP_FIELD_NUMBER;
        hash = (53 * hash) + getPreStop().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.Lifecycle parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Lifecycle 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.V1.Lifecycle parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Lifecycle 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.V1.Lifecycle parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Lifecycle parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Lifecycle parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Lifecycle 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.V1.Lifecycle parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Lifecycle 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.V1.Lifecycle parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Lifecycle 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.V1.Lifecycle 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>
     * Lifecycle describes actions that the management system should take in response to container lifecycle
     * events. For the PostStart and PreStop lifecycle handlers, management of the container blocks
     * until the action is complete, unless the container process fails, in which case the handler is aborted.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Lifecycle}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Lifecycle)
        io.kubernetes.client.proto.V1.LifecycleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Lifecycle_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Lifecycle_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Lifecycle.class, io.kubernetes.client.proto.V1.Lifecycle.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Lifecycle.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPostStartFieldBuilder();
          getPreStopFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        postStart_ = null;
        if (postStartBuilder_ != null) {
          postStartBuilder_.dispose();
          postStartBuilder_ = null;
        }
        preStop_ = null;
        if (preStopBuilder_ != null) {
          preStopBuilder_.dispose();
          preStopBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Lifecycle_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Lifecycle getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Lifecycle build() {
        io.kubernetes.client.proto.V1.Lifecycle result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Lifecycle buildPartial() {
        io.kubernetes.client.proto.V1.Lifecycle result = new io.kubernetes.client.proto.V1.Lifecycle(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Lifecycle result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.postStart_ = postStartBuilder_ == null
              ? postStart_
              : postStartBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.preStop_ = preStopBuilder_ == null
              ? preStop_
              : preStopBuilder_.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.V1.Lifecycle) {
          return mergeFrom((io.kubernetes.client.proto.V1.Lifecycle)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Lifecycle other) {
        if (other == io.kubernetes.client.proto.V1.Lifecycle.getDefaultInstance()) return this;
        if (other.hasPostStart()) {
          mergePostStart(other.getPostStart());
        }
        if (other.hasPreStop()) {
          mergePreStop(other.getPreStop());
        }
        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(
                    getPostStartFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getPreStopFieldBuilder().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.V1.LifecycleHandler postStart_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LifecycleHandler, io.kubernetes.client.proto.V1.LifecycleHandler.Builder, io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder> postStartBuilder_;
      /**
       * <pre>
       * PostStart is called immediately after a container is created. If the handler fails,
       * the container is terminated and restarted according to its restart policy.
       * Other management of the container blocks until the hook completes.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
       * @return Whether the postStart field is set.
       */
      public boolean hasPostStart() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * PostStart is called immediately after a container is created. If the handler fails,
       * the container is terminated and restarted according to its restart policy.
       * Other management of the container blocks until the hook completes.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
       * @return The postStart.
       */
      public io.kubernetes.client.proto.V1.LifecycleHandler getPostStart() {
        if (postStartBuilder_ == null) {
          return postStart_ == null ? io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance() : postStart_;
        } else {
          return postStartBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * PostStart is called immediately after a container is created. If the handler fails,
       * the container is terminated and restarted according to its restart policy.
       * Other management of the container blocks until the hook completes.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
       */
      public Builder setPostStart(io.kubernetes.client.proto.V1.LifecycleHandler value) {
        if (postStartBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          postStart_ = value;
        } else {
          postStartBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PostStart is called immediately after a container is created. If the handler fails,
       * the container is terminated and restarted according to its restart policy.
       * Other management of the container blocks until the hook completes.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
       */
      public Builder setPostStart(
          io.kubernetes.client.proto.V1.LifecycleHandler.Builder builderForValue) {
        if (postStartBuilder_ == null) {
          postStart_ = builderForValue.build();
        } else {
          postStartBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PostStart is called immediately after a container is created. If the handler fails,
       * the container is terminated and restarted according to its restart policy.
       * Other management of the container blocks until the hook completes.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
       */
      public Builder mergePostStart(io.kubernetes.client.proto.V1.LifecycleHandler value) {
        if (postStartBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            postStart_ != null &&
            postStart_ != io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance()) {
            getPostStartBuilder().mergeFrom(value);
          } else {
            postStart_ = value;
          }
        } else {
          postStartBuilder_.mergeFrom(value);
        }
        if (postStart_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * PostStart is called immediately after a container is created. If the handler fails,
       * the container is terminated and restarted according to its restart policy.
       * Other management of the container blocks until the hook completes.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
       */
      public Builder clearPostStart() {
        bitField0_ = (bitField0_ & ~0x00000001);
        postStart_ = null;
        if (postStartBuilder_ != null) {
          postStartBuilder_.dispose();
          postStartBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PostStart is called immediately after a container is created. If the handler fails,
       * the container is terminated and restarted according to its restart policy.
       * Other management of the container blocks until the hook completes.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LifecycleHandler.Builder getPostStartBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPostStartFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * PostStart is called immediately after a container is created. If the handler fails,
       * the container is terminated and restarted according to its restart policy.
       * Other management of the container blocks until the hook completes.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder getPostStartOrBuilder() {
        if (postStartBuilder_ != null) {
          return postStartBuilder_.getMessageOrBuilder();
        } else {
          return postStart_ == null ?
              io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance() : postStart_;
        }
      }
      /**
       * <pre>
       * PostStart is called immediately after a container is created. If the handler fails,
       * the container is terminated and restarted according to its restart policy.
       * Other management of the container blocks until the hook completes.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler postStart = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LifecycleHandler, io.kubernetes.client.proto.V1.LifecycleHandler.Builder, io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder> 
          getPostStartFieldBuilder() {
        if (postStartBuilder_ == null) {
          postStartBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LifecycleHandler, io.kubernetes.client.proto.V1.LifecycleHandler.Builder, io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder>(
                  getPostStart(),
                  getParentForChildren(),
                  isClean());
          postStart_ = null;
        }
        return postStartBuilder_;
      }

      private io.kubernetes.client.proto.V1.LifecycleHandler preStop_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LifecycleHandler, io.kubernetes.client.proto.V1.LifecycleHandler.Builder, io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder> preStopBuilder_;
      /**
       * <pre>
       * PreStop is called immediately before a container is terminated due to an
       * API request or management event such as liveness/startup probe failure,
       * preemption, resource contention, etc. The handler is not called if the
       * container crashes or exits. The Pod's termination grace period countdown begins before the
       * PreStop hook is executed. Regardless of the outcome of the handler, the
       * container will eventually terminate within the Pod's termination grace
       * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
       * or until the termination grace period is reached.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
       * @return Whether the preStop field is set.
       */
      public boolean hasPreStop() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * PreStop is called immediately before a container is terminated due to an
       * API request or management event such as liveness/startup probe failure,
       * preemption, resource contention, etc. The handler is not called if the
       * container crashes or exits. The Pod's termination grace period countdown begins before the
       * PreStop hook is executed. Regardless of the outcome of the handler, the
       * container will eventually terminate within the Pod's termination grace
       * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
       * or until the termination grace period is reached.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
       * @return The preStop.
       */
      public io.kubernetes.client.proto.V1.LifecycleHandler getPreStop() {
        if (preStopBuilder_ == null) {
          return preStop_ == null ? io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance() : preStop_;
        } else {
          return preStopBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * PreStop is called immediately before a container is terminated due to an
       * API request or management event such as liveness/startup probe failure,
       * preemption, resource contention, etc. The handler is not called if the
       * container crashes or exits. The Pod's termination grace period countdown begins before the
       * PreStop hook is executed. Regardless of the outcome of the handler, the
       * container will eventually terminate within the Pod's termination grace
       * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
       * or until the termination grace period is reached.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
       */
      public Builder setPreStop(io.kubernetes.client.proto.V1.LifecycleHandler value) {
        if (preStopBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          preStop_ = value;
        } else {
          preStopBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PreStop is called immediately before a container is terminated due to an
       * API request or management event such as liveness/startup probe failure,
       * preemption, resource contention, etc. The handler is not called if the
       * container crashes or exits. The Pod's termination grace period countdown begins before the
       * PreStop hook is executed. Regardless of the outcome of the handler, the
       * container will eventually terminate within the Pod's termination grace
       * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
       * or until the termination grace period is reached.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
       */
      public Builder setPreStop(
          io.kubernetes.client.proto.V1.LifecycleHandler.Builder builderForValue) {
        if (preStopBuilder_ == null) {
          preStop_ = builderForValue.build();
        } else {
          preStopBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PreStop is called immediately before a container is terminated due to an
       * API request or management event such as liveness/startup probe failure,
       * preemption, resource contention, etc. The handler is not called if the
       * container crashes or exits. The Pod's termination grace period countdown begins before the
       * PreStop hook is executed. Regardless of the outcome of the handler, the
       * container will eventually terminate within the Pod's termination grace
       * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
       * or until the termination grace period is reached.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
       */
      public Builder mergePreStop(io.kubernetes.client.proto.V1.LifecycleHandler value) {
        if (preStopBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            preStop_ != null &&
            preStop_ != io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance()) {
            getPreStopBuilder().mergeFrom(value);
          } else {
            preStop_ = value;
          }
        } else {
          preStopBuilder_.mergeFrom(value);
        }
        if (preStop_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * PreStop is called immediately before a container is terminated due to an
       * API request or management event such as liveness/startup probe failure,
       * preemption, resource contention, etc. The handler is not called if the
       * container crashes or exits. The Pod's termination grace period countdown begins before the
       * PreStop hook is executed. Regardless of the outcome of the handler, the
       * container will eventually terminate within the Pod's termination grace
       * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
       * or until the termination grace period is reached.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
       */
      public Builder clearPreStop() {
        bitField0_ = (bitField0_ & ~0x00000002);
        preStop_ = null;
        if (preStopBuilder_ != null) {
          preStopBuilder_.dispose();
          preStopBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PreStop is called immediately before a container is terminated due to an
       * API request or management event such as liveness/startup probe failure,
       * preemption, resource contention, etc. The handler is not called if the
       * container crashes or exits. The Pod's termination grace period countdown begins before the
       * PreStop hook is executed. Regardless of the outcome of the handler, the
       * container will eventually terminate within the Pod's termination grace
       * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
       * or until the termination grace period is reached.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
       */
      public io.kubernetes.client.proto.V1.LifecycleHandler.Builder getPreStopBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPreStopFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * PreStop is called immediately before a container is terminated due to an
       * API request or management event such as liveness/startup probe failure,
       * preemption, resource contention, etc. The handler is not called if the
       * container crashes or exits. The Pod's termination grace period countdown begins before the
       * PreStop hook is executed. Regardless of the outcome of the handler, the
       * container will eventually terminate within the Pod's termination grace
       * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
       * or until the termination grace period is reached.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
       */
      public io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder getPreStopOrBuilder() {
        if (preStopBuilder_ != null) {
          return preStopBuilder_.getMessageOrBuilder();
        } else {
          return preStop_ == null ?
              io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance() : preStop_;
        }
      }
      /**
       * <pre>
       * PreStop is called immediately before a container is terminated due to an
       * API request or management event such as liveness/startup probe failure,
       * preemption, resource contention, etc. The handler is not called if the
       * container crashes or exits. The Pod's termination grace period countdown begins before the
       * PreStop hook is executed. Regardless of the outcome of the handler, the
       * container will eventually terminate within the Pod's termination grace
       * period (unless delayed by finalizers). Other management of the container blocks until the hook completes
       * or until the termination grace period is reached.
       * More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LifecycleHandler preStop = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LifecycleHandler, io.kubernetes.client.proto.V1.LifecycleHandler.Builder, io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder> 
          getPreStopFieldBuilder() {
        if (preStopBuilder_ == null) {
          preStopBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LifecycleHandler, io.kubernetes.client.proto.V1.LifecycleHandler.Builder, io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder>(
                  getPreStop(),
                  getParentForChildren(),
                  isClean());
          preStop_ = null;
        }
        return preStopBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Lifecycle)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Lifecycle)
    private static final io.kubernetes.client.proto.V1.Lifecycle DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Lifecycle();
    }

    public static io.kubernetes.client.proto.V1.Lifecycle getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Lifecycle>
        PARSER = new com.google.protobuf.AbstractParser<Lifecycle>() {
      @java.lang.Override
      public Lifecycle 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<Lifecycle> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Lifecycle> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Lifecycle getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LifecycleHandlerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.LifecycleHandler)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     * @return Whether the exec field is set.
     */
    boolean hasExec();
    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     * @return The exec.
     */
    io.kubernetes.client.proto.V1.ExecAction getExec();
    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     */
    io.kubernetes.client.proto.V1.ExecActionOrBuilder getExecOrBuilder();

    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     * @return Whether the httpGet field is set.
     */
    boolean hasHttpGet();
    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     * @return The httpGet.
     */
    io.kubernetes.client.proto.V1.HTTPGetAction getHttpGet();
    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     */
    io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder getHttpGetOrBuilder();

    /**
     * <pre>
     * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
     * for the backward compatibility. There are no validation of this field and
     * lifecycle hooks will fail in runtime when tcp handler is specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     * @return Whether the tcpSocket field is set.
     */
    boolean hasTcpSocket();
    /**
     * <pre>
     * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
     * for the backward compatibility. There are no validation of this field and
     * lifecycle hooks will fail in runtime when tcp handler is specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     * @return The tcpSocket.
     */
    io.kubernetes.client.proto.V1.TCPSocketAction getTcpSocket();
    /**
     * <pre>
     * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
     * for the backward compatibility. There are no validation of this field and
     * lifecycle hooks will fail in runtime when tcp handler is specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     */
    io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder getTcpSocketOrBuilder();

    /**
     * <pre>
     * Sleep represents the duration that the container should sleep before being terminated.
     * +featureGate=PodLifecycleSleepAction
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
     * @return Whether the sleep field is set.
     */
    boolean hasSleep();
    /**
     * <pre>
     * Sleep represents the duration that the container should sleep before being terminated.
     * +featureGate=PodLifecycleSleepAction
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
     * @return The sleep.
     */
    io.kubernetes.client.proto.V1.SleepAction getSleep();
    /**
     * <pre>
     * Sleep represents the duration that the container should sleep before being terminated.
     * +featureGate=PodLifecycleSleepAction
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
     */
    io.kubernetes.client.proto.V1.SleepActionOrBuilder getSleepOrBuilder();
  }
  /**
   * <pre>
   * LifecycleHandler defines a specific action that should be taken in a lifecycle
   * hook. One and only one of the fields, except TCPSocket must be specified.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.LifecycleHandler}
   */
  public static final class LifecycleHandler extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.LifecycleHandler)
      LifecycleHandlerOrBuilder {
  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= */ "",
        LifecycleHandler.class.getName());
    }
    // Use LifecycleHandler.newBuilder() to construct.
    private LifecycleHandler(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private LifecycleHandler() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LifecycleHandler_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LifecycleHandler_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.LifecycleHandler.class, io.kubernetes.client.proto.V1.LifecycleHandler.Builder.class);
    }

    private int bitField0_;
    public static final int EXEC_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.ExecAction exec_;
    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     * @return Whether the exec field is set.
     */
    @java.lang.Override
    public boolean hasExec() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     * @return The exec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ExecAction getExec() {
      return exec_ == null ? io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance() : exec_;
    }
    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ExecActionOrBuilder getExecOrBuilder() {
      return exec_ == null ? io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance() : exec_;
    }

    public static final int HTTPGET_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.HTTPGetAction httpGet_;
    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     * @return Whether the httpGet field is set.
     */
    @java.lang.Override
    public boolean hasHttpGet() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     * @return The httpGet.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HTTPGetAction getHttpGet() {
      return httpGet_ == null ? io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance() : httpGet_;
    }
    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder getHttpGetOrBuilder() {
      return httpGet_ == null ? io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance() : httpGet_;
    }

    public static final int TCPSOCKET_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.TCPSocketAction tcpSocket_;
    /**
     * <pre>
     * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
     * for the backward compatibility. There are no validation of this field and
     * lifecycle hooks will fail in runtime when tcp handler is specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     * @return Whether the tcpSocket field is set.
     */
    @java.lang.Override
    public boolean hasTcpSocket() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
     * for the backward compatibility. There are no validation of this field and
     * lifecycle hooks will fail in runtime when tcp handler is specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     * @return The tcpSocket.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TCPSocketAction getTcpSocket() {
      return tcpSocket_ == null ? io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance() : tcpSocket_;
    }
    /**
     * <pre>
     * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
     * for the backward compatibility. There are no validation of this field and
     * lifecycle hooks will fail in runtime when tcp handler is specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder getTcpSocketOrBuilder() {
      return tcpSocket_ == null ? io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance() : tcpSocket_;
    }

    public static final int SLEEP_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.V1.SleepAction sleep_;
    /**
     * <pre>
     * Sleep represents the duration that the container should sleep before being terminated.
     * +featureGate=PodLifecycleSleepAction
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
     * @return Whether the sleep field is set.
     */
    @java.lang.Override
    public boolean hasSleep() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Sleep represents the duration that the container should sleep before being terminated.
     * +featureGate=PodLifecycleSleepAction
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
     * @return The sleep.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SleepAction getSleep() {
      return sleep_ == null ? io.kubernetes.client.proto.V1.SleepAction.getDefaultInstance() : sleep_;
    }
    /**
     * <pre>
     * Sleep represents the duration that the container should sleep before being terminated.
     * +featureGate=PodLifecycleSleepAction
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SleepActionOrBuilder getSleepOrBuilder() {
      return sleep_ == null ? io.kubernetes.client.proto.V1.SleepAction.getDefaultInstance() : sleep_;
    }

    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, getExec());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getHttpGet());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getTcpSocket());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getSleep());
      }
      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, getExec());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getHttpGet());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getTcpSocket());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getSleep());
      }
      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.V1.LifecycleHandler)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.LifecycleHandler other = (io.kubernetes.client.proto.V1.LifecycleHandler) obj;

      if (hasExec() != other.hasExec()) return false;
      if (hasExec()) {
        if (!getExec()
            .equals(other.getExec())) return false;
      }
      if (hasHttpGet() != other.hasHttpGet()) return false;
      if (hasHttpGet()) {
        if (!getHttpGet()
            .equals(other.getHttpGet())) return false;
      }
      if (hasTcpSocket() != other.hasTcpSocket()) return false;
      if (hasTcpSocket()) {
        if (!getTcpSocket()
            .equals(other.getTcpSocket())) return false;
      }
      if (hasSleep() != other.hasSleep()) return false;
      if (hasSleep()) {
        if (!getSleep()
            .equals(other.getSleep())) 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 (hasExec()) {
        hash = (37 * hash) + EXEC_FIELD_NUMBER;
        hash = (53 * hash) + getExec().hashCode();
      }
      if (hasHttpGet()) {
        hash = (37 * hash) + HTTPGET_FIELD_NUMBER;
        hash = (53 * hash) + getHttpGet().hashCode();
      }
      if (hasTcpSocket()) {
        hash = (37 * hash) + TCPSOCKET_FIELD_NUMBER;
        hash = (53 * hash) + getTcpSocket().hashCode();
      }
      if (hasSleep()) {
        hash = (37 * hash) + SLEEP_FIELD_NUMBER;
        hash = (53 * hash) + getSleep().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.LifecycleHandler parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LifecycleHandler 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.V1.LifecycleHandler parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LifecycleHandler 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.V1.LifecycleHandler parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LifecycleHandler parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.LifecycleHandler parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LifecycleHandler 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.V1.LifecycleHandler parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.LifecycleHandler 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.V1.LifecycleHandler parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LifecycleHandler 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.V1.LifecycleHandler 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>
     * LifecycleHandler defines a specific action that should be taken in a lifecycle
     * hook. One and only one of the fields, except TCPSocket must be specified.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.LifecycleHandler}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.LifecycleHandler)
        io.kubernetes.client.proto.V1.LifecycleHandlerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LifecycleHandler_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LifecycleHandler_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.LifecycleHandler.class, io.kubernetes.client.proto.V1.LifecycleHandler.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.LifecycleHandler.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getExecFieldBuilder();
          getHttpGetFieldBuilder();
          getTcpSocketFieldBuilder();
          getSleepFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        exec_ = null;
        if (execBuilder_ != null) {
          execBuilder_.dispose();
          execBuilder_ = null;
        }
        httpGet_ = null;
        if (httpGetBuilder_ != null) {
          httpGetBuilder_.dispose();
          httpGetBuilder_ = null;
        }
        tcpSocket_ = null;
        if (tcpSocketBuilder_ != null) {
          tcpSocketBuilder_.dispose();
          tcpSocketBuilder_ = null;
        }
        sleep_ = null;
        if (sleepBuilder_ != null) {
          sleepBuilder_.dispose();
          sleepBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LifecycleHandler_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LifecycleHandler getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LifecycleHandler build() {
        io.kubernetes.client.proto.V1.LifecycleHandler result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LifecycleHandler buildPartial() {
        io.kubernetes.client.proto.V1.LifecycleHandler result = new io.kubernetes.client.proto.V1.LifecycleHandler(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.LifecycleHandler result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.exec_ = execBuilder_ == null
              ? exec_
              : execBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.httpGet_ = httpGetBuilder_ == null
              ? httpGet_
              : httpGetBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.tcpSocket_ = tcpSocketBuilder_ == null
              ? tcpSocket_
              : tcpSocketBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.sleep_ = sleepBuilder_ == null
              ? sleep_
              : sleepBuilder_.build();
          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.V1.LifecycleHandler) {
          return mergeFrom((io.kubernetes.client.proto.V1.LifecycleHandler)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.LifecycleHandler other) {
        if (other == io.kubernetes.client.proto.V1.LifecycleHandler.getDefaultInstance()) return this;
        if (other.hasExec()) {
          mergeExec(other.getExec());
        }
        if (other.hasHttpGet()) {
          mergeHttpGet(other.getHttpGet());
        }
        if (other.hasTcpSocket()) {
          mergeTcpSocket(other.getTcpSocket());
        }
        if (other.hasSleep()) {
          mergeSleep(other.getSleep());
        }
        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(
                    getExecFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getHttpGetFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getTcpSocketFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getSleepFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.V1.ExecAction exec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ExecAction, io.kubernetes.client.proto.V1.ExecAction.Builder, io.kubernetes.client.proto.V1.ExecActionOrBuilder> execBuilder_;
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       * @return Whether the exec field is set.
       */
      public boolean hasExec() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       * @return The exec.
       */
      public io.kubernetes.client.proto.V1.ExecAction getExec() {
        if (execBuilder_ == null) {
          return exec_ == null ? io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance() : exec_;
        } else {
          return execBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public Builder setExec(io.kubernetes.client.proto.V1.ExecAction value) {
        if (execBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exec_ = value;
        } else {
          execBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public Builder setExec(
          io.kubernetes.client.proto.V1.ExecAction.Builder builderForValue) {
        if (execBuilder_ == null) {
          exec_ = builderForValue.build();
        } else {
          execBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public Builder mergeExec(io.kubernetes.client.proto.V1.ExecAction value) {
        if (execBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            exec_ != null &&
            exec_ != io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance()) {
            getExecBuilder().mergeFrom(value);
          } else {
            exec_ = value;
          }
        } else {
          execBuilder_.mergeFrom(value);
        }
        if (exec_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public Builder clearExec() {
        bitField0_ = (bitField0_ & ~0x00000001);
        exec_ = null;
        if (execBuilder_ != null) {
          execBuilder_.dispose();
          execBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ExecAction.Builder getExecBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getExecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ExecActionOrBuilder getExecOrBuilder() {
        if (execBuilder_ != null) {
          return execBuilder_.getMessageOrBuilder();
        } else {
          return exec_ == null ?
              io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance() : exec_;
        }
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ExecAction, io.kubernetes.client.proto.V1.ExecAction.Builder, io.kubernetes.client.proto.V1.ExecActionOrBuilder> 
          getExecFieldBuilder() {
        if (execBuilder_ == null) {
          execBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ExecAction, io.kubernetes.client.proto.V1.ExecAction.Builder, io.kubernetes.client.proto.V1.ExecActionOrBuilder>(
                  getExec(),
                  getParentForChildren(),
                  isClean());
          exec_ = null;
        }
        return execBuilder_;
      }

      private io.kubernetes.client.proto.V1.HTTPGetAction httpGet_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.HTTPGetAction, io.kubernetes.client.proto.V1.HTTPGetAction.Builder, io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder> httpGetBuilder_;
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       * @return Whether the httpGet field is set.
       */
      public boolean hasHttpGet() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       * @return The httpGet.
       */
      public io.kubernetes.client.proto.V1.HTTPGetAction getHttpGet() {
        if (httpGetBuilder_ == null) {
          return httpGet_ == null ? io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance() : httpGet_;
        } else {
          return httpGetBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public Builder setHttpGet(io.kubernetes.client.proto.V1.HTTPGetAction value) {
        if (httpGetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          httpGet_ = value;
        } else {
          httpGetBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public Builder setHttpGet(
          io.kubernetes.client.proto.V1.HTTPGetAction.Builder builderForValue) {
        if (httpGetBuilder_ == null) {
          httpGet_ = builderForValue.build();
        } else {
          httpGetBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public Builder mergeHttpGet(io.kubernetes.client.proto.V1.HTTPGetAction value) {
        if (httpGetBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            httpGet_ != null &&
            httpGet_ != io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance()) {
            getHttpGetBuilder().mergeFrom(value);
          } else {
            httpGet_ = value;
          }
        } else {
          httpGetBuilder_.mergeFrom(value);
        }
        if (httpGet_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public Builder clearHttpGet() {
        bitField0_ = (bitField0_ & ~0x00000002);
        httpGet_ = null;
        if (httpGetBuilder_ != null) {
          httpGetBuilder_.dispose();
          httpGetBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public io.kubernetes.client.proto.V1.HTTPGetAction.Builder getHttpGetBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getHttpGetFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder getHttpGetOrBuilder() {
        if (httpGetBuilder_ != null) {
          return httpGetBuilder_.getMessageOrBuilder();
        } else {
          return httpGet_ == null ?
              io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance() : httpGet_;
        }
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.HTTPGetAction, io.kubernetes.client.proto.V1.HTTPGetAction.Builder, io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder> 
          getHttpGetFieldBuilder() {
        if (httpGetBuilder_ == null) {
          httpGetBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.HTTPGetAction, io.kubernetes.client.proto.V1.HTTPGetAction.Builder, io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder>(
                  getHttpGet(),
                  getParentForChildren(),
                  isClean());
          httpGet_ = null;
        }
        return httpGetBuilder_;
      }

      private io.kubernetes.client.proto.V1.TCPSocketAction tcpSocket_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.TCPSocketAction, io.kubernetes.client.proto.V1.TCPSocketAction.Builder, io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder> tcpSocketBuilder_;
      /**
       * <pre>
       * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
       * for the backward compatibility. There are no validation of this field and
       * lifecycle hooks will fail in runtime when tcp handler is specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       * @return Whether the tcpSocket field is set.
       */
      public boolean hasTcpSocket() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
       * for the backward compatibility. There are no validation of this field and
       * lifecycle hooks will fail in runtime when tcp handler is specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       * @return The tcpSocket.
       */
      public io.kubernetes.client.proto.V1.TCPSocketAction getTcpSocket() {
        if (tcpSocketBuilder_ == null) {
          return tcpSocket_ == null ? io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance() : tcpSocket_;
        } else {
          return tcpSocketBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
       * for the backward compatibility. There are no validation of this field and
       * lifecycle hooks will fail in runtime when tcp handler is specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public Builder setTcpSocket(io.kubernetes.client.proto.V1.TCPSocketAction value) {
        if (tcpSocketBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tcpSocket_ = value;
        } else {
          tcpSocketBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
       * for the backward compatibility. There are no validation of this field and
       * lifecycle hooks will fail in runtime when tcp handler is specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public Builder setTcpSocket(
          io.kubernetes.client.proto.V1.TCPSocketAction.Builder builderForValue) {
        if (tcpSocketBuilder_ == null) {
          tcpSocket_ = builderForValue.build();
        } else {
          tcpSocketBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
       * for the backward compatibility. There are no validation of this field and
       * lifecycle hooks will fail in runtime when tcp handler is specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public Builder mergeTcpSocket(io.kubernetes.client.proto.V1.TCPSocketAction value) {
        if (tcpSocketBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            tcpSocket_ != null &&
            tcpSocket_ != io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance()) {
            getTcpSocketBuilder().mergeFrom(value);
          } else {
            tcpSocket_ = value;
          }
        } else {
          tcpSocketBuilder_.mergeFrom(value);
        }
        if (tcpSocket_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
       * for the backward compatibility. There are no validation of this field and
       * lifecycle hooks will fail in runtime when tcp handler is specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public Builder clearTcpSocket() {
        bitField0_ = (bitField0_ & ~0x00000004);
        tcpSocket_ = null;
        if (tcpSocketBuilder_ != null) {
          tcpSocketBuilder_.dispose();
          tcpSocketBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
       * for the backward compatibility. There are no validation of this field and
       * lifecycle hooks will fail in runtime when tcp handler is specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public io.kubernetes.client.proto.V1.TCPSocketAction.Builder getTcpSocketBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getTcpSocketFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
       * for the backward compatibility. There are no validation of this field and
       * lifecycle hooks will fail in runtime when tcp handler is specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder getTcpSocketOrBuilder() {
        if (tcpSocketBuilder_ != null) {
          return tcpSocketBuilder_.getMessageOrBuilder();
        } else {
          return tcpSocket_ == null ?
              io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance() : tcpSocket_;
        }
      }
      /**
       * <pre>
       * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
       * for the backward compatibility. There are no validation of this field and
       * lifecycle hooks will fail in runtime when tcp handler is specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.TCPSocketAction, io.kubernetes.client.proto.V1.TCPSocketAction.Builder, io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder> 
          getTcpSocketFieldBuilder() {
        if (tcpSocketBuilder_ == null) {
          tcpSocketBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.TCPSocketAction, io.kubernetes.client.proto.V1.TCPSocketAction.Builder, io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder>(
                  getTcpSocket(),
                  getParentForChildren(),
                  isClean());
          tcpSocket_ = null;
        }
        return tcpSocketBuilder_;
      }

      private io.kubernetes.client.proto.V1.SleepAction sleep_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SleepAction, io.kubernetes.client.proto.V1.SleepAction.Builder, io.kubernetes.client.proto.V1.SleepActionOrBuilder> sleepBuilder_;
      /**
       * <pre>
       * Sleep represents the duration that the container should sleep before being terminated.
       * +featureGate=PodLifecycleSleepAction
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
       * @return Whether the sleep field is set.
       */
      public boolean hasSleep() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Sleep represents the duration that the container should sleep before being terminated.
       * +featureGate=PodLifecycleSleepAction
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
       * @return The sleep.
       */
      public io.kubernetes.client.proto.V1.SleepAction getSleep() {
        if (sleepBuilder_ == null) {
          return sleep_ == null ? io.kubernetes.client.proto.V1.SleepAction.getDefaultInstance() : sleep_;
        } else {
          return sleepBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Sleep represents the duration that the container should sleep before being terminated.
       * +featureGate=PodLifecycleSleepAction
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
       */
      public Builder setSleep(io.kubernetes.client.proto.V1.SleepAction value) {
        if (sleepBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sleep_ = value;
        } else {
          sleepBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Sleep represents the duration that the container should sleep before being terminated.
       * +featureGate=PodLifecycleSleepAction
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
       */
      public Builder setSleep(
          io.kubernetes.client.proto.V1.SleepAction.Builder builderForValue) {
        if (sleepBuilder_ == null) {
          sleep_ = builderForValue.build();
        } else {
          sleepBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Sleep represents the duration that the container should sleep before being terminated.
       * +featureGate=PodLifecycleSleepAction
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
       */
      public Builder mergeSleep(io.kubernetes.client.proto.V1.SleepAction value) {
        if (sleepBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            sleep_ != null &&
            sleep_ != io.kubernetes.client.proto.V1.SleepAction.getDefaultInstance()) {
            getSleepBuilder().mergeFrom(value);
          } else {
            sleep_ = value;
          }
        } else {
          sleepBuilder_.mergeFrom(value);
        }
        if (sleep_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Sleep represents the duration that the container should sleep before being terminated.
       * +featureGate=PodLifecycleSleepAction
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
       */
      public Builder clearSleep() {
        bitField0_ = (bitField0_ & ~0x00000008);
        sleep_ = null;
        if (sleepBuilder_ != null) {
          sleepBuilder_.dispose();
          sleepBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Sleep represents the duration that the container should sleep before being terminated.
       * +featureGate=PodLifecycleSleepAction
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
       */
      public io.kubernetes.client.proto.V1.SleepAction.Builder getSleepBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getSleepFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Sleep represents the duration that the container should sleep before being terminated.
       * +featureGate=PodLifecycleSleepAction
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
       */
      public io.kubernetes.client.proto.V1.SleepActionOrBuilder getSleepOrBuilder() {
        if (sleepBuilder_ != null) {
          return sleepBuilder_.getMessageOrBuilder();
        } else {
          return sleep_ == null ?
              io.kubernetes.client.proto.V1.SleepAction.getDefaultInstance() : sleep_;
        }
      }
      /**
       * <pre>
       * Sleep represents the duration that the container should sleep before being terminated.
       * +featureGate=PodLifecycleSleepAction
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SleepAction sleep = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SleepAction, io.kubernetes.client.proto.V1.SleepAction.Builder, io.kubernetes.client.proto.V1.SleepActionOrBuilder> 
          getSleepFieldBuilder() {
        if (sleepBuilder_ == null) {
          sleepBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SleepAction, io.kubernetes.client.proto.V1.SleepAction.Builder, io.kubernetes.client.proto.V1.SleepActionOrBuilder>(
                  getSleep(),
                  getParentForChildren(),
                  isClean());
          sleep_ = null;
        }
        return sleepBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.LifecycleHandler)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.LifecycleHandler)
    private static final io.kubernetes.client.proto.V1.LifecycleHandler DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.LifecycleHandler();
    }

    public static io.kubernetes.client.proto.V1.LifecycleHandler getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LifecycleHandler>
        PARSER = new com.google.protobuf.AbstractParser<LifecycleHandler>() {
      @java.lang.Override
      public LifecycleHandler 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<LifecycleHandler> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<LifecycleHandler> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.LifecycleHandler getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LimitRangeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.LimitRange)
      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 defines the limits enforced.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * Spec defines the limits enforced.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.LimitRangeSpec getSpec();
    /**
     * <pre>
     * Spec defines the limits enforced.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.LimitRangeSpecOrBuilder getSpecOrBuilder();
  }
  /**
   * <pre>
   * LimitRange sets resource usage limits for each kind of resource in a Namespace.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.LimitRange}
   */
  public static final class LimitRange extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.LimitRange)
      LimitRangeOrBuilder {
  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= */ "",
        LimitRange.class.getName());
    }
    // Use LimitRange.newBuilder() to construct.
    private LimitRange(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private LimitRange() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRange_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRange_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.LimitRange.class, io.kubernetes.client.proto.V1.LimitRange.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.V1.LimitRangeSpec spec_;
    /**
     * <pre>
     * Spec defines the limits enforced.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Spec defines the limits enforced.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LimitRangeSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.LimitRangeSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * Spec defines the limits enforced.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LimitRangeSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.LimitRangeSpec.getDefaultInstance() : spec_;
    }

    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());
      }
      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());
      }
      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.V1.LimitRange)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.LimitRange other = (io.kubernetes.client.proto.V1.LimitRange) 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 (!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();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.LimitRange parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRange 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.V1.LimitRange parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRange 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.V1.LimitRange parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRange parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.LimitRange parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LimitRange 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.V1.LimitRange parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.LimitRange 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.V1.LimitRange parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LimitRange 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.V1.LimitRange 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>
     * LimitRange sets resource usage limits for each kind of resource in a Namespace.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.LimitRange}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.LimitRange)
        io.kubernetes.client.proto.V1.LimitRangeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRange_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRange_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.LimitRange.class, io.kubernetes.client.proto.V1.LimitRange.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.LimitRange.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();
        }
      }
      @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;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRange_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRange getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.LimitRange.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRange build() {
        io.kubernetes.client.proto.V1.LimitRange result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRange buildPartial() {
        io.kubernetes.client.proto.V1.LimitRange result = new io.kubernetes.client.proto.V1.LimitRange(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.LimitRange 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;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.LimitRange) {
          return mergeFrom((io.kubernetes.client.proto.V1.LimitRange)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.LimitRange other) {
        if (other == io.kubernetes.client.proto.V1.LimitRange.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasSpec()) {
          mergeSpec(other.getSpec());
        }
        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
              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.V1.LimitRangeSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LimitRangeSpec, io.kubernetes.client.proto.V1.LimitRangeSpec.Builder, io.kubernetes.client.proto.V1.LimitRangeSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * Spec defines the limits enforced.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Spec defines the limits enforced.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.LimitRangeSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.LimitRangeSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Spec defines the limits enforced.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.LimitRangeSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the limits enforced.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.LimitRangeSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the limits enforced.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.LimitRangeSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.LimitRangeSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Spec defines the limits enforced.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the limits enforced.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRangeSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Spec defines the limits enforced.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRangeSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.LimitRangeSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * Spec defines the limits enforced.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LimitRangeSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LimitRangeSpec, io.kubernetes.client.proto.V1.LimitRangeSpec.Builder, io.kubernetes.client.proto.V1.LimitRangeSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LimitRangeSpec, io.kubernetes.client.proto.V1.LimitRangeSpec.Builder, io.kubernetes.client.proto.V1.LimitRangeSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.LimitRange)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.LimitRange)
    private static final io.kubernetes.client.proto.V1.LimitRange DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.LimitRange();
    }

    public static io.kubernetes.client.proto.V1.LimitRange getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LimitRange>
        PARSER = new com.google.protobuf.AbstractParser<LimitRange>() {
      @java.lang.Override
      public LimitRange 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<LimitRange> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<LimitRange> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.LimitRange getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LimitRangeItemOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.LimitRangeItem)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Type of resource that this limit applies to.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * Type of resource that this limit applies to.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * Type of resource that this limit applies to.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * Max usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
     */
    int getMaxCount();
    /**
     * <pre>
     * Max usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
     */
    boolean containsMax(
        java.lang.String key);
    /**
     * Use {@link #getMaxMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getMax();
    /**
     * <pre>
     * Max usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getMaxMap();
    /**
     * <pre>
     * Max usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getMaxOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Max usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getMaxOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Min usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
     */
    int getMinCount();
    /**
     * <pre>
     * Min usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
     */
    boolean containsMin(
        java.lang.String key);
    /**
     * Use {@link #getMinMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getMin();
    /**
     * <pre>
     * Min usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getMinMap();
    /**
     * <pre>
     * Min usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getMinOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Min usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getMinOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Default resource requirement limit value by resource name if resource limit is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
     */
    int getDefaultCount();
    /**
     * <pre>
     * Default resource requirement limit value by resource name if resource limit is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
     */
    boolean containsDefault(
        java.lang.String key);
    /**
     * Use {@link #getDefaultMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getDefault();
    /**
     * <pre>
     * Default resource requirement limit value by resource name if resource limit is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getDefaultMap();
    /**
     * <pre>
     * Default resource requirement limit value by resource name if resource limit is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getDefaultOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Default resource requirement limit value by resource name if resource limit is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getDefaultOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
     */
    int getDefaultRequestCount();
    /**
     * <pre>
     * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
     */
    boolean containsDefaultRequest(
        java.lang.String key);
    /**
     * Use {@link #getDefaultRequestMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getDefaultRequest();
    /**
     * <pre>
     * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getDefaultRequestMap();
    /**
     * <pre>
     * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getDefaultRequestOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getDefaultRequestOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
     */
    int getMaxLimitRequestRatioCount();
    /**
     * <pre>
     * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
     */
    boolean containsMaxLimitRequestRatio(
        java.lang.String key);
    /**
     * Use {@link #getMaxLimitRequestRatioMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getMaxLimitRequestRatio();
    /**
     * <pre>
     * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getMaxLimitRequestRatioMap();
    /**
     * <pre>
     * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getMaxLimitRequestRatioOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getMaxLimitRequestRatioOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * LimitRangeItem defines a min/max usage limit for any resource that matches on kind.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.LimitRangeItem}
   */
  public static final class LimitRangeItem extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.LimitRangeItem)
      LimitRangeItemOrBuilder {
  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= */ "",
        LimitRangeItem.class.getName());
    }
    // Use LimitRangeItem.newBuilder() to construct.
    private LimitRangeItem(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private LimitRangeItem() {
      type_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 2:
          return internalGetMax();
        case 3:
          return internalGetMin();
        case 4:
          return internalGetDefault();
        case 5:
          return internalGetDefaultRequest();
        case 6:
          return internalGetMaxLimitRequestRatio();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeItem_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.LimitRangeItem.class, io.kubernetes.client.proto.V1.LimitRangeItem.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * Type of resource that this limit applies to.
     * </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 of resource that this limit applies to.
     * </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 of resource that this limit applies to.
     * </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 MAX_FIELD_NUMBER = 2;
    private static final class MaxDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> max_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetMax() {
      if (max_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MaxDefaultEntryHolder.defaultEntry);
      }
      return max_;
    }
    public int getMaxCount() {
      return internalGetMax().getMap().size();
    }
    /**
     * <pre>
     * Max usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
     */
    @java.lang.Override
    public boolean containsMax(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetMax().getMap().containsKey(key);
    }
    /**
     * Use {@link #getMaxMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMax() {
      return getMaxMap();
    }
    /**
     * <pre>
     * Max usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMaxMap() {
      return internalGetMax().getMap();
    }
    /**
     * <pre>
     * Max usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getMaxOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetMax().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Max usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getMaxOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetMax().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MIN_FIELD_NUMBER = 3;
    private static final class MinDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeItem_MinEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> min_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetMin() {
      if (min_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MinDefaultEntryHolder.defaultEntry);
      }
      return min_;
    }
    public int getMinCount() {
      return internalGetMin().getMap().size();
    }
    /**
     * <pre>
     * Min usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
     */
    @java.lang.Override
    public boolean containsMin(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetMin().getMap().containsKey(key);
    }
    /**
     * Use {@link #getMinMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMin() {
      return getMinMap();
    }
    /**
     * <pre>
     * Min usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMinMap() {
      return internalGetMin().getMap();
    }
    /**
     * <pre>
     * Min usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getMinOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetMin().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Min usage constraints on this kind by resource name.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getMinOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetMin().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int DEFAULT_FIELD_NUMBER = 4;
    private static final class DefaultDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> default_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetDefault() {
      if (default_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            DefaultDefaultEntryHolder.defaultEntry);
      }
      return default_;
    }
    public int getDefaultCount() {
      return internalGetDefault().getMap().size();
    }
    /**
     * <pre>
     * Default resource requirement limit value by resource name if resource limit is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
     */
    @java.lang.Override
    public boolean containsDefault(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetDefault().getMap().containsKey(key);
    }
    /**
     * Use {@link #getDefaultMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getDefault() {
      return getDefaultMap();
    }
    /**
     * <pre>
     * Default resource requirement limit value by resource name if resource limit is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getDefaultMap() {
      return internalGetDefault().getMap();
    }
    /**
     * <pre>
     * Default resource requirement limit value by resource name if resource limit is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getDefaultOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetDefault().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Default resource requirement limit value by resource name if resource limit is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getDefaultOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetDefault().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int DEFAULTREQUEST_FIELD_NUMBER = 5;
    private static final class DefaultRequestDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultRequestEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultRequest_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetDefaultRequest() {
      if (defaultRequest_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            DefaultRequestDefaultEntryHolder.defaultEntry);
      }
      return defaultRequest_;
    }
    public int getDefaultRequestCount() {
      return internalGetDefaultRequest().getMap().size();
    }
    /**
     * <pre>
     * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
     */
    @java.lang.Override
    public boolean containsDefaultRequest(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetDefaultRequest().getMap().containsKey(key);
    }
    /**
     * Use {@link #getDefaultRequestMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getDefaultRequest() {
      return getDefaultRequestMap();
    }
    /**
     * <pre>
     * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getDefaultRequestMap() {
      return internalGetDefaultRequest().getMap();
    }
    /**
     * <pre>
     * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getDefaultRequestOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetDefaultRequest().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getDefaultRequestOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetDefaultRequest().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int MAXLIMITREQUESTRATIO_FIELD_NUMBER = 6;
    private static final class MaxLimitRequestRatioDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxLimitRequestRatioEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> maxLimitRequestRatio_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetMaxLimitRequestRatio() {
      if (maxLimitRequestRatio_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MaxLimitRequestRatioDefaultEntryHolder.defaultEntry);
      }
      return maxLimitRequestRatio_;
    }
    public int getMaxLimitRequestRatioCount() {
      return internalGetMaxLimitRequestRatio().getMap().size();
    }
    /**
     * <pre>
     * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
     */
    @java.lang.Override
    public boolean containsMaxLimitRequestRatio(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetMaxLimitRequestRatio().getMap().containsKey(key);
    }
    /**
     * Use {@link #getMaxLimitRequestRatioMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMaxLimitRequestRatio() {
      return getMaxLimitRequestRatioMap();
    }
    /**
     * <pre>
     * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMaxLimitRequestRatioMap() {
      return internalGetMaxLimitRequestRatio().getMap();
    }
    /**
     * <pre>
     * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getMaxLimitRequestRatioOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetMaxLimitRequestRatio().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getMaxLimitRequestRatioOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetMaxLimitRequestRatio().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, type_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetMax(),
          MaxDefaultEntryHolder.defaultEntry,
          2);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetMin(),
          MinDefaultEntryHolder.defaultEntry,
          3);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetDefault(),
          DefaultDefaultEntryHolder.defaultEntry,
          4);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetDefaultRequest(),
          DefaultRequestDefaultEntryHolder.defaultEntry,
          5);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetMaxLimitRequestRatio(),
          MaxLimitRequestRatioDefaultEntryHolder.defaultEntry,
          6);
      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_);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetMax().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        max__ = MaxDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, max__);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetMin().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        min__ = MinDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, min__);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetDefault().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        default__ = DefaultDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, default__);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetDefaultRequest().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        defaultRequest__ = DefaultRequestDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, defaultRequest__);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetMaxLimitRequestRatio().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        maxLimitRequestRatio__ = MaxLimitRequestRatioDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, maxLimitRequestRatio__);
      }
      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.V1.LimitRangeItem)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.LimitRangeItem other = (io.kubernetes.client.proto.V1.LimitRangeItem) obj;

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (!internalGetMax().equals(
          other.internalGetMax())) return false;
      if (!internalGetMin().equals(
          other.internalGetMin())) return false;
      if (!internalGetDefault().equals(
          other.internalGetDefault())) return false;
      if (!internalGetDefaultRequest().equals(
          other.internalGetDefaultRequest())) return false;
      if (!internalGetMaxLimitRequestRatio().equals(
          other.internalGetMaxLimitRequestRatio())) 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 (!internalGetMax().getMap().isEmpty()) {
        hash = (37 * hash) + MAX_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMax().hashCode();
      }
      if (!internalGetMin().getMap().isEmpty()) {
        hash = (37 * hash) + MIN_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMin().hashCode();
      }
      if (!internalGetDefault().getMap().isEmpty()) {
        hash = (37 * hash) + DEFAULT_FIELD_NUMBER;
        hash = (53 * hash) + internalGetDefault().hashCode();
      }
      if (!internalGetDefaultRequest().getMap().isEmpty()) {
        hash = (37 * hash) + DEFAULTREQUEST_FIELD_NUMBER;
        hash = (53 * hash) + internalGetDefaultRequest().hashCode();
      }
      if (!internalGetMaxLimitRequestRatio().getMap().isEmpty()) {
        hash = (37 * hash) + MAXLIMITREQUESTRATIO_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMaxLimitRequestRatio().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.LimitRangeItem parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeItem 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.V1.LimitRangeItem parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeItem 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.V1.LimitRangeItem parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeItem parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeItem parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeItem 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.V1.LimitRangeItem parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.LimitRangeItem 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.V1.LimitRangeItem parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeItem 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.V1.LimitRangeItem 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>
     * LimitRangeItem defines a min/max usage limit for any resource that matches on kind.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.LimitRangeItem}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.LimitRangeItem)
        io.kubernetes.client.proto.V1.LimitRangeItemOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetMax();
          case 3:
            return internalGetMin();
          case 4:
            return internalGetDefault();
          case 5:
            return internalGetDefaultRequest();
          case 6:
            return internalGetMaxLimitRequestRatio();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableMax();
          case 3:
            return internalGetMutableMin();
          case 4:
            return internalGetMutableDefault();
          case 5:
            return internalGetMutableDefaultRequest();
          case 6:
            return internalGetMutableMaxLimitRequestRatio();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeItem_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.LimitRangeItem.class, io.kubernetes.client.proto.V1.LimitRangeItem.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.LimitRangeItem.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = "";
        internalGetMutableMax().clear();
        internalGetMutableMin().clear();
        internalGetMutableDefault().clear();
        internalGetMutableDefaultRequest().clear();
        internalGetMutableMaxLimitRequestRatio().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRangeItem getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.LimitRangeItem.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRangeItem build() {
        io.kubernetes.client.proto.V1.LimitRangeItem result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRangeItem buildPartial() {
        io.kubernetes.client.proto.V1.LimitRangeItem result = new io.kubernetes.client.proto.V1.LimitRangeItem(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.LimitRangeItem 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.max_ = internalGetMax().build(MaxDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.min_ = internalGetMin().build(MinDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.default_ = internalGetDefault().build(DefaultDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.defaultRequest_ = internalGetDefaultRequest().build(DefaultRequestDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.maxLimitRequestRatio_ = internalGetMaxLimitRequestRatio().build(MaxLimitRequestRatioDefaultEntryHolder.defaultEntry);
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.LimitRangeItem) {
          return mergeFrom((io.kubernetes.client.proto.V1.LimitRangeItem)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.LimitRangeItem other) {
        if (other == io.kubernetes.client.proto.V1.LimitRangeItem.getDefaultInstance()) return this;
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        internalGetMutableMax().mergeFrom(
            other.internalGetMax());
        bitField0_ |= 0x00000002;
        internalGetMutableMin().mergeFrom(
            other.internalGetMin());
        bitField0_ |= 0x00000004;
        internalGetMutableDefault().mergeFrom(
            other.internalGetDefault());
        bitField0_ |= 0x00000008;
        internalGetMutableDefaultRequest().mergeFrom(
            other.internalGetDefaultRequest());
        bitField0_ |= 0x00000010;
        internalGetMutableMaxLimitRequestRatio().mergeFrom(
            other.internalGetMaxLimitRequestRatio());
        bitField0_ |= 0x00000020;
        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: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                max__ = input.readMessage(
                    MaxDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableMax().ensureBuilderMap().put(
                    max__.getKey(), max__.getValue());
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                min__ = input.readMessage(
                    MinDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableMin().ensureBuilderMap().put(
                    min__.getKey(), min__.getValue());
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                default__ = input.readMessage(
                    DefaultDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableDefault().ensureBuilderMap().put(
                    default__.getKey(), default__.getValue());
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                defaultRequest__ = input.readMessage(
                    DefaultRequestDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableDefaultRequest().ensureBuilderMap().put(
                    defaultRequest__.getKey(), defaultRequest__.getValue());
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                maxLimitRequestRatio__ = input.readMessage(
                    MaxLimitRequestRatioDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableMaxLimitRequestRatio().ensureBuilderMap().put(
                    maxLimitRequestRatio__.getKey(), maxLimitRequestRatio__.getValue());
                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 type_ = "";
      /**
       * <pre>
       * Type of resource that this limit applies to.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Type of resource that this limit applies to.
       * </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 of resource that this limit applies to.
       * </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 of resource that this limit applies to.
       * </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 of resource that this limit applies to.
       * </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 of resource that this limit applies to.
       * </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 static final class MaxConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return MaxDefaultEntryHolder.defaultEntry;
        }
      };
      private static final MaxConverter maxConverter = new MaxConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> max_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMax() {
        if (max_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(maxConverter);
        }
        return max_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableMax() {
        if (max_ == null) {
          max_ = new com.google.protobuf.MapFieldBuilder<>(maxConverter);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return max_;
      }
      public int getMaxCount() {
        return internalGetMax().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Max usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
       */
      @java.lang.Override
      public boolean containsMax(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetMax().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getMaxMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMax() {
        return getMaxMap();
      }
      /**
       * <pre>
       * Max usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMaxMap() {
        return internalGetMax().getImmutableMap();
      }
      /**
       * <pre>
       * Max usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getMaxOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableMax().ensureBuilderMap();
        return map.containsKey(key) ? maxConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Max usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getMaxOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableMax().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return maxConverter.build(map.get(key));
      }
      public Builder clearMax() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableMax().clear();
        return this;
      }
      /**
       * <pre>
       * Max usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
       */
      public Builder removeMax(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableMax().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableMax() {
        bitField0_ |= 0x00000002;
        return internalGetMutableMax().ensureMessageMap();
      }
      /**
       * <pre>
       * Max usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
       */
      public Builder putMax(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableMax().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Max usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
       */
      public Builder putAllMax(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableMax().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Max usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; max = 2;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putMaxBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableMax().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private static final class MinConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return MinDefaultEntryHolder.defaultEntry;
        }
      };
      private static final MinConverter minConverter = new MinConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> min_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMin() {
        if (min_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(minConverter);
        }
        return min_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableMin() {
        if (min_ == null) {
          min_ = new com.google.protobuf.MapFieldBuilder<>(minConverter);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return min_;
      }
      public int getMinCount() {
        return internalGetMin().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Min usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
       */
      @java.lang.Override
      public boolean containsMin(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetMin().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getMinMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMin() {
        return getMinMap();
      }
      /**
       * <pre>
       * Min usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMinMap() {
        return internalGetMin().getImmutableMap();
      }
      /**
       * <pre>
       * Min usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getMinOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableMin().ensureBuilderMap();
        return map.containsKey(key) ? minConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Min usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getMinOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableMin().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return minConverter.build(map.get(key));
      }
      public Builder clearMin() {
        bitField0_ = (bitField0_ & ~0x00000004);
        internalGetMutableMin().clear();
        return this;
      }
      /**
       * <pre>
       * Min usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
       */
      public Builder removeMin(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableMin().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableMin() {
        bitField0_ |= 0x00000004;
        return internalGetMutableMin().ensureMessageMap();
      }
      /**
       * <pre>
       * Min usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
       */
      public Builder putMin(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableMin().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Min usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
       */
      public Builder putAllMin(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableMin().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Min usage constraints on this kind by resource name.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; min = 3;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putMinBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableMin().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private static final class DefaultConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return DefaultDefaultEntryHolder.defaultEntry;
        }
      };
      private static final DefaultConverter defaultConverter = new DefaultConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> default_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetDefault() {
        if (default_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(defaultConverter);
        }
        return default_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableDefault() {
        if (default_ == null) {
          default_ = new com.google.protobuf.MapFieldBuilder<>(defaultConverter);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return default_;
      }
      public int getDefaultCount() {
        return internalGetDefault().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Default resource requirement limit value by resource name if resource limit is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
       */
      @java.lang.Override
      public boolean containsDefault(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetDefault().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getDefaultMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getDefault() {
        return getDefaultMap();
      }
      /**
       * <pre>
       * Default resource requirement limit value by resource name if resource limit is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getDefaultMap() {
        return internalGetDefault().getImmutableMap();
      }
      /**
       * <pre>
       * Default resource requirement limit value by resource name if resource limit is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getDefaultOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableDefault().ensureBuilderMap();
        return map.containsKey(key) ? defaultConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Default resource requirement limit value by resource name if resource limit is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getDefaultOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableDefault().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return defaultConverter.build(map.get(key));
      }
      public Builder clearDefault() {
        bitField0_ = (bitField0_ & ~0x00000008);
        internalGetMutableDefault().clear();
        return this;
      }
      /**
       * <pre>
       * Default resource requirement limit value by resource name if resource limit is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
       */
      public Builder removeDefault(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableDefault().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableDefault() {
        bitField0_ |= 0x00000008;
        return internalGetMutableDefault().ensureMessageMap();
      }
      /**
       * <pre>
       * Default resource requirement limit value by resource name if resource limit is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
       */
      public Builder putDefault(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableDefault().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * Default resource requirement limit value by resource name if resource limit is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
       */
      public Builder putAllDefault(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableDefault().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * Default resource requirement limit value by resource name if resource limit is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; default = 4;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putDefaultBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableDefault().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private static final class DefaultRequestConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return DefaultRequestDefaultEntryHolder.defaultEntry;
        }
      };
      private static final DefaultRequestConverter defaultRequestConverter = new DefaultRequestConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> defaultRequest_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetDefaultRequest() {
        if (defaultRequest_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(defaultRequestConverter);
        }
        return defaultRequest_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableDefaultRequest() {
        if (defaultRequest_ == null) {
          defaultRequest_ = new com.google.protobuf.MapFieldBuilder<>(defaultRequestConverter);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return defaultRequest_;
      }
      public int getDefaultRequestCount() {
        return internalGetDefaultRequest().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
       */
      @java.lang.Override
      public boolean containsDefaultRequest(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetDefaultRequest().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getDefaultRequestMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getDefaultRequest() {
        return getDefaultRequestMap();
      }
      /**
       * <pre>
       * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getDefaultRequestMap() {
        return internalGetDefaultRequest().getImmutableMap();
      }
      /**
       * <pre>
       * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getDefaultRequestOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableDefaultRequest().ensureBuilderMap();
        return map.containsKey(key) ? defaultRequestConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getDefaultRequestOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableDefaultRequest().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return defaultRequestConverter.build(map.get(key));
      }
      public Builder clearDefaultRequest() {
        bitField0_ = (bitField0_ & ~0x00000010);
        internalGetMutableDefaultRequest().clear();
        return this;
      }
      /**
       * <pre>
       * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
       */
      public Builder removeDefaultRequest(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableDefaultRequest().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableDefaultRequest() {
        bitField0_ |= 0x00000010;
        return internalGetMutableDefaultRequest().ensureMessageMap();
      }
      /**
       * <pre>
       * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
       */
      public Builder putDefaultRequest(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableDefaultRequest().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
       */
      public Builder putAllDefaultRequest(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableDefaultRequest().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; defaultRequest = 5;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putDefaultRequestBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableDefaultRequest().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private static final class MaxLimitRequestRatioConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return MaxLimitRequestRatioDefaultEntryHolder.defaultEntry;
        }
      };
      private static final MaxLimitRequestRatioConverter maxLimitRequestRatioConverter = new MaxLimitRequestRatioConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> maxLimitRequestRatio_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMaxLimitRequestRatio() {
        if (maxLimitRequestRatio_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(maxLimitRequestRatioConverter);
        }
        return maxLimitRequestRatio_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableMaxLimitRequestRatio() {
        if (maxLimitRequestRatio_ == null) {
          maxLimitRequestRatio_ = new com.google.protobuf.MapFieldBuilder<>(maxLimitRequestRatioConverter);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return maxLimitRequestRatio_;
      }
      public int getMaxLimitRequestRatioCount() {
        return internalGetMaxLimitRequestRatio().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
       */
      @java.lang.Override
      public boolean containsMaxLimitRequestRatio(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetMaxLimitRequestRatio().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getMaxLimitRequestRatioMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMaxLimitRequestRatio() {
        return getMaxLimitRequestRatioMap();
      }
      /**
       * <pre>
       * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getMaxLimitRequestRatioMap() {
        return internalGetMaxLimitRequestRatio().getImmutableMap();
      }
      /**
       * <pre>
       * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getMaxLimitRequestRatioOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableMaxLimitRequestRatio().ensureBuilderMap();
        return map.containsKey(key) ? maxLimitRequestRatioConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getMaxLimitRequestRatioOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableMaxLimitRequestRatio().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return maxLimitRequestRatioConverter.build(map.get(key));
      }
      public Builder clearMaxLimitRequestRatio() {
        bitField0_ = (bitField0_ & ~0x00000020);
        internalGetMutableMaxLimitRequestRatio().clear();
        return this;
      }
      /**
       * <pre>
       * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
       */
      public Builder removeMaxLimitRequestRatio(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableMaxLimitRequestRatio().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableMaxLimitRequestRatio() {
        bitField0_ |= 0x00000020;
        return internalGetMutableMaxLimitRequestRatio().ensureMessageMap();
      }
      /**
       * <pre>
       * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
       */
      public Builder putMaxLimitRequestRatio(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableMaxLimitRequestRatio().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <pre>
       * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
       */
      public Builder putAllMaxLimitRequestRatio(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableMaxLimitRequestRatio().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <pre>
       * MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; maxLimitRequestRatio = 6;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putMaxLimitRequestRatioBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableMaxLimitRequestRatio().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.LimitRangeItem)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.LimitRangeItem)
    private static final io.kubernetes.client.proto.V1.LimitRangeItem DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.LimitRangeItem();
    }

    public static io.kubernetes.client.proto.V1.LimitRangeItem getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LimitRangeItem>
        PARSER = new com.google.protobuf.AbstractParser<LimitRangeItem>() {
      @java.lang.Override
      public LimitRangeItem 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<LimitRangeItem> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<LimitRangeItem> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.LimitRangeItem getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LimitRangeListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.LimitRangeList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Items is a list of LimitRange objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.LimitRange> 
        getItemsList();
    /**
     * <pre>
     * Items is a list of LimitRange objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
     */
    io.kubernetes.client.proto.V1.LimitRange getItems(int index);
    /**
     * <pre>
     * Items is a list of LimitRange objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is a list of LimitRange objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.LimitRangeOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is a list of LimitRange objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
     */
    io.kubernetes.client.proto.V1.LimitRangeOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * LimitRangeList is a list of LimitRange items.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.LimitRangeList}
   */
  public static final class LimitRangeList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.LimitRangeList)
      LimitRangeListOrBuilder {
  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= */ "",
        LimitRangeList.class.getName());
    }
    // Use LimitRangeList.newBuilder() to construct.
    private LimitRangeList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private LimitRangeList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.LimitRangeList.class, io.kubernetes.client.proto.V1.LimitRangeList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.LimitRange> items_;
    /**
     * <pre>
     * Items is a list of LimitRange objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.LimitRange> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of LimitRange objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.LimitRangeOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of LimitRange objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is a list of LimitRange objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LimitRange getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is a list of LimitRange objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LimitRangeOrBuilder 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.V1.LimitRangeList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.LimitRangeList other = (io.kubernetes.client.proto.V1.LimitRangeList) 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.V1.LimitRangeList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeList 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.V1.LimitRangeList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeList 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.V1.LimitRangeList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeList 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.V1.LimitRangeList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.LimitRangeList 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.V1.LimitRangeList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeList 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.V1.LimitRangeList 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>
     * LimitRangeList is a list of LimitRange items.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.LimitRangeList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.LimitRangeList)
        io.kubernetes.client.proto.V1.LimitRangeListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.LimitRangeList.class, io.kubernetes.client.proto.V1.LimitRangeList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.LimitRangeList.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.V1.internal_static_k8s_io_api_core_v1_LimitRangeList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRangeList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.LimitRangeList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRangeList build() {
        io.kubernetes.client.proto.V1.LimitRangeList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRangeList buildPartial() {
        io.kubernetes.client.proto.V1.LimitRangeList result = new io.kubernetes.client.proto.V1.LimitRangeList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.LimitRangeList 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.V1.LimitRangeList 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.V1.LimitRangeList) {
          return mergeFrom((io.kubernetes.client.proto.V1.LimitRangeList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.LimitRangeList other) {
        if (other == io.kubernetes.client.proto.V1.LimitRangeList.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.V1.LimitRange m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.LimitRange.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.LimitRange> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.LimitRange>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.LimitRange, io.kubernetes.client.proto.V1.LimitRange.Builder, io.kubernetes.client.proto.V1.LimitRangeOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.LimitRange> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRange getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.LimitRange value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.LimitRange.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.LimitRange value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.LimitRange value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.LimitRange.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.LimitRange.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.LimitRange> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRange.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRangeOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.LimitRangeOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRange.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.LimitRange.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRange.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.LimitRange.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of LimitRange objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRange items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.LimitRange.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.LimitRange, io.kubernetes.client.proto.V1.LimitRange.Builder, io.kubernetes.client.proto.V1.LimitRangeOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.LimitRange, io.kubernetes.client.proto.V1.LimitRange.Builder, io.kubernetes.client.proto.V1.LimitRangeOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.LimitRangeList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.LimitRangeList)
    private static final io.kubernetes.client.proto.V1.LimitRangeList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.LimitRangeList();
    }

    public static io.kubernetes.client.proto.V1.LimitRangeList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LimitRangeList>
        PARSER = new com.google.protobuf.AbstractParser<LimitRangeList>() {
      @java.lang.Override
      public LimitRangeList 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<LimitRangeList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<LimitRangeList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.LimitRangeList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LimitRangeSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.LimitRangeSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Limits is the list of LimitRangeItem objects that are enforced.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.LimitRangeItem> 
        getLimitsList();
    /**
     * <pre>
     * Limits is the list of LimitRangeItem objects that are enforced.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
     */
    io.kubernetes.client.proto.V1.LimitRangeItem getLimits(int index);
    /**
     * <pre>
     * Limits is the list of LimitRangeItem objects that are enforced.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
     */
    int getLimitsCount();
    /**
     * <pre>
     * Limits is the list of LimitRangeItem objects that are enforced.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.LimitRangeItemOrBuilder> 
        getLimitsOrBuilderList();
    /**
     * <pre>
     * Limits is the list of LimitRangeItem objects that are enforced.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
     */
    io.kubernetes.client.proto.V1.LimitRangeItemOrBuilder getLimitsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * LimitRangeSpec defines a min/max usage limit for resources that match on kind.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.LimitRangeSpec}
   */
  public static final class LimitRangeSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.LimitRangeSpec)
      LimitRangeSpecOrBuilder {
  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= */ "",
        LimitRangeSpec.class.getName());
    }
    // Use LimitRangeSpec.newBuilder() to construct.
    private LimitRangeSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private LimitRangeSpec() {
      limits_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeSpec_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.LimitRangeSpec.class, io.kubernetes.client.proto.V1.LimitRangeSpec.Builder.class);
    }

    public static final int LIMITS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.LimitRangeItem> limits_;
    /**
     * <pre>
     * Limits is the list of LimitRangeItem objects that are enforced.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.LimitRangeItem> getLimitsList() {
      return limits_;
    }
    /**
     * <pre>
     * Limits is the list of LimitRangeItem objects that are enforced.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.LimitRangeItemOrBuilder> 
        getLimitsOrBuilderList() {
      return limits_;
    }
    /**
     * <pre>
     * Limits is the list of LimitRangeItem objects that are enforced.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
     */
    @java.lang.Override
    public int getLimitsCount() {
      return limits_.size();
    }
    /**
     * <pre>
     * Limits is the list of LimitRangeItem objects that are enforced.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LimitRangeItem getLimits(int index) {
      return limits_.get(index);
    }
    /**
     * <pre>
     * Limits is the list of LimitRangeItem objects that are enforced.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LimitRangeItemOrBuilder getLimitsOrBuilder(
        int index) {
      return limits_.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 {
      for (int i = 0; i < limits_.size(); i++) {
        output.writeMessage(1, limits_.get(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 < limits_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, limits_.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.V1.LimitRangeSpec)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.LimitRangeSpec other = (io.kubernetes.client.proto.V1.LimitRangeSpec) obj;

      if (!getLimitsList()
          .equals(other.getLimitsList())) 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 (getLimitsCount() > 0) {
        hash = (37 * hash) + LIMITS_FIELD_NUMBER;
        hash = (53 * hash) + getLimitsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.LimitRangeSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeSpec 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.V1.LimitRangeSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeSpec 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.V1.LimitRangeSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeSpec 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.V1.LimitRangeSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.LimitRangeSpec 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.V1.LimitRangeSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LimitRangeSpec 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.V1.LimitRangeSpec 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>
     * LimitRangeSpec defines a min/max usage limit for resources that match on kind.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.LimitRangeSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.LimitRangeSpec)
        io.kubernetes.client.proto.V1.LimitRangeSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeSpec_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.LimitRangeSpec.class, io.kubernetes.client.proto.V1.LimitRangeSpec.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.LimitRangeSpec.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (limitsBuilder_ == null) {
          limits_ = java.util.Collections.emptyList();
        } else {
          limits_ = null;
          limitsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LimitRangeSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRangeSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.LimitRangeSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRangeSpec build() {
        io.kubernetes.client.proto.V1.LimitRangeSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LimitRangeSpec buildPartial() {
        io.kubernetes.client.proto.V1.LimitRangeSpec result = new io.kubernetes.client.proto.V1.LimitRangeSpec(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.LimitRangeSpec result) {
        if (limitsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            limits_ = java.util.Collections.unmodifiableList(limits_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.limits_ = limits_;
        } else {
          result.limits_ = limitsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.LimitRangeSpec result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.LimitRangeSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1.LimitRangeSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.LimitRangeSpec other) {
        if (other == io.kubernetes.client.proto.V1.LimitRangeSpec.getDefaultInstance()) return this;
        if (limitsBuilder_ == null) {
          if (!other.limits_.isEmpty()) {
            if (limits_.isEmpty()) {
              limits_ = other.limits_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureLimitsIsMutable();
              limits_.addAll(other.limits_);
            }
            onChanged();
          }
        } else {
          if (!other.limits_.isEmpty()) {
            if (limitsBuilder_.isEmpty()) {
              limitsBuilder_.dispose();
              limitsBuilder_ = null;
              limits_ = other.limits_;
              bitField0_ = (bitField0_ & ~0x00000001);
              limitsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getLimitsFieldBuilder() : null;
            } else {
              limitsBuilder_.addAllMessages(other.limits_);
            }
          }
        }
        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.V1.LimitRangeItem m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.LimitRangeItem.parser(),
                        extensionRegistry);
                if (limitsBuilder_ == null) {
                  ensureLimitsIsMutable();
                  limits_.add(m);
                } else {
                  limitsBuilder_.addMessage(m);
                }
                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.util.List<io.kubernetes.client.proto.V1.LimitRangeItem> limits_ =
        java.util.Collections.emptyList();
      private void ensureLimitsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          limits_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.LimitRangeItem>(limits_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.LimitRangeItem, io.kubernetes.client.proto.V1.LimitRangeItem.Builder, io.kubernetes.client.proto.V1.LimitRangeItemOrBuilder> limitsBuilder_;

      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.LimitRangeItem> getLimitsList() {
        if (limitsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(limits_);
        } else {
          return limitsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public int getLimitsCount() {
        if (limitsBuilder_ == null) {
          return limits_.size();
        } else {
          return limitsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRangeItem getLimits(int index) {
        if (limitsBuilder_ == null) {
          return limits_.get(index);
        } else {
          return limitsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public Builder setLimits(
          int index, io.kubernetes.client.proto.V1.LimitRangeItem value) {
        if (limitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLimitsIsMutable();
          limits_.set(index, value);
          onChanged();
        } else {
          limitsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public Builder setLimits(
          int index, io.kubernetes.client.proto.V1.LimitRangeItem.Builder builderForValue) {
        if (limitsBuilder_ == null) {
          ensureLimitsIsMutable();
          limits_.set(index, builderForValue.build());
          onChanged();
        } else {
          limitsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public Builder addLimits(io.kubernetes.client.proto.V1.LimitRangeItem value) {
        if (limitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLimitsIsMutable();
          limits_.add(value);
          onChanged();
        } else {
          limitsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public Builder addLimits(
          int index, io.kubernetes.client.proto.V1.LimitRangeItem value) {
        if (limitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLimitsIsMutable();
          limits_.add(index, value);
          onChanged();
        } else {
          limitsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public Builder addLimits(
          io.kubernetes.client.proto.V1.LimitRangeItem.Builder builderForValue) {
        if (limitsBuilder_ == null) {
          ensureLimitsIsMutable();
          limits_.add(builderForValue.build());
          onChanged();
        } else {
          limitsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public Builder addLimits(
          int index, io.kubernetes.client.proto.V1.LimitRangeItem.Builder builderForValue) {
        if (limitsBuilder_ == null) {
          ensureLimitsIsMutable();
          limits_.add(index, builderForValue.build());
          onChanged();
        } else {
          limitsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public Builder addAllLimits(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.LimitRangeItem> values) {
        if (limitsBuilder_ == null) {
          ensureLimitsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, limits_);
          onChanged();
        } else {
          limitsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public Builder clearLimits() {
        if (limitsBuilder_ == null) {
          limits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          limitsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public Builder removeLimits(int index) {
        if (limitsBuilder_ == null) {
          ensureLimitsIsMutable();
          limits_.remove(index);
          onChanged();
        } else {
          limitsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRangeItem.Builder getLimitsBuilder(
          int index) {
        return getLimitsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRangeItemOrBuilder getLimitsOrBuilder(
          int index) {
        if (limitsBuilder_ == null) {
          return limits_.get(index);  } else {
          return limitsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.LimitRangeItemOrBuilder> 
           getLimitsOrBuilderList() {
        if (limitsBuilder_ != null) {
          return limitsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(limits_);
        }
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRangeItem.Builder addLimitsBuilder() {
        return getLimitsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.LimitRangeItem.getDefaultInstance());
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LimitRangeItem.Builder addLimitsBuilder(
          int index) {
        return getLimitsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.LimitRangeItem.getDefaultInstance());
      }
      /**
       * <pre>
       * Limits is the list of LimitRangeItem objects that are enforced.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LimitRangeItem limits = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.LimitRangeItem.Builder> 
           getLimitsBuilderList() {
        return getLimitsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.LimitRangeItem, io.kubernetes.client.proto.V1.LimitRangeItem.Builder, io.kubernetes.client.proto.V1.LimitRangeItemOrBuilder> 
          getLimitsFieldBuilder() {
        if (limitsBuilder_ == null) {
          limitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.LimitRangeItem, io.kubernetes.client.proto.V1.LimitRangeItem.Builder, io.kubernetes.client.proto.V1.LimitRangeItemOrBuilder>(
                  limits_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          limits_ = null;
        }
        return limitsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.LimitRangeSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.LimitRangeSpec)
    private static final io.kubernetes.client.proto.V1.LimitRangeSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.LimitRangeSpec();
    }

    public static io.kubernetes.client.proto.V1.LimitRangeSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LimitRangeSpec>
        PARSER = new com.google.protobuf.AbstractParser<LimitRangeSpec>() {
      @java.lang.Override
      public LimitRangeSpec 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<LimitRangeSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<LimitRangeSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.LimitRangeSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.List)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * List of objects
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> 
        getItemsList();
    /**
     * <pre>
     * List of objects
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
     */
    io.kubernetes.client.proto.Runtime.RawExtension getItems(int index);
    /**
     * <pre>
     * List of objects
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * List of objects
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * List of objects
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
     */
    io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * List holds a list of objects, which may not be known by the server.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.List}
   */
  public static final class List extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.List)
      ListOrBuilder {
  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= */ "",
        List.class.getName());
    }
    // Use List.newBuilder() to construct.
    private List(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private List() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_List_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_List_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.List.class, io.kubernetes.client.proto.V1.List.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.Runtime.RawExtension> items_;
    /**
     * <pre>
     * List of objects
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * List of objects
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * List of objects
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * List of objects
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtension getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * List of objects
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder 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.V1.List)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.List other = (io.kubernetes.client.proto.V1.List) 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.V1.List parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.List 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.V1.List parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.List 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.V1.List parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.List parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.List parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.List 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.V1.List parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.List 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.V1.List parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.List 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.V1.List 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>
     * List holds a list of objects, which may not be known by the server.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.List}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.List)
        io.kubernetes.client.proto.V1.ListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_List_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_List_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.List.class, io.kubernetes.client.proto.V1.List.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.List.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.V1.internal_static_k8s_io_api_core_v1_List_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.List getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.List.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.List build() {
        io.kubernetes.client.proto.V1.List result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.List buildPartial() {
        io.kubernetes.client.proto.V1.List result = new io.kubernetes.client.proto.V1.List(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.List 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.V1.List 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.V1.List) {
          return mergeFrom((io.kubernetes.client.proto.V1.List)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.List other) {
        if (other == io.kubernetes.client.proto.V1.List.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.Runtime.RawExtension m =
                    input.readMessage(
                        io.kubernetes.client.proto.Runtime.RawExtension.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.Runtime.RawExtension> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.Runtime.RawExtension>(items_);
          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> itemsBuilder_;

      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.Runtime.RawExtension> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance());
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance());
      }
      /**
       * <pre>
       * List of objects
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.Runtime.RawExtension.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().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> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.List)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.List)
    private static final io.kubernetes.client.proto.V1.List DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.List();
    }

    public static io.kubernetes.client.proto.V1.List getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<List>
        PARSER = new com.google.protobuf.AbstractParser<List>() {
      @java.lang.Override
      public List 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<List> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<List> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.List getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LoadBalancerIngressOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.LoadBalancerIngress)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * IP is set for load-balancer ingress points that are IP based
     * (typically GCE or OpenStack load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return Whether the ip field is set.
     */
    boolean hasIp();
    /**
     * <pre>
     * IP is set for load-balancer ingress points that are IP based
     * (typically GCE or OpenStack load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The ip.
     */
    java.lang.String getIp();
    /**
     * <pre>
     * IP is set for load-balancer ingress points that are IP based
     * (typically GCE or OpenStack load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The bytes for ip.
     */
    com.google.protobuf.ByteString
        getIpBytes();

    /**
     * <pre>
     * Hostname is set for load-balancer ingress points that are DNS based
     * (typically AWS load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 2;</code>
     * @return Whether the hostname field is set.
     */
    boolean hasHostname();
    /**
     * <pre>
     * Hostname is set for load-balancer ingress points that are DNS based
     * (typically AWS load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 2;</code>
     * @return The hostname.
     */
    java.lang.String getHostname();
    /**
     * <pre>
     * Hostname is set for load-balancer ingress points that are DNS based
     * (typically AWS load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 2;</code>
     * @return The bytes for hostname.
     */
    com.google.protobuf.ByteString
        getHostnameBytes();

    /**
     * <pre>
     * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
     * Setting this to "VIP" indicates that traffic is delivered to the node with
     * the destination set to the load-balancer's IP and port.
     * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
     * the destination set to the node's IP and node port or the pod's IP and port.
     * Service implementations may use this information to adjust traffic routing.
     * +optional
     * </pre>
     *
     * <code>optional string ipMode = 3;</code>
     * @return Whether the ipMode field is set.
     */
    boolean hasIpMode();
    /**
     * <pre>
     * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
     * Setting this to "VIP" indicates that traffic is delivered to the node with
     * the destination set to the load-balancer's IP and port.
     * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
     * the destination set to the node's IP and node port or the pod's IP and port.
     * Service implementations may use this information to adjust traffic routing.
     * +optional
     * </pre>
     *
     * <code>optional string ipMode = 3;</code>
     * @return The ipMode.
     */
    java.lang.String getIpMode();
    /**
     * <pre>
     * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
     * Setting this to "VIP" indicates that traffic is delivered to the node with
     * the destination set to the load-balancer's IP and port.
     * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
     * the destination set to the node's IP and node port or the pod's IP and port.
     * Service implementations may use this information to adjust traffic routing.
     * +optional
     * </pre>
     *
     * <code>optional string ipMode = 3;</code>
     * @return The bytes for ipMode.
     */
    com.google.protobuf.ByteString
        getIpModeBytes();

    /**
     * <pre>
     * Ports is a list of records of service ports
     * If used, every port defined in the service should have an entry in it
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PortStatus> 
        getPortsList();
    /**
     * <pre>
     * Ports is a list of records of service ports
     * If used, every port defined in the service should have an entry in it
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
     */
    io.kubernetes.client.proto.V1.PortStatus getPorts(int index);
    /**
     * <pre>
     * Ports is a list of records of service ports
     * If used, every port defined in the service should have an entry in it
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
     */
    int getPortsCount();
    /**
     * <pre>
     * Ports is a list of records of service ports
     * If used, every port defined in the service should have an entry in it
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PortStatusOrBuilder> 
        getPortsOrBuilderList();
    /**
     * <pre>
     * Ports is a list of records of service ports
     * If used, every port defined in the service should have an entry in it
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
     */
    io.kubernetes.client.proto.V1.PortStatusOrBuilder getPortsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * LoadBalancerIngress represents the status of a load-balancer ingress point:
   * traffic intended for the service should be sent to an ingress point.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.LoadBalancerIngress}
   */
  public static final class LoadBalancerIngress extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.LoadBalancerIngress)
      LoadBalancerIngressOrBuilder {
  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= */ "",
        LoadBalancerIngress.class.getName());
    }
    // Use LoadBalancerIngress.newBuilder() to construct.
    private LoadBalancerIngress(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private LoadBalancerIngress() {
      ip_ = "";
      hostname_ = "";
      ipMode_ = "";
      ports_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LoadBalancerIngress_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LoadBalancerIngress_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.LoadBalancerIngress.class, io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder.class);
    }

    private int bitField0_;
    public static final int IP_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object ip_ = "";
    /**
     * <pre>
     * IP is set for load-balancer ingress points that are IP based
     * (typically GCE or OpenStack load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return Whether the ip field is set.
     */
    @java.lang.Override
    public boolean hasIp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * IP is set for load-balancer ingress points that are IP based
     * (typically GCE or OpenStack load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The ip.
     */
    @java.lang.Override
    public java.lang.String getIp() {
      java.lang.Object ref = ip_;
      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()) {
          ip_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * IP is set for load-balancer ingress points that are IP based
     * (typically GCE or OpenStack load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The bytes for ip.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIpBytes() {
      java.lang.Object ref = ip_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ip_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HOSTNAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object hostname_ = "";
    /**
     * <pre>
     * Hostname is set for load-balancer ingress points that are DNS based
     * (typically AWS load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 2;</code>
     * @return Whether the hostname field is set.
     */
    @java.lang.Override
    public boolean hasHostname() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Hostname is set for load-balancer ingress points that are DNS based
     * (typically AWS load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 2;</code>
     * @return The hostname.
     */
    @java.lang.Override
    public java.lang.String getHostname() {
      java.lang.Object ref = hostname_;
      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()) {
          hostname_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Hostname is set for load-balancer ingress points that are DNS based
     * (typically AWS load-balancers)
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 2;</code>
     * @return The bytes for hostname.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHostnameBytes() {
      java.lang.Object ref = hostname_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hostname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IPMODE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object ipMode_ = "";
    /**
     * <pre>
     * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
     * Setting this to "VIP" indicates that traffic is delivered to the node with
     * the destination set to the load-balancer's IP and port.
     * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
     * the destination set to the node's IP and node port or the pod's IP and port.
     * Service implementations may use this information to adjust traffic routing.
     * +optional
     * </pre>
     *
     * <code>optional string ipMode = 3;</code>
     * @return Whether the ipMode field is set.
     */
    @java.lang.Override
    public boolean hasIpMode() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
     * Setting this to "VIP" indicates that traffic is delivered to the node with
     * the destination set to the load-balancer's IP and port.
     * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
     * the destination set to the node's IP and node port or the pod's IP and port.
     * Service implementations may use this information to adjust traffic routing.
     * +optional
     * </pre>
     *
     * <code>optional string ipMode = 3;</code>
     * @return The ipMode.
     */
    @java.lang.Override
    public java.lang.String getIpMode() {
      java.lang.Object ref = ipMode_;
      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()) {
          ipMode_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
     * Setting this to "VIP" indicates that traffic is delivered to the node with
     * the destination set to the load-balancer's IP and port.
     * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
     * the destination set to the node's IP and node port or the pod's IP and port.
     * Service implementations may use this information to adjust traffic routing.
     * +optional
     * </pre>
     *
     * <code>optional string ipMode = 3;</code>
     * @return The bytes for ipMode.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIpModeBytes() {
      java.lang.Object ref = ipMode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ipMode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PORTS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PortStatus> ports_;
    /**
     * <pre>
     * Ports is a list of records of service ports
     * If used, every port defined in the service should have an entry in it
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PortStatus> getPortsList() {
      return ports_;
    }
    /**
     * <pre>
     * Ports is a list of records of service ports
     * If used, every port defined in the service should have an entry in it
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PortStatusOrBuilder> 
        getPortsOrBuilderList() {
      return ports_;
    }
    /**
     * <pre>
     * Ports is a list of records of service ports
     * If used, every port defined in the service should have an entry in it
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
     */
    @java.lang.Override
    public int getPortsCount() {
      return ports_.size();
    }
    /**
     * <pre>
     * Ports is a list of records of service ports
     * If used, every port defined in the service should have an entry in it
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PortStatus getPorts(int index) {
      return ports_.get(index);
    }
    /**
     * <pre>
     * Ports is a list of records of service ports
     * If used, every port defined in the service should have an entry in it
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PortStatusOrBuilder getPortsOrBuilder(
        int index) {
      return ports_.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, ip_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, hostname_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, ipMode_);
      }
      for (int i = 0; i < ports_.size(); i++) {
        output.writeMessage(4, ports_.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, ip_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, hostname_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, ipMode_);
      }
      for (int i = 0; i < ports_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, ports_.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.V1.LoadBalancerIngress)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.LoadBalancerIngress other = (io.kubernetes.client.proto.V1.LoadBalancerIngress) obj;

      if (hasIp() != other.hasIp()) return false;
      if (hasIp()) {
        if (!getIp()
            .equals(other.getIp())) return false;
      }
      if (hasHostname() != other.hasHostname()) return false;
      if (hasHostname()) {
        if (!getHostname()
            .equals(other.getHostname())) return false;
      }
      if (hasIpMode() != other.hasIpMode()) return false;
      if (hasIpMode()) {
        if (!getIpMode()
            .equals(other.getIpMode())) return false;
      }
      if (!getPortsList()
          .equals(other.getPortsList())) 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 (hasIp()) {
        hash = (37 * hash) + IP_FIELD_NUMBER;
        hash = (53 * hash) + getIp().hashCode();
      }
      if (hasHostname()) {
        hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
        hash = (53 * hash) + getHostname().hashCode();
      }
      if (hasIpMode()) {
        hash = (37 * hash) + IPMODE_FIELD_NUMBER;
        hash = (53 * hash) + getIpMode().hashCode();
      }
      if (getPortsCount() > 0) {
        hash = (37 * hash) + PORTS_FIELD_NUMBER;
        hash = (53 * hash) + getPortsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.LoadBalancerIngress parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerIngress 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.V1.LoadBalancerIngress parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerIngress 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.V1.LoadBalancerIngress parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerIngress parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerIngress parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerIngress 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.V1.LoadBalancerIngress parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.LoadBalancerIngress 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.V1.LoadBalancerIngress parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerIngress 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.V1.LoadBalancerIngress 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>
     * LoadBalancerIngress represents the status of a load-balancer ingress point:
     * traffic intended for the service should be sent to an ingress point.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.LoadBalancerIngress}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.LoadBalancerIngress)
        io.kubernetes.client.proto.V1.LoadBalancerIngressOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LoadBalancerIngress_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LoadBalancerIngress_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.LoadBalancerIngress.class, io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.LoadBalancerIngress.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ip_ = "";
        hostname_ = "";
        ipMode_ = "";
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
        } else {
          ports_ = null;
          portsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LoadBalancerIngress_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LoadBalancerIngress getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.LoadBalancerIngress.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LoadBalancerIngress build() {
        io.kubernetes.client.proto.V1.LoadBalancerIngress result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LoadBalancerIngress buildPartial() {
        io.kubernetes.client.proto.V1.LoadBalancerIngress result = new io.kubernetes.client.proto.V1.LoadBalancerIngress(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.LoadBalancerIngress result) {
        if (portsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            ports_ = java.util.Collections.unmodifiableList(ports_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.ports_ = ports_;
        } else {
          result.ports_ = portsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.LoadBalancerIngress result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ip_ = ip_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.hostname_ = hostname_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.ipMode_ = ipMode_;
          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.V1.LoadBalancerIngress) {
          return mergeFrom((io.kubernetes.client.proto.V1.LoadBalancerIngress)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.LoadBalancerIngress other) {
        if (other == io.kubernetes.client.proto.V1.LoadBalancerIngress.getDefaultInstance()) return this;
        if (other.hasIp()) {
          ip_ = other.ip_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasHostname()) {
          hostname_ = other.hostname_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasIpMode()) {
          ipMode_ = other.ipMode_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (portsBuilder_ == null) {
          if (!other.ports_.isEmpty()) {
            if (ports_.isEmpty()) {
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensurePortsIsMutable();
              ports_.addAll(other.ports_);
            }
            onChanged();
          }
        } else {
          if (!other.ports_.isEmpty()) {
            if (portsBuilder_.isEmpty()) {
              portsBuilder_.dispose();
              portsBuilder_ = null;
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000008);
              portsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPortsFieldBuilder() : null;
            } else {
              portsBuilder_.addAllMessages(other.ports_);
            }
          }
        }
        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: {
                ip_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                hostname_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                ipMode_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                io.kubernetes.client.proto.V1.PortStatus m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PortStatus.parser(),
                        extensionRegistry);
                if (portsBuilder_ == null) {
                  ensurePortsIsMutable();
                  ports_.add(m);
                } else {
                  portsBuilder_.addMessage(m);
                }
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object ip_ = "";
      /**
       * <pre>
       * IP is set for load-balancer ingress points that are IP based
       * (typically GCE or OpenStack load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return Whether the ip field is set.
       */
      public boolean hasIp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * IP is set for load-balancer ingress points that are IP based
       * (typically GCE or OpenStack load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return The ip.
       */
      public java.lang.String getIp() {
        java.lang.Object ref = ip_;
        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()) {
            ip_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * IP is set for load-balancer ingress points that are IP based
       * (typically GCE or OpenStack load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return The bytes for ip.
       */
      public com.google.protobuf.ByteString
          getIpBytes() {
        java.lang.Object ref = ip_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ip_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * IP is set for load-balancer ingress points that are IP based
       * (typically GCE or OpenStack load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @param value The ip to set.
       * @return This builder for chaining.
       */
      public Builder setIp(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ip_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IP is set for load-balancer ingress points that are IP based
       * (typically GCE or OpenStack load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIp() {
        ip_ = getDefaultInstance().getIp();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IP is set for load-balancer ingress points that are IP based
       * (typically GCE or OpenStack load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @param value The bytes for ip to set.
       * @return This builder for chaining.
       */
      public Builder setIpBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ip_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object hostname_ = "";
      /**
       * <pre>
       * Hostname is set for load-balancer ingress points that are DNS based
       * (typically AWS load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 2;</code>
       * @return Whether the hostname field is set.
       */
      public boolean hasHostname() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Hostname is set for load-balancer ingress points that are DNS based
       * (typically AWS load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 2;</code>
       * @return The hostname.
       */
      public java.lang.String getHostname() {
        java.lang.Object ref = hostname_;
        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()) {
            hostname_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Hostname is set for load-balancer ingress points that are DNS based
       * (typically AWS load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 2;</code>
       * @return The bytes for hostname.
       */
      public com.google.protobuf.ByteString
          getHostnameBytes() {
        java.lang.Object ref = hostname_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hostname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Hostname is set for load-balancer ingress points that are DNS based
       * (typically AWS load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 2;</code>
       * @param value The hostname to set.
       * @return This builder for chaining.
       */
      public Builder setHostname(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        hostname_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Hostname is set for load-balancer ingress points that are DNS based
       * (typically AWS load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostname() {
        hostname_ = getDefaultInstance().getHostname();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Hostname is set for load-balancer ingress points that are DNS based
       * (typically AWS load-balancers)
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 2;</code>
       * @param value The bytes for hostname to set.
       * @return This builder for chaining.
       */
      public Builder setHostnameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        hostname_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object ipMode_ = "";
      /**
       * <pre>
       * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
       * Setting this to "VIP" indicates that traffic is delivered to the node with
       * the destination set to the load-balancer's IP and port.
       * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
       * the destination set to the node's IP and node port or the pod's IP and port.
       * Service implementations may use this information to adjust traffic routing.
       * +optional
       * </pre>
       *
       * <code>optional string ipMode = 3;</code>
       * @return Whether the ipMode field is set.
       */
      public boolean hasIpMode() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
       * Setting this to "VIP" indicates that traffic is delivered to the node with
       * the destination set to the load-balancer's IP and port.
       * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
       * the destination set to the node's IP and node port or the pod's IP and port.
       * Service implementations may use this information to adjust traffic routing.
       * +optional
       * </pre>
       *
       * <code>optional string ipMode = 3;</code>
       * @return The ipMode.
       */
      public java.lang.String getIpMode() {
        java.lang.Object ref = ipMode_;
        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()) {
            ipMode_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
       * Setting this to "VIP" indicates that traffic is delivered to the node with
       * the destination set to the load-balancer's IP and port.
       * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
       * the destination set to the node's IP and node port or the pod's IP and port.
       * Service implementations may use this information to adjust traffic routing.
       * +optional
       * </pre>
       *
       * <code>optional string ipMode = 3;</code>
       * @return The bytes for ipMode.
       */
      public com.google.protobuf.ByteString
          getIpModeBytes() {
        java.lang.Object ref = ipMode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ipMode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
       * Setting this to "VIP" indicates that traffic is delivered to the node with
       * the destination set to the load-balancer's IP and port.
       * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
       * the destination set to the node's IP and node port or the pod's IP and port.
       * Service implementations may use this information to adjust traffic routing.
       * +optional
       * </pre>
       *
       * <code>optional string ipMode = 3;</code>
       * @param value The ipMode to set.
       * @return This builder for chaining.
       */
      public Builder setIpMode(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ipMode_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
       * Setting this to "VIP" indicates that traffic is delivered to the node with
       * the destination set to the load-balancer's IP and port.
       * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
       * the destination set to the node's IP and node port or the pod's IP and port.
       * Service implementations may use this information to adjust traffic routing.
       * +optional
       * </pre>
       *
       * <code>optional string ipMode = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearIpMode() {
        ipMode_ = getDefaultInstance().getIpMode();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.
       * Setting this to "VIP" indicates that traffic is delivered to the node with
       * the destination set to the load-balancer's IP and port.
       * Setting this to "Proxy" indicates that traffic is delivered to the node or pod with
       * the destination set to the node's IP and node port or the pod's IP and port.
       * Service implementations may use this information to adjust traffic routing.
       * +optional
       * </pre>
       *
       * <code>optional string ipMode = 3;</code>
       * @param value The bytes for ipMode to set.
       * @return This builder for chaining.
       */
      public Builder setIpModeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ipMode_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.PortStatus> ports_ =
        java.util.Collections.emptyList();
      private void ensurePortsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          ports_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PortStatus>(ports_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PortStatus, io.kubernetes.client.proto.V1.PortStatus.Builder, io.kubernetes.client.proto.V1.PortStatusOrBuilder> portsBuilder_;

      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PortStatus> getPortsList() {
        if (portsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ports_);
        } else {
          return portsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public int getPortsCount() {
        if (portsBuilder_ == null) {
          return ports_.size();
        } else {
          return portsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public io.kubernetes.client.proto.V1.PortStatus getPorts(int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);
        } else {
          return portsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public Builder setPorts(
          int index, io.kubernetes.client.proto.V1.PortStatus value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.set(index, value);
          onChanged();
        } else {
          portsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public Builder setPorts(
          int index, io.kubernetes.client.proto.V1.PortStatus.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.set(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public Builder addPorts(io.kubernetes.client.proto.V1.PortStatus value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(value);
          onChanged();
        } else {
          portsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public Builder addPorts(
          int index, io.kubernetes.client.proto.V1.PortStatus value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(index, value);
          onChanged();
        } else {
          portsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public Builder addPorts(
          io.kubernetes.client.proto.V1.PortStatus.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public Builder addPorts(
          int index, io.kubernetes.client.proto.V1.PortStatus.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public Builder addAllPorts(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PortStatus> values) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ports_);
          onChanged();
        } else {
          portsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public Builder clearPorts() {
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          portsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public Builder removePorts(int index) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.remove(index);
          onChanged();
        } else {
          portsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public io.kubernetes.client.proto.V1.PortStatus.Builder getPortsBuilder(
          int index) {
        return getPortsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public io.kubernetes.client.proto.V1.PortStatusOrBuilder getPortsOrBuilder(
          int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);  } else {
          return portsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PortStatusOrBuilder> 
           getPortsOrBuilderList() {
        if (portsBuilder_ != null) {
          return portsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ports_);
        }
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public io.kubernetes.client.proto.V1.PortStatus.Builder addPortsBuilder() {
        return getPortsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PortStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public io.kubernetes.client.proto.V1.PortStatus.Builder addPortsBuilder(
          int index) {
        return getPortsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PortStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Ports is a list of records of service ports
       * If used, every port defined in the service should have an entry in it
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PortStatus ports = 4;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PortStatus.Builder> 
           getPortsBuilderList() {
        return getPortsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PortStatus, io.kubernetes.client.proto.V1.PortStatus.Builder, io.kubernetes.client.proto.V1.PortStatusOrBuilder> 
          getPortsFieldBuilder() {
        if (portsBuilder_ == null) {
          portsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PortStatus, io.kubernetes.client.proto.V1.PortStatus.Builder, io.kubernetes.client.proto.V1.PortStatusOrBuilder>(
                  ports_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          ports_ = null;
        }
        return portsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.LoadBalancerIngress)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.LoadBalancerIngress)
    private static final io.kubernetes.client.proto.V1.LoadBalancerIngress DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.LoadBalancerIngress();
    }

    public static io.kubernetes.client.proto.V1.LoadBalancerIngress getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LoadBalancerIngress>
        PARSER = new com.google.protobuf.AbstractParser<LoadBalancerIngress>() {
      @java.lang.Override
      public LoadBalancerIngress 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<LoadBalancerIngress> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<LoadBalancerIngress> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.LoadBalancerIngress getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LoadBalancerStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.LoadBalancerStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Ingress is a list containing ingress points for the load-balancer.
     * Traffic intended for the service should be sent to these ingress points.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.LoadBalancerIngress> 
        getIngressList();
    /**
     * <pre>
     * Ingress is a list containing ingress points for the load-balancer.
     * Traffic intended for the service should be sent to these ingress points.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
     */
    io.kubernetes.client.proto.V1.LoadBalancerIngress getIngress(int index);
    /**
     * <pre>
     * Ingress is a list containing ingress points for the load-balancer.
     * Traffic intended for the service should be sent to these ingress points.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
     */
    int getIngressCount();
    /**
     * <pre>
     * Ingress is a list containing ingress points for the load-balancer.
     * Traffic intended for the service should be sent to these ingress points.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.LoadBalancerIngressOrBuilder> 
        getIngressOrBuilderList();
    /**
     * <pre>
     * Ingress is a list containing ingress points for the load-balancer.
     * Traffic intended for the service should be sent to these ingress points.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
     */
    io.kubernetes.client.proto.V1.LoadBalancerIngressOrBuilder getIngressOrBuilder(
        int index);
  }
  /**
   * <pre>
   * LoadBalancerStatus represents the status of a load-balancer.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.LoadBalancerStatus}
   */
  public static final class LoadBalancerStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.LoadBalancerStatus)
      LoadBalancerStatusOrBuilder {
  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= */ "",
        LoadBalancerStatus.class.getName());
    }
    // Use LoadBalancerStatus.newBuilder() to construct.
    private LoadBalancerStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private LoadBalancerStatus() {
      ingress_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LoadBalancerStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LoadBalancerStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.LoadBalancerStatus.class, io.kubernetes.client.proto.V1.LoadBalancerStatus.Builder.class);
    }

    public static final int INGRESS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.LoadBalancerIngress> ingress_;
    /**
     * <pre>
     * Ingress is a list containing ingress points for the load-balancer.
     * Traffic intended for the service should be sent to these ingress points.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.LoadBalancerIngress> getIngressList() {
      return ingress_;
    }
    /**
     * <pre>
     * Ingress is a list containing ingress points for the load-balancer.
     * Traffic intended for the service should be sent to these ingress points.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.LoadBalancerIngressOrBuilder> 
        getIngressOrBuilderList() {
      return ingress_;
    }
    /**
     * <pre>
     * Ingress is a list containing ingress points for the load-balancer.
     * Traffic intended for the service should be sent to these ingress points.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
     */
    @java.lang.Override
    public int getIngressCount() {
      return ingress_.size();
    }
    /**
     * <pre>
     * Ingress is a list containing ingress points for the load-balancer.
     * Traffic intended for the service should be sent to these ingress points.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LoadBalancerIngress getIngress(int index) {
      return ingress_.get(index);
    }
    /**
     * <pre>
     * Ingress is a list containing ingress points for the load-balancer.
     * Traffic intended for the service should be sent to these ingress points.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LoadBalancerIngressOrBuilder getIngressOrBuilder(
        int index) {
      return ingress_.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 {
      for (int i = 0; i < ingress_.size(); i++) {
        output.writeMessage(1, ingress_.get(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 < ingress_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, ingress_.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.V1.LoadBalancerStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.LoadBalancerStatus other = (io.kubernetes.client.proto.V1.LoadBalancerStatus) obj;

      if (!getIngressList()
          .equals(other.getIngressList())) 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 (getIngressCount() > 0) {
        hash = (37 * hash) + INGRESS_FIELD_NUMBER;
        hash = (53 * hash) + getIngressList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.LoadBalancerStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerStatus 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.V1.LoadBalancerStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerStatus 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.V1.LoadBalancerStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerStatus 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.V1.LoadBalancerStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.LoadBalancerStatus 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.V1.LoadBalancerStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LoadBalancerStatus 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.V1.LoadBalancerStatus 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>
     * LoadBalancerStatus represents the status of a load-balancer.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.LoadBalancerStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.LoadBalancerStatus)
        io.kubernetes.client.proto.V1.LoadBalancerStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LoadBalancerStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LoadBalancerStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.LoadBalancerStatus.class, io.kubernetes.client.proto.V1.LoadBalancerStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.LoadBalancerStatus.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (ingressBuilder_ == null) {
          ingress_ = java.util.Collections.emptyList();
        } else {
          ingress_ = null;
          ingressBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LoadBalancerStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LoadBalancerStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.LoadBalancerStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LoadBalancerStatus build() {
        io.kubernetes.client.proto.V1.LoadBalancerStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LoadBalancerStatus buildPartial() {
        io.kubernetes.client.proto.V1.LoadBalancerStatus result = new io.kubernetes.client.proto.V1.LoadBalancerStatus(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.LoadBalancerStatus result) {
        if (ingressBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            ingress_ = java.util.Collections.unmodifiableList(ingress_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.ingress_ = ingress_;
        } else {
          result.ingress_ = ingressBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.LoadBalancerStatus result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.LoadBalancerStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.LoadBalancerStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.LoadBalancerStatus other) {
        if (other == io.kubernetes.client.proto.V1.LoadBalancerStatus.getDefaultInstance()) return this;
        if (ingressBuilder_ == null) {
          if (!other.ingress_.isEmpty()) {
            if (ingress_.isEmpty()) {
              ingress_ = other.ingress_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureIngressIsMutable();
              ingress_.addAll(other.ingress_);
            }
            onChanged();
          }
        } else {
          if (!other.ingress_.isEmpty()) {
            if (ingressBuilder_.isEmpty()) {
              ingressBuilder_.dispose();
              ingressBuilder_ = null;
              ingress_ = other.ingress_;
              bitField0_ = (bitField0_ & ~0x00000001);
              ingressBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getIngressFieldBuilder() : null;
            } else {
              ingressBuilder_.addAllMessages(other.ingress_);
            }
          }
        }
        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.V1.LoadBalancerIngress m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.LoadBalancerIngress.parser(),
                        extensionRegistry);
                if (ingressBuilder_ == null) {
                  ensureIngressIsMutable();
                  ingress_.add(m);
                } else {
                  ingressBuilder_.addMessage(m);
                }
                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.util.List<io.kubernetes.client.proto.V1.LoadBalancerIngress> ingress_ =
        java.util.Collections.emptyList();
      private void ensureIngressIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          ingress_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.LoadBalancerIngress>(ingress_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.LoadBalancerIngress, io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder, io.kubernetes.client.proto.V1.LoadBalancerIngressOrBuilder> ingressBuilder_;

      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.LoadBalancerIngress> getIngressList() {
        if (ingressBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ingress_);
        } else {
          return ingressBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public int getIngressCount() {
        if (ingressBuilder_ == null) {
          return ingress_.size();
        } else {
          return ingressBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LoadBalancerIngress getIngress(int index) {
        if (ingressBuilder_ == null) {
          return ingress_.get(index);
        } else {
          return ingressBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public Builder setIngress(
          int index, io.kubernetes.client.proto.V1.LoadBalancerIngress value) {
        if (ingressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIngressIsMutable();
          ingress_.set(index, value);
          onChanged();
        } else {
          ingressBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public Builder setIngress(
          int index, io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder builderForValue) {
        if (ingressBuilder_ == null) {
          ensureIngressIsMutable();
          ingress_.set(index, builderForValue.build());
          onChanged();
        } else {
          ingressBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public Builder addIngress(io.kubernetes.client.proto.V1.LoadBalancerIngress value) {
        if (ingressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIngressIsMutable();
          ingress_.add(value);
          onChanged();
        } else {
          ingressBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public Builder addIngress(
          int index, io.kubernetes.client.proto.V1.LoadBalancerIngress value) {
        if (ingressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIngressIsMutable();
          ingress_.add(index, value);
          onChanged();
        } else {
          ingressBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public Builder addIngress(
          io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder builderForValue) {
        if (ingressBuilder_ == null) {
          ensureIngressIsMutable();
          ingress_.add(builderForValue.build());
          onChanged();
        } else {
          ingressBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public Builder addIngress(
          int index, io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder builderForValue) {
        if (ingressBuilder_ == null) {
          ensureIngressIsMutable();
          ingress_.add(index, builderForValue.build());
          onChanged();
        } else {
          ingressBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public Builder addAllIngress(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.LoadBalancerIngress> values) {
        if (ingressBuilder_ == null) {
          ensureIngressIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ingress_);
          onChanged();
        } else {
          ingressBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public Builder clearIngress() {
        if (ingressBuilder_ == null) {
          ingress_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          ingressBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public Builder removeIngress(int index) {
        if (ingressBuilder_ == null) {
          ensureIngressIsMutable();
          ingress_.remove(index);
          onChanged();
        } else {
          ingressBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder getIngressBuilder(
          int index) {
        return getIngressFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LoadBalancerIngressOrBuilder getIngressOrBuilder(
          int index) {
        if (ingressBuilder_ == null) {
          return ingress_.get(index);  } else {
          return ingressBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.LoadBalancerIngressOrBuilder> 
           getIngressOrBuilderList() {
        if (ingressBuilder_ != null) {
          return ingressBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ingress_);
        }
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder addIngressBuilder() {
        return getIngressFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.LoadBalancerIngress.getDefaultInstance());
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder addIngressBuilder(
          int index) {
        return getIngressFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.LoadBalancerIngress.getDefaultInstance());
      }
      /**
       * <pre>
       * Ingress is a list containing ingress points for the load-balancer.
       * Traffic intended for the service should be sent to these ingress points.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder> 
           getIngressBuilderList() {
        return getIngressFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.LoadBalancerIngress, io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder, io.kubernetes.client.proto.V1.LoadBalancerIngressOrBuilder> 
          getIngressFieldBuilder() {
        if (ingressBuilder_ == null) {
          ingressBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.LoadBalancerIngress, io.kubernetes.client.proto.V1.LoadBalancerIngress.Builder, io.kubernetes.client.proto.V1.LoadBalancerIngressOrBuilder>(
                  ingress_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          ingress_ = null;
        }
        return ingressBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.LoadBalancerStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.LoadBalancerStatus)
    private static final io.kubernetes.client.proto.V1.LoadBalancerStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.LoadBalancerStatus();
    }

    public static io.kubernetes.client.proto.V1.LoadBalancerStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LoadBalancerStatus>
        PARSER = new com.google.protobuf.AbstractParser<LoadBalancerStatus>() {
      @java.lang.Override
      public LoadBalancerStatus 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<LoadBalancerStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<LoadBalancerStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.LoadBalancerStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LocalObjectReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.LocalObjectReference)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * TODO: Add other useful fields. apiVersion, kind, uid?
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * TODO: Add other useful fields. apiVersion, kind, uid?
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * TODO: Add other useful fields. apiVersion, kind, uid?
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   * LocalObjectReference contains enough information to let you locate the
   * referenced object inside the same namespace.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.LocalObjectReference}
   */
  public static final class LocalObjectReference extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.LocalObjectReference)
      LocalObjectReferenceOrBuilder {
  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= */ "",
        LocalObjectReference.class.getName());
    }
    // Use LocalObjectReference.newBuilder() to construct.
    private LocalObjectReference(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private LocalObjectReference() {
      name_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LocalObjectReference_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LocalObjectReference_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.LocalObjectReference.class, io.kubernetes.client.proto.V1.LocalObjectReference.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * TODO: Add other useful fields. apiVersion, kind, uid?
     * +optional
     * </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 of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * TODO: Add other useful fields. apiVersion, kind, uid?
     * +optional
     * </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 of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * TODO: Add other useful fields. apiVersion, kind, uid?
     * +optional
     * </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;
      }
    }

    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_);
      }
      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_);
      }
      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.V1.LocalObjectReference)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.LocalObjectReference other = (io.kubernetes.client.proto.V1.LocalObjectReference) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) 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();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.LocalObjectReference parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LocalObjectReference 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.V1.LocalObjectReference parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LocalObjectReference 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.V1.LocalObjectReference parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LocalObjectReference parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.LocalObjectReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LocalObjectReference 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.V1.LocalObjectReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.LocalObjectReference 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.V1.LocalObjectReference parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LocalObjectReference 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.V1.LocalObjectReference 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>
     * LocalObjectReference contains enough information to let you locate the
     * referenced object inside the same namespace.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.LocalObjectReference}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.LocalObjectReference)
        io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LocalObjectReference_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LocalObjectReference_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.LocalObjectReference.class, io.kubernetes.client.proto.V1.LocalObjectReference.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.LocalObjectReference.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LocalObjectReference_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LocalObjectReference getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LocalObjectReference build() {
        io.kubernetes.client.proto.V1.LocalObjectReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LocalObjectReference buildPartial() {
        io.kubernetes.client.proto.V1.LocalObjectReference result = new io.kubernetes.client.proto.V1.LocalObjectReference(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.LocalObjectReference result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          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.V1.LocalObjectReference) {
          return mergeFrom((io.kubernetes.client.proto.V1.LocalObjectReference)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.LocalObjectReference other) {
        if (other == io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          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: {
                name_ = 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 name_ = "";
      /**
       * <pre>
       * Name of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * TODO: Add other useful fields. apiVersion, kind, uid?
       * +optional
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * TODO: Add other useful fields. apiVersion, kind, uid?
       * +optional
       * </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 of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * TODO: Add other useful fields. apiVersion, kind, uid?
       * +optional
       * </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 of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * TODO: Add other useful fields. apiVersion, kind, uid?
       * +optional
       * </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 of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * TODO: Add other useful fields. apiVersion, kind, uid?
       * +optional
       * </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 of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * TODO: Add other useful fields. apiVersion, kind, uid?
       * +optional
       * </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;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.LocalObjectReference)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.LocalObjectReference)
    private static final io.kubernetes.client.proto.V1.LocalObjectReference DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.LocalObjectReference();
    }

    public static io.kubernetes.client.proto.V1.LocalObjectReference getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LocalObjectReference>
        PARSER = new com.google.protobuf.AbstractParser<LocalObjectReference>() {
      @java.lang.Override
      public LocalObjectReference 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<LocalObjectReference> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<LocalObjectReference> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LocalVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.LocalVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * path of the full path to the volume on the node.
     * It can be either a directory or block device (disk, partition, ...).
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * path of the full path to the volume on the node.
     * It can be either a directory or block device (disk, partition, ...).
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path of the full path to the volume on the node.
     * It can be either a directory or block device (disk, partition, ...).
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * It applies only when the Path is a block device.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * It applies only when the Path is a block device.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * It applies only when the Path is a block device.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();
  }
  /**
   * <pre>
   * Local represents directly-attached storage with node affinity (Beta feature)
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.LocalVolumeSource}
   */
  public static final class LocalVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.LocalVolumeSource)
      LocalVolumeSourceOrBuilder {
  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= */ "",
        LocalVolumeSource.class.getName());
    }
    // Use LocalVolumeSource.newBuilder() to construct.
    private LocalVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private LocalVolumeSource() {
      path_ = "";
      fsType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LocalVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LocalVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.LocalVolumeSource.class, io.kubernetes.client.proto.V1.LocalVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * path of the full path to the volume on the node.
     * It can be either a directory or block device (disk, partition, ...).
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * path of the full path to the volume on the node.
     * It can be either a directory or block device (disk, partition, ...).
     * </pre>
     *
     * <code>optional string path = 1;</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 of the full path to the volume on the node.
     * It can be either a directory or block device (disk, partition, ...).
     * </pre>
     *
     * <code>optional string path = 1;</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 FSTYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * It applies only when the Path is a block device.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * It applies only when the Path is a block device.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * It applies only when the Path is a block device.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = 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, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fsType_);
      }
      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, path_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fsType_);
      }
      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.V1.LocalVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.LocalVolumeSource other = (io.kubernetes.client.proto.V1.LocalVolumeSource) obj;

      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) 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 (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.LocalVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LocalVolumeSource 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.V1.LocalVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LocalVolumeSource 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.V1.LocalVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.LocalVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.LocalVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LocalVolumeSource 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.V1.LocalVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.LocalVolumeSource 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.V1.LocalVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.LocalVolumeSource 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.V1.LocalVolumeSource 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>
     * Local represents directly-attached storage with node affinity (Beta feature)
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.LocalVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.LocalVolumeSource)
        io.kubernetes.client.proto.V1.LocalVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LocalVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LocalVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.LocalVolumeSource.class, io.kubernetes.client.proto.V1.LocalVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.LocalVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        fsType_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_LocalVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LocalVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.LocalVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LocalVolumeSource build() {
        io.kubernetes.client.proto.V1.LocalVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.LocalVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.LocalVolumeSource result = new io.kubernetes.client.proto.V1.LocalVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.LocalVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fsType_ = fsType_;
          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.V1.LocalVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.LocalVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.LocalVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.LocalVolumeSource.getDefaultInstance()) return this;
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fsType_ = 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 path_ = "";
      /**
       * <pre>
       * path of the full path to the volume on the node.
       * It can be either a directory or block device (disk, partition, ...).
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * path of the full path to the volume on the node.
       * It can be either a directory or block device (disk, partition, ...).
       * </pre>
       *
       * <code>optional string path = 1;</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 of the full path to the volume on the node.
       * It can be either a directory or block device (disk, partition, ...).
       * </pre>
       *
       * <code>optional string path = 1;</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 of the full path to the volume on the node.
       * It can be either a directory or block device (disk, partition, ...).
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of the full path to the volume on the node.
       * It can be either a directory or block device (disk, partition, ...).
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of the full path to the volume on the node.
       * It can be either a directory or block device (disk, partition, ...).
       * </pre>
       *
       * <code>optional string path = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * It applies only when the Path is a block device.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * It applies only when the Path is a block device.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * It applies only when the Path is a block device.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * It applies only when the Path is a block device.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * It applies only when the Path is a block device.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * It applies only when the Path is a block device.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a filesystem if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.LocalVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.LocalVolumeSource)
    private static final io.kubernetes.client.proto.V1.LocalVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.LocalVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.LocalVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<LocalVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<LocalVolumeSource>() {
      @java.lang.Override
      public LocalVolumeSource 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<LocalVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<LocalVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModifyVolumeStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ModifyVolumeStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
     * </pre>
     *
     * <code>optional string targetVolumeAttributesClassName = 1;</code>
     * @return Whether the targetVolumeAttributesClassName field is set.
     */
    boolean hasTargetVolumeAttributesClassName();
    /**
     * <pre>
     * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
     * </pre>
     *
     * <code>optional string targetVolumeAttributesClassName = 1;</code>
     * @return The targetVolumeAttributesClassName.
     */
    java.lang.String getTargetVolumeAttributesClassName();
    /**
     * <pre>
     * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
     * </pre>
     *
     * <code>optional string targetVolumeAttributesClassName = 1;</code>
     * @return The bytes for targetVolumeAttributesClassName.
     */
    com.google.protobuf.ByteString
        getTargetVolumeAttributesClassNameBytes();

    /**
     * <pre>
     * status is the status of the ControllerModifyVolume operation. It can be in any of following states:
     * - Pending
     * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
     * the specified VolumeAttributesClass not existing.
     * - InProgress
     * InProgress indicates that the volume is being modified.
     * - Infeasible
     * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
     * resolve the error, a valid VolumeAttributesClass needs to be specified.
     * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * status is the status of the ControllerModifyVolume operation. It can be in any of following states:
     * - Pending
     * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
     * the specified VolumeAttributesClass not existing.
     * - InProgress
     * InProgress indicates that the volume is being modified.
     * - Infeasible
     * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
     * resolve the error, a valid VolumeAttributesClass needs to be specified.
     * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The status.
     */
    java.lang.String getStatus();
    /**
     * <pre>
     * status is the status of the ControllerModifyVolume operation. It can be in any of following states:
     * - Pending
     * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
     * the specified VolumeAttributesClass not existing.
     * - InProgress
     * InProgress indicates that the volume is being modified.
     * - Infeasible
     * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
     * resolve the error, a valid VolumeAttributesClass needs to be specified.
     * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The bytes for status.
     */
    com.google.protobuf.ByteString
        getStatusBytes();
  }
  /**
   * <pre>
   * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ModifyVolumeStatus}
   */
  public static final class ModifyVolumeStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ModifyVolumeStatus)
      ModifyVolumeStatusOrBuilder {
  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= */ "",
        ModifyVolumeStatus.class.getName());
    }
    // Use ModifyVolumeStatus.newBuilder() to construct.
    private ModifyVolumeStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ModifyVolumeStatus() {
      targetVolumeAttributesClassName_ = "";
      status_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ModifyVolumeStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ModifyVolumeStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ModifyVolumeStatus.class, io.kubernetes.client.proto.V1.ModifyVolumeStatus.Builder.class);
    }

    private int bitField0_;
    public static final int TARGETVOLUMEATTRIBUTESCLASSNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object targetVolumeAttributesClassName_ = "";
    /**
     * <pre>
     * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
     * </pre>
     *
     * <code>optional string targetVolumeAttributesClassName = 1;</code>
     * @return Whether the targetVolumeAttributesClassName field is set.
     */
    @java.lang.Override
    public boolean hasTargetVolumeAttributesClassName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
     * </pre>
     *
     * <code>optional string targetVolumeAttributesClassName = 1;</code>
     * @return The targetVolumeAttributesClassName.
     */
    @java.lang.Override
    public java.lang.String getTargetVolumeAttributesClassName() {
      java.lang.Object ref = targetVolumeAttributesClassName_;
      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()) {
          targetVolumeAttributesClassName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
     * </pre>
     *
     * <code>optional string targetVolumeAttributesClassName = 1;</code>
     * @return The bytes for targetVolumeAttributesClassName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTargetVolumeAttributesClassNameBytes() {
      java.lang.Object ref = targetVolumeAttributesClassName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetVolumeAttributesClassName_ = 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 ControllerModifyVolume operation. It can be in any of following states:
     * - Pending
     * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
     * the specified VolumeAttributesClass not existing.
     * - InProgress
     * InProgress indicates that the volume is being modified.
     * - Infeasible
     * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
     * resolve the error, a valid VolumeAttributesClass needs to be specified.
     * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
     * </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 ControllerModifyVolume operation. It can be in any of following states:
     * - Pending
     * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
     * the specified VolumeAttributesClass not existing.
     * - InProgress
     * InProgress indicates that the volume is being modified.
     * - Infeasible
     * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
     * resolve the error, a valid VolumeAttributesClass needs to be specified.
     * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
     * </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 ControllerModifyVolume operation. It can be in any of following states:
     * - Pending
     * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
     * the specified VolumeAttributesClass not existing.
     * - InProgress
     * InProgress indicates that the volume is being modified.
     * - Infeasible
     * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
     * resolve the error, a valid VolumeAttributesClass needs to be specified.
     * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
     * </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;
      }
    }

    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, targetVolumeAttributesClassName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, status_);
      }
      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, targetVolumeAttributesClassName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, status_);
      }
      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.V1.ModifyVolumeStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ModifyVolumeStatus other = (io.kubernetes.client.proto.V1.ModifyVolumeStatus) obj;

      if (hasTargetVolumeAttributesClassName() != other.hasTargetVolumeAttributesClassName()) return false;
      if (hasTargetVolumeAttributesClassName()) {
        if (!getTargetVolumeAttributesClassName()
            .equals(other.getTargetVolumeAttributesClassName())) 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 (hasTargetVolumeAttributesClassName()) {
        hash = (37 * hash) + TARGETVOLUMEATTRIBUTESCLASSNAME_FIELD_NUMBER;
        hash = (53 * hash) + getTargetVolumeAttributesClassName().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.V1.ModifyVolumeStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ModifyVolumeStatus 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.V1.ModifyVolumeStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ModifyVolumeStatus 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.V1.ModifyVolumeStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ModifyVolumeStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ModifyVolumeStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ModifyVolumeStatus 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.V1.ModifyVolumeStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ModifyVolumeStatus 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.V1.ModifyVolumeStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ModifyVolumeStatus 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.V1.ModifyVolumeStatus 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>
     * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ModifyVolumeStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ModifyVolumeStatus)
        io.kubernetes.client.proto.V1.ModifyVolumeStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ModifyVolumeStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ModifyVolumeStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ModifyVolumeStatus.class, io.kubernetes.client.proto.V1.ModifyVolumeStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ModifyVolumeStatus.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        targetVolumeAttributesClassName_ = "";
        status_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ModifyVolumeStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ModifyVolumeStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ModifyVolumeStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ModifyVolumeStatus build() {
        io.kubernetes.client.proto.V1.ModifyVolumeStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ModifyVolumeStatus buildPartial() {
        io.kubernetes.client.proto.V1.ModifyVolumeStatus result = new io.kubernetes.client.proto.V1.ModifyVolumeStatus(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ModifyVolumeStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.targetVolumeAttributesClassName_ = targetVolumeAttributesClassName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.status_ = status_;
          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.V1.ModifyVolumeStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.ModifyVolumeStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ModifyVolumeStatus other) {
        if (other == io.kubernetes.client.proto.V1.ModifyVolumeStatus.getDefaultInstance()) return this;
        if (other.hasTargetVolumeAttributesClassName()) {
          targetVolumeAttributesClassName_ = other.targetVolumeAttributesClassName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasStatus()) {
          status_ = other.status_;
          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: {
                targetVolumeAttributesClassName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                status_ = 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 targetVolumeAttributesClassName_ = "";
      /**
       * <pre>
       * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
       * </pre>
       *
       * <code>optional string targetVolumeAttributesClassName = 1;</code>
       * @return Whether the targetVolumeAttributesClassName field is set.
       */
      public boolean hasTargetVolumeAttributesClassName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
       * </pre>
       *
       * <code>optional string targetVolumeAttributesClassName = 1;</code>
       * @return The targetVolumeAttributesClassName.
       */
      public java.lang.String getTargetVolumeAttributesClassName() {
        java.lang.Object ref = targetVolumeAttributesClassName_;
        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()) {
            targetVolumeAttributesClassName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
       * </pre>
       *
       * <code>optional string targetVolumeAttributesClassName = 1;</code>
       * @return The bytes for targetVolumeAttributesClassName.
       */
      public com.google.protobuf.ByteString
          getTargetVolumeAttributesClassNameBytes() {
        java.lang.Object ref = targetVolumeAttributesClassName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetVolumeAttributesClassName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
       * </pre>
       *
       * <code>optional string targetVolumeAttributesClassName = 1;</code>
       * @param value The targetVolumeAttributesClassName to set.
       * @return This builder for chaining.
       */
      public Builder setTargetVolumeAttributesClassName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        targetVolumeAttributesClassName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
       * </pre>
       *
       * <code>optional string targetVolumeAttributesClassName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetVolumeAttributesClassName() {
        targetVolumeAttributesClassName_ = getDefaultInstance().getTargetVolumeAttributesClassName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled
       * </pre>
       *
       * <code>optional string targetVolumeAttributesClassName = 1;</code>
       * @param value The bytes for targetVolumeAttributesClassName to set.
       * @return This builder for chaining.
       */
      public Builder setTargetVolumeAttributesClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        targetVolumeAttributesClassName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object status_ = "";
      /**
       * <pre>
       * status is the status of the ControllerModifyVolume operation. It can be in any of following states:
       * - Pending
       * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
       * the specified VolumeAttributesClass not existing.
       * - InProgress
       * InProgress indicates that the volume is being modified.
       * - Infeasible
       * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
       * resolve the error, a valid VolumeAttributesClass needs to be specified.
       * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
       * </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 ControllerModifyVolume operation. It can be in any of following states:
       * - Pending
       * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
       * the specified VolumeAttributesClass not existing.
       * - InProgress
       * InProgress indicates that the volume is being modified.
       * - Infeasible
       * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
       * resolve the error, a valid VolumeAttributesClass needs to be specified.
       * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
       * </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 ControllerModifyVolume operation. It can be in any of following states:
       * - Pending
       * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
       * the specified VolumeAttributesClass not existing.
       * - InProgress
       * InProgress indicates that the volume is being modified.
       * - Infeasible
       * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
       * resolve the error, a valid VolumeAttributesClass needs to be specified.
       * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
       * </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 ControllerModifyVolume operation. It can be in any of following states:
       * - Pending
       * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
       * the specified VolumeAttributesClass not existing.
       * - InProgress
       * InProgress indicates that the volume is being modified.
       * - Infeasible
       * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
       * resolve the error, a valid VolumeAttributesClass needs to be specified.
       * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
       * </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 ControllerModifyVolume operation. It can be in any of following states:
       * - Pending
       * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
       * the specified VolumeAttributesClass not existing.
       * - InProgress
       * InProgress indicates that the volume is being modified.
       * - Infeasible
       * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
       * resolve the error, a valid VolumeAttributesClass needs to be specified.
       * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
       * </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 ControllerModifyVolume operation. It can be in any of following states:
       * - Pending
       * Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as
       * the specified VolumeAttributesClass not existing.
       * - InProgress
       * InProgress indicates that the volume is being modified.
       * - Infeasible
       * Infeasible indicates that the request has been rejected as invalid by the CSI driver. To
       * resolve the error, a valid VolumeAttributesClass needs to be specified.
       * Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.
       * </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;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ModifyVolumeStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ModifyVolumeStatus)
    private static final io.kubernetes.client.proto.V1.ModifyVolumeStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ModifyVolumeStatus();
    }

    public static io.kubernetes.client.proto.V1.ModifyVolumeStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModifyVolumeStatus>
        PARSER = new com.google.protobuf.AbstractParser<ModifyVolumeStatus>() {
      @java.lang.Override
      public ModifyVolumeStatus 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<ModifyVolumeStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ModifyVolumeStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ModifyVolumeStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NFSVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NFSVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * server is the hostname or IP address of the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string server = 1;</code>
     * @return Whether the server field is set.
     */
    boolean hasServer();
    /**
     * <pre>
     * server is the hostname or IP address of the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string server = 1;</code>
     * @return The server.
     */
    java.lang.String getServer();
    /**
     * <pre>
     * server is the hostname or IP address of the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string server = 1;</code>
     * @return The bytes for server.
     */
    com.google.protobuf.ByteString
        getServerBytes();

    /**
     * <pre>
     * path that is exported by the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * path that is exported by the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path that is exported by the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * readOnly here will force the NFS export to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly here will force the NFS export to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * Represents an NFS mount that lasts the lifetime of a pod.
   * NFS volumes do not support ownership management or SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NFSVolumeSource}
   */
  public static final class NFSVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NFSVolumeSource)
      NFSVolumeSourceOrBuilder {
  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= */ "",
        NFSVolumeSource.class.getName());
    }
    // Use NFSVolumeSource.newBuilder() to construct.
    private NFSVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NFSVolumeSource() {
      server_ = "";
      path_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NFSVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NFSVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NFSVolumeSource.class, io.kubernetes.client.proto.V1.NFSVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int SERVER_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object server_ = "";
    /**
     * <pre>
     * server is the hostname or IP address of the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string server = 1;</code>
     * @return Whether the server field is set.
     */
    @java.lang.Override
    public boolean hasServer() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * server is the hostname or IP address of the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string server = 1;</code>
     * @return The server.
     */
    @java.lang.Override
    public java.lang.String getServer() {
      java.lang.Object ref = server_;
      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()) {
          server_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * server is the hostname or IP address of the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string server = 1;</code>
     * @return The bytes for server.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getServerBytes() {
      java.lang.Object ref = server_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        server_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * path that is exported by the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string path = 2;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * path that is exported by the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string path = 2;</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 that is exported by the NFS server.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * </pre>
     *
     * <code>optional string path = 2;</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 READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly here will force the NFS export to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly here will force the NFS export to be mounted with read-only permissions.
     * Defaults to false.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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, server_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, path_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      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, server_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, path_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      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.V1.NFSVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NFSVolumeSource other = (io.kubernetes.client.proto.V1.NFSVolumeSource) obj;

      if (hasServer() != other.hasServer()) return false;
      if (hasServer()) {
        if (!getServer()
            .equals(other.getServer())) return false;
      }
      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (hasServer()) {
        hash = (37 * hash) + SERVER_FIELD_NUMBER;
        hash = (53 * hash) + getServer().hashCode();
      }
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NFSVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NFSVolumeSource 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.V1.NFSVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NFSVolumeSource 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.V1.NFSVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NFSVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NFSVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NFSVolumeSource 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.V1.NFSVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NFSVolumeSource 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.V1.NFSVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NFSVolumeSource 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.V1.NFSVolumeSource 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>
     * Represents an NFS mount that lasts the lifetime of a pod.
     * NFS volumes do not support ownership management or SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NFSVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NFSVolumeSource)
        io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NFSVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NFSVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NFSVolumeSource.class, io.kubernetes.client.proto.V1.NFSVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NFSVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        server_ = "";
        path_ = "";
        readOnly_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NFSVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NFSVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NFSVolumeSource build() {
        io.kubernetes.client.proto.V1.NFSVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NFSVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.NFSVolumeSource result = new io.kubernetes.client.proto.V1.NFSVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NFSVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.server_ = server_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.NFSVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.NFSVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NFSVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance()) return this;
        if (other.hasServer()) {
          server_ = other.server_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        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: {
                server_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object server_ = "";
      /**
       * <pre>
       * server is the hostname or IP address of the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string server = 1;</code>
       * @return Whether the server field is set.
       */
      public boolean hasServer() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * server is the hostname or IP address of the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string server = 1;</code>
       * @return The server.
       */
      public java.lang.String getServer() {
        java.lang.Object ref = server_;
        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()) {
            server_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * server is the hostname or IP address of the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string server = 1;</code>
       * @return The bytes for server.
       */
      public com.google.protobuf.ByteString
          getServerBytes() {
        java.lang.Object ref = server_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          server_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * server is the hostname or IP address of the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string server = 1;</code>
       * @param value The server to set.
       * @return This builder for chaining.
       */
      public Builder setServer(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        server_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * server is the hostname or IP address of the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string server = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearServer() {
        server_ = getDefaultInstance().getServer();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * server is the hostname or IP address of the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string server = 1;</code>
       * @param value The bytes for server to set.
       * @return This builder for chaining.
       */
      public Builder setServerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        server_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * path that is exported by the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * path that is exported by the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string path = 2;</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 that is exported by the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string path = 2;</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 that is exported by the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path that is exported by the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string path = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path that is exported by the NFS server.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * </pre>
       *
       * <code>optional string path = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly here will force the NFS export to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * readOnly here will force the NFS export to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly here will force the NFS export to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly here will force the NFS export to be mounted with read-only permissions.
       * Defaults to false.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NFSVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NFSVolumeSource)
    private static final io.kubernetes.client.proto.V1.NFSVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NFSVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.NFSVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NFSVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<NFSVolumeSource>() {
      @java.lang.Override
      public NFSVolumeSource 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<NFSVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NFSVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NFSVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NamespaceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Namespace)
      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 defines the behavior of the Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * Spec defines the behavior of the Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.NamespaceSpec getSpec();
    /**
     * <pre>
     * Spec defines the behavior of the Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.NamespaceSpecOrBuilder getSpecOrBuilder();

    /**
     * <pre>
     * Status describes the current status of a Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Status describes the current status of a Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1.NamespaceStatus getStatus();
    /**
     * <pre>
     * Status describes the current status of a Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V1.NamespaceStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * Namespace provides a scope for Names.
   * Use of multiple namespaces is optional.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Namespace}
   */
  public static final class Namespace extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Namespace)
      NamespaceOrBuilder {
  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= */ "",
        Namespace.class.getName());
    }
    // Use Namespace.newBuilder() to construct.
    private Namespace(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Namespace() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Namespace_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Namespace_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Namespace.class, io.kubernetes.client.proto.V1.Namespace.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.V1.NamespaceSpec spec_;
    /**
     * <pre>
     * Spec defines the behavior of the Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Spec defines the behavior of the Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.NamespaceSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * Spec defines the behavior of the Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.NamespaceSpec.getDefaultInstance() : spec_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.NamespaceStatus status_;
    /**
     * <pre>
     * Status describes the current status of a Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Status describes the current status of a Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1.NamespaceStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * Status describes the current status of a Namespace.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1.NamespaceStatus.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.V1.Namespace)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Namespace other = (io.kubernetes.client.proto.V1.Namespace) 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.V1.Namespace parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Namespace 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.V1.Namespace parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Namespace 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.V1.Namespace parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Namespace parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Namespace parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Namespace 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.V1.Namespace parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Namespace 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.V1.Namespace parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Namespace 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.V1.Namespace 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>
     * Namespace provides a scope for Names.
     * Use of multiple namespaces is optional.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Namespace}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Namespace)
        io.kubernetes.client.proto.V1.NamespaceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Namespace_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Namespace_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Namespace.class, io.kubernetes.client.proto.V1.Namespace.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Namespace.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.V1.internal_static_k8s_io_api_core_v1_Namespace_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Namespace getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Namespace.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Namespace build() {
        io.kubernetes.client.proto.V1.Namespace result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Namespace buildPartial() {
        io.kubernetes.client.proto.V1.Namespace result = new io.kubernetes.client.proto.V1.Namespace(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Namespace 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.V1.Namespace) {
          return mergeFrom((io.kubernetes.client.proto.V1.Namespace)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Namespace other) {
        if (other == io.kubernetes.client.proto.V1.Namespace.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.V1.NamespaceSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NamespaceSpec, io.kubernetes.client.proto.V1.NamespaceSpec.Builder, io.kubernetes.client.proto.V1.NamespaceSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * Spec defines the behavior of the Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Spec defines the behavior of the Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.NamespaceSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.NamespaceSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Spec defines the behavior of the Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.NamespaceSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of the Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.NamespaceSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of the Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.NamespaceSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.NamespaceSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of the Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of the Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NamespaceSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Spec defines the behavior of the Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NamespaceSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.NamespaceSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * Spec defines the behavior of the Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NamespaceSpec, io.kubernetes.client.proto.V1.NamespaceSpec.Builder, io.kubernetes.client.proto.V1.NamespaceSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NamespaceSpec, io.kubernetes.client.proto.V1.NamespaceSpec.Builder, io.kubernetes.client.proto.V1.NamespaceSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      private io.kubernetes.client.proto.V1.NamespaceStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NamespaceStatus, io.kubernetes.client.proto.V1.NamespaceStatus.Builder, io.kubernetes.client.proto.V1.NamespaceStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * Status describes the current status of a Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Status describes the current status of a Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1.NamespaceStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1.NamespaceStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Status describes the current status of a Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1.NamespaceStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status describes the current status of a Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1.NamespaceStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status describes the current status of a Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1.NamespaceStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1.NamespaceStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Status describes the current status of a Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status describes the current status of a Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.NamespaceStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Status describes the current status of a Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.NamespaceStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1.NamespaceStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * Status describes the current status of a Namespace.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NamespaceStatus status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NamespaceStatus, io.kubernetes.client.proto.V1.NamespaceStatus.Builder, io.kubernetes.client.proto.V1.NamespaceStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NamespaceStatus, io.kubernetes.client.proto.V1.NamespaceStatus.Builder, io.kubernetes.client.proto.V1.NamespaceStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Namespace)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Namespace)
    private static final io.kubernetes.client.proto.V1.Namespace DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Namespace();
    }

    public static io.kubernetes.client.proto.V1.Namespace getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Namespace>
        PARSER = new com.google.protobuf.AbstractParser<Namespace>() {
      @java.lang.Override
      public Namespace 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<Namespace> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Namespace> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Namespace getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NamespaceConditionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NamespaceCondition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Type of namespace controller condition.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * Type of namespace controller condition.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * Type of namespace controller condition.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * Status of the condition, one of True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Status of the condition, one of True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The status.
     */
    java.lang.String getStatus();
    /**
     * <pre>
     * Status of the condition, one of True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The bytes for status.
     */
    com.google.protobuf.ByteString
        getStatusBytes();

    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return Whether the lastTransitionTime field is set.
     */
    boolean hasLastTransitionTime();
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return The lastTransitionTime.
     */
    io.kubernetes.client.proto.Meta.Time getLastTransitionTime();
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastTransitionTimeOrBuilder();

    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * <pre>
   * NamespaceCondition contains details about state of namespace.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NamespaceCondition}
   */
  public static final class NamespaceCondition extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NamespaceCondition)
      NamespaceConditionOrBuilder {
  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= */ "",
        NamespaceCondition.class.getName());
    }
    // Use NamespaceCondition.newBuilder() to construct.
    private NamespaceCondition(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NamespaceCondition() {
      type_ = "";
      status_ = "";
      reason_ = "";
      message_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceCondition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceCondition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NamespaceCondition.class, io.kubernetes.client.proto.V1.NamespaceCondition.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * Type of namespace controller condition.
     * </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 of namespace controller condition.
     * </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 of namespace controller condition.
     * </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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 = 4;
    private io.kubernetes.client.proto.Meta.Time lastTransitionTime_;
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return Whether the lastTransitionTime field is set.
     */
    @java.lang.Override
    public boolean hasLastTransitionTime() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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 = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</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>
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</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 = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</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>
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</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(4, getLastTransitionTime());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, reason_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, 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(4, getLastTransitionTime());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, reason_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, 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.V1.NamespaceCondition)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NamespaceCondition other = (io.kubernetes.client.proto.V1.NamespaceCondition) 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.V1.NamespaceCondition parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceCondition 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.V1.NamespaceCondition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceCondition 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.V1.NamespaceCondition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceCondition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NamespaceCondition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NamespaceCondition 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.V1.NamespaceCondition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NamespaceCondition 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.V1.NamespaceCondition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NamespaceCondition 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.V1.NamespaceCondition 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>
     * NamespaceCondition contains details about state of namespace.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NamespaceCondition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NamespaceCondition)
        io.kubernetes.client.proto.V1.NamespaceConditionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceCondition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceCondition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NamespaceCondition.class, io.kubernetes.client.proto.V1.NamespaceCondition.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NamespaceCondition.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.V1.internal_static_k8s_io_api_core_v1_NamespaceCondition_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceCondition getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NamespaceCondition.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceCondition build() {
        io.kubernetes.client.proto.V1.NamespaceCondition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceCondition buildPartial() {
        io.kubernetes.client.proto.V1.NamespaceCondition result = new io.kubernetes.client.proto.V1.NamespaceCondition(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NamespaceCondition 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.V1.NamespaceCondition) {
          return mergeFrom((io.kubernetes.client.proto.V1.NamespaceCondition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NamespaceCondition other) {
        if (other == io.kubernetes.client.proto.V1.NamespaceCondition.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 34: {
                input.readMessage(
                    getLastTransitionTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 34
              case 42: {
                reason_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 42
              case 50: {
                message_ = input.readBytes();
                bitField0_ |= 0x00000010;
                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 type_ = "";
      /**
       * <pre>
       * Type of namespace controller condition.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Type of namespace controller condition.
       * </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 of namespace controller condition.
       * </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 of namespace controller condition.
       * </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 of namespace controller condition.
       * </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 of namespace controller condition.
       * </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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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>
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       * @return Whether the lastTransitionTime field is set.
       */
      public boolean hasLastTransitionTime() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public Builder clearLastTransitionTime() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lastTransitionTime_ = null;
        if (lastTransitionTimeBuilder_ != null) {
          lastTransitionTimeBuilder_.dispose();
          lastTransitionTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastTransitionTimeBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getLastTransitionTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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>
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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>
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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>
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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>
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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>
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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>
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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>
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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.api.core.v1.NamespaceCondition)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NamespaceCondition)
    private static final io.kubernetes.client.proto.V1.NamespaceCondition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NamespaceCondition();
    }

    public static io.kubernetes.client.proto.V1.NamespaceCondition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NamespaceCondition>
        PARSER = new com.google.protobuf.AbstractParser<NamespaceCondition>() {
      @java.lang.Override
      public NamespaceCondition 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<NamespaceCondition> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NamespaceCondition> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceCondition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NamespaceListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NamespaceList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Items is the list of Namespace objects in the list.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Namespace> 
        getItemsList();
    /**
     * <pre>
     * Items is the list of Namespace objects in the list.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
     */
    io.kubernetes.client.proto.V1.Namespace getItems(int index);
    /**
     * <pre>
     * Items is the list of Namespace objects in the list.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is the list of Namespace objects in the list.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.NamespaceOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is the list of Namespace objects in the list.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
     */
    io.kubernetes.client.proto.V1.NamespaceOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * NamespaceList is a list of Namespaces.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NamespaceList}
   */
  public static final class NamespaceList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NamespaceList)
      NamespaceListOrBuilder {
  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= */ "",
        NamespaceList.class.getName());
    }
    // Use NamespaceList.newBuilder() to construct.
    private NamespaceList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NamespaceList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NamespaceList.class, io.kubernetes.client.proto.V1.NamespaceList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.Namespace> items_;
    /**
     * <pre>
     * Items is the list of Namespace objects in the list.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Namespace> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is the list of Namespace objects in the list.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.NamespaceOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is the list of Namespace objects in the list.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is the list of Namespace objects in the list.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Namespace getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is the list of Namespace objects in the list.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceOrBuilder 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.V1.NamespaceList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NamespaceList other = (io.kubernetes.client.proto.V1.NamespaceList) 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.V1.NamespaceList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceList 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.V1.NamespaceList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceList 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.V1.NamespaceList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NamespaceList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NamespaceList 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.V1.NamespaceList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NamespaceList 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.V1.NamespaceList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NamespaceList 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.V1.NamespaceList 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>
     * NamespaceList is a list of Namespaces.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NamespaceList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NamespaceList)
        io.kubernetes.client.proto.V1.NamespaceListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NamespaceList.class, io.kubernetes.client.proto.V1.NamespaceList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NamespaceList.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.V1.internal_static_k8s_io_api_core_v1_NamespaceList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NamespaceList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceList build() {
        io.kubernetes.client.proto.V1.NamespaceList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceList buildPartial() {
        io.kubernetes.client.proto.V1.NamespaceList result = new io.kubernetes.client.proto.V1.NamespaceList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.NamespaceList 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.V1.NamespaceList 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.V1.NamespaceList) {
          return mergeFrom((io.kubernetes.client.proto.V1.NamespaceList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NamespaceList other) {
        if (other == io.kubernetes.client.proto.V1.NamespaceList.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.V1.Namespace m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Namespace.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.Namespace> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Namespace>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Namespace, io.kubernetes.client.proto.V1.Namespace.Builder, io.kubernetes.client.proto.V1.NamespaceOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Namespace> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Namespace getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.Namespace value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.Namespace.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.Namespace value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.Namespace value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.Namespace.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.Namespace.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Namespace> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Namespace.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NamespaceOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.NamespaceOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Namespace.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Namespace.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Namespace.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Namespace.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is the list of Namespace objects in the list.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Namespace items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Namespace.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Namespace, io.kubernetes.client.proto.V1.Namespace.Builder, io.kubernetes.client.proto.V1.NamespaceOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Namespace, io.kubernetes.client.proto.V1.Namespace.Builder, io.kubernetes.client.proto.V1.NamespaceOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NamespaceList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NamespaceList)
    private static final io.kubernetes.client.proto.V1.NamespaceList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NamespaceList();
    }

    public static io.kubernetes.client.proto.V1.NamespaceList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NamespaceList>
        PARSER = new com.google.protobuf.AbstractParser<NamespaceList>() {
      @java.lang.Override
      public NamespaceList 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<NamespaceList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NamespaceList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NamespaceSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NamespaceSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string finalizers = 1;</code>
     * @return A list containing the finalizers.
     */
    java.util.List<java.lang.String>
        getFinalizersList();
    /**
     * <pre>
     * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string finalizers = 1;</code>
     * @return The count of finalizers.
     */
    int getFinalizersCount();
    /**
     * <pre>
     * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string finalizers = 1;</code>
     * @param index The index of the element to return.
     * @return The finalizers at the given index.
     */
    java.lang.String getFinalizers(int index);
    /**
     * <pre>
     * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string finalizers = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the finalizers at the given index.
     */
    com.google.protobuf.ByteString
        getFinalizersBytes(int index);
  }
  /**
   * <pre>
   * NamespaceSpec describes the attributes on a Namespace.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NamespaceSpec}
   */
  public static final class NamespaceSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NamespaceSpec)
      NamespaceSpecOrBuilder {
  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= */ "",
        NamespaceSpec.class.getName());
    }
    // Use NamespaceSpec.newBuilder() to construct.
    private NamespaceSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NamespaceSpec() {
      finalizers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceSpec_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NamespaceSpec.class, io.kubernetes.client.proto.V1.NamespaceSpec.Builder.class);
    }

    public static final int FINALIZERS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList finalizers_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string finalizers = 1;</code>
     * @return A list containing the finalizers.
     */
    public com.google.protobuf.ProtocolStringList
        getFinalizersList() {
      return finalizers_;
    }
    /**
     * <pre>
     * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string finalizers = 1;</code>
     * @return The count of finalizers.
     */
    public int getFinalizersCount() {
      return finalizers_.size();
    }
    /**
     * <pre>
     * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string finalizers = 1;</code>
     * @param index The index of the element to return.
     * @return The finalizers at the given index.
     */
    public java.lang.String getFinalizers(int index) {
      return finalizers_.get(index);
    }
    /**
     * <pre>
     * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string finalizers = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the finalizers at the given index.
     */
    public com.google.protobuf.ByteString
        getFinalizersBytes(int index) {
      return finalizers_.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 < finalizers_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, finalizers_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < finalizers_.size(); i++) {
          dataSize += computeStringSizeNoTag(finalizers_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getFinalizersList().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.V1.NamespaceSpec)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NamespaceSpec other = (io.kubernetes.client.proto.V1.NamespaceSpec) obj;

      if (!getFinalizersList()
          .equals(other.getFinalizersList())) 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 (getFinalizersCount() > 0) {
        hash = (37 * hash) + FINALIZERS_FIELD_NUMBER;
        hash = (53 * hash) + getFinalizersList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NamespaceSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceSpec 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.V1.NamespaceSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceSpec 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.V1.NamespaceSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NamespaceSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NamespaceSpec 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.V1.NamespaceSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NamespaceSpec 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.V1.NamespaceSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NamespaceSpec 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.V1.NamespaceSpec 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>
     * NamespaceSpec describes the attributes on a Namespace.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NamespaceSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NamespaceSpec)
        io.kubernetes.client.proto.V1.NamespaceSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceSpec_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NamespaceSpec.class, io.kubernetes.client.proto.V1.NamespaceSpec.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NamespaceSpec.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        finalizers_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NamespaceSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceSpec build() {
        io.kubernetes.client.proto.V1.NamespaceSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceSpec buildPartial() {
        io.kubernetes.client.proto.V1.NamespaceSpec result = new io.kubernetes.client.proto.V1.NamespaceSpec(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NamespaceSpec result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          finalizers_.makeImmutable();
          result.finalizers_ = finalizers_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.NamespaceSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1.NamespaceSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NamespaceSpec other) {
        if (other == io.kubernetes.client.proto.V1.NamespaceSpec.getDefaultInstance()) return this;
        if (!other.finalizers_.isEmpty()) {
          if (finalizers_.isEmpty()) {
            finalizers_ = other.finalizers_;
            bitField0_ |= 0x00000001;
          } else {
            ensureFinalizersIsMutable();
            finalizers_.addAll(other.finalizers_);
          }
          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: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureFinalizersIsMutable();
                finalizers_.add(bs);
                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.LazyStringArrayList finalizers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureFinalizersIsMutable() {
        if (!finalizers_.isModifiable()) {
          finalizers_ = new com.google.protobuf.LazyStringArrayList(finalizers_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string finalizers = 1;</code>
       * @return A list containing the finalizers.
       */
      public com.google.protobuf.ProtocolStringList
          getFinalizersList() {
        finalizers_.makeImmutable();
        return finalizers_;
      }
      /**
       * <pre>
       * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string finalizers = 1;</code>
       * @return The count of finalizers.
       */
      public int getFinalizersCount() {
        return finalizers_.size();
      }
      /**
       * <pre>
       * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string finalizers = 1;</code>
       * @param index The index of the element to return.
       * @return The finalizers at the given index.
       */
      public java.lang.String getFinalizers(int index) {
        return finalizers_.get(index);
      }
      /**
       * <pre>
       * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string finalizers = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the finalizers at the given index.
       */
      public com.google.protobuf.ByteString
          getFinalizersBytes(int index) {
        return finalizers_.getByteString(index);
      }
      /**
       * <pre>
       * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string finalizers = 1;</code>
       * @param index The index to set the value at.
       * @param value The finalizers to set.
       * @return This builder for chaining.
       */
      public Builder setFinalizers(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureFinalizersIsMutable();
        finalizers_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string finalizers = 1;</code>
       * @param value The finalizers to add.
       * @return This builder for chaining.
       */
      public Builder addFinalizers(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureFinalizersIsMutable();
        finalizers_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string finalizers = 1;</code>
       * @param values The finalizers to add.
       * @return This builder for chaining.
       */
      public Builder addAllFinalizers(
          java.lang.Iterable<java.lang.String> values) {
        ensureFinalizersIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, finalizers_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string finalizers = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFinalizers() {
        finalizers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string finalizers = 1;</code>
       * @param value The bytes of the finalizers to add.
       * @return This builder for chaining.
       */
      public Builder addFinalizersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureFinalizersIsMutable();
        finalizers_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NamespaceSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NamespaceSpec)
    private static final io.kubernetes.client.proto.V1.NamespaceSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NamespaceSpec();
    }

    public static io.kubernetes.client.proto.V1.NamespaceSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NamespaceSpec>
        PARSER = new com.google.protobuf.AbstractParser<NamespaceSpec>() {
      @java.lang.Override
      public NamespaceSpec 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<NamespaceSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NamespaceSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NamespaceStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NamespaceStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Phase is the current lifecycle phase of the namespace.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return Whether the phase field is set.
     */
    boolean hasPhase();
    /**
     * <pre>
     * Phase is the current lifecycle phase of the namespace.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The phase.
     */
    java.lang.String getPhase();
    /**
     * <pre>
     * Phase is the current lifecycle phase of the namespace.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The bytes for phase.
     */
    com.google.protobuf.ByteString
        getPhaseBytes();

    /**
     * <pre>
     * Represents the latest available observations of a namespace's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.NamespaceCondition> 
        getConditionsList();
    /**
     * <pre>
     * Represents the latest available observations of a namespace's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
     */
    io.kubernetes.client.proto.V1.NamespaceCondition getConditions(int index);
    /**
     * <pre>
     * Represents the latest available observations of a namespace's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
     */
    int getConditionsCount();
    /**
     * <pre>
     * Represents the latest available observations of a namespace's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.NamespaceConditionOrBuilder> 
        getConditionsOrBuilderList();
    /**
     * <pre>
     * Represents the latest available observations of a namespace's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
     */
    io.kubernetes.client.proto.V1.NamespaceConditionOrBuilder getConditionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * NamespaceStatus is information about the current status of a Namespace.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NamespaceStatus}
   */
  public static final class NamespaceStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NamespaceStatus)
      NamespaceStatusOrBuilder {
  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= */ "",
        NamespaceStatus.class.getName());
    }
    // Use NamespaceStatus.newBuilder() to construct.
    private NamespaceStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NamespaceStatus() {
      phase_ = "";
      conditions_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NamespaceStatus.class, io.kubernetes.client.proto.V1.NamespaceStatus.Builder.class);
    }

    private int bitField0_;
    public static final int PHASE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object phase_ = "";
    /**
     * <pre>
     * Phase is the current lifecycle phase of the namespace.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return Whether the phase field is set.
     */
    @java.lang.Override
    public boolean hasPhase() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Phase is the current lifecycle phase of the namespace.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The phase.
     */
    @java.lang.Override
    public java.lang.String getPhase() {
      java.lang.Object ref = phase_;
      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()) {
          phase_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Phase is the current lifecycle phase of the namespace.
     * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The bytes for phase.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPhaseBytes() {
      java.lang.Object ref = phase_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        phase_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONDITIONS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.NamespaceCondition> conditions_;
    /**
     * <pre>
     * Represents the latest available observations of a namespace's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.NamespaceCondition> getConditionsList() {
      return conditions_;
    }
    /**
     * <pre>
     * Represents the latest available observations of a namespace's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.NamespaceConditionOrBuilder> 
        getConditionsOrBuilderList() {
      return conditions_;
    }
    /**
     * <pre>
     * Represents the latest available observations of a namespace's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
     */
    @java.lang.Override
    public int getConditionsCount() {
      return conditions_.size();
    }
    /**
     * <pre>
     * Represents the latest available observations of a namespace's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceCondition getConditions(int index) {
      return conditions_.get(index);
    }
    /**
     * <pre>
     * Represents the latest available observations of a namespace's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceConditionOrBuilder getConditionsOrBuilder(
        int index) {
      return conditions_.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, phase_);
      }
      for (int i = 0; i < conditions_.size(); i++) {
        output.writeMessage(2, conditions_.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, phase_);
      }
      for (int i = 0; i < conditions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, conditions_.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.V1.NamespaceStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NamespaceStatus other = (io.kubernetes.client.proto.V1.NamespaceStatus) obj;

      if (hasPhase() != other.hasPhase()) return false;
      if (hasPhase()) {
        if (!getPhase()
            .equals(other.getPhase())) return false;
      }
      if (!getConditionsList()
          .equals(other.getConditionsList())) 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 (hasPhase()) {
        hash = (37 * hash) + PHASE_FIELD_NUMBER;
        hash = (53 * hash) + getPhase().hashCode();
      }
      if (getConditionsCount() > 0) {
        hash = (37 * hash) + CONDITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConditionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NamespaceStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceStatus 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.V1.NamespaceStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceStatus 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.V1.NamespaceStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NamespaceStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NamespaceStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NamespaceStatus 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.V1.NamespaceStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NamespaceStatus 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.V1.NamespaceStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NamespaceStatus 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.V1.NamespaceStatus 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>
     * NamespaceStatus is information about the current status of a Namespace.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NamespaceStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NamespaceStatus)
        io.kubernetes.client.proto.V1.NamespaceStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NamespaceStatus.class, io.kubernetes.client.proto.V1.NamespaceStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NamespaceStatus.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        phase_ = "";
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
        } else {
          conditions_ = null;
          conditionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NamespaceStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NamespaceStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceStatus build() {
        io.kubernetes.client.proto.V1.NamespaceStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NamespaceStatus buildPartial() {
        io.kubernetes.client.proto.V1.NamespaceStatus result = new io.kubernetes.client.proto.V1.NamespaceStatus(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.NamespaceStatus result) {
        if (conditionsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            conditions_ = java.util.Collections.unmodifiableList(conditions_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.conditions_ = conditions_;
        } else {
          result.conditions_ = conditionsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NamespaceStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.phase_ = phase_;
          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.V1.NamespaceStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.NamespaceStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NamespaceStatus other) {
        if (other == io.kubernetes.client.proto.V1.NamespaceStatus.getDefaultInstance()) return this;
        if (other.hasPhase()) {
          phase_ = other.phase_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (conditionsBuilder_ == null) {
          if (!other.conditions_.isEmpty()) {
            if (conditions_.isEmpty()) {
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureConditionsIsMutable();
              conditions_.addAll(other.conditions_);
            }
            onChanged();
          }
        } else {
          if (!other.conditions_.isEmpty()) {
            if (conditionsBuilder_.isEmpty()) {
              conditionsBuilder_.dispose();
              conditionsBuilder_ = null;
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000002);
              conditionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getConditionsFieldBuilder() : null;
            } else {
              conditionsBuilder_.addAllMessages(other.conditions_);
            }
          }
        }
        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: {
                phase_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.NamespaceCondition m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.NamespaceCondition.parser(),
                        extensionRegistry);
                if (conditionsBuilder_ == null) {
                  ensureConditionsIsMutable();
                  conditions_.add(m);
                } else {
                  conditionsBuilder_.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 java.lang.Object phase_ = "";
      /**
       * <pre>
       * Phase is the current lifecycle phase of the namespace.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return Whether the phase field is set.
       */
      public boolean hasPhase() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Phase is the current lifecycle phase of the namespace.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return The phase.
       */
      public java.lang.String getPhase() {
        java.lang.Object ref = phase_;
        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()) {
            phase_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Phase is the current lifecycle phase of the namespace.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return The bytes for phase.
       */
      public com.google.protobuf.ByteString
          getPhaseBytes() {
        java.lang.Object ref = phase_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          phase_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Phase is the current lifecycle phase of the namespace.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @param value The phase to set.
       * @return This builder for chaining.
       */
      public Builder setPhase(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        phase_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Phase is the current lifecycle phase of the namespace.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPhase() {
        phase_ = getDefaultInstance().getPhase();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Phase is the current lifecycle phase of the namespace.
       * More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @param value The bytes for phase to set.
       * @return This builder for chaining.
       */
      public Builder setPhaseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        phase_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.NamespaceCondition> conditions_ =
        java.util.Collections.emptyList();
      private void ensureConditionsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          conditions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.NamespaceCondition>(conditions_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NamespaceCondition, io.kubernetes.client.proto.V1.NamespaceCondition.Builder, io.kubernetes.client.proto.V1.NamespaceConditionOrBuilder> conditionsBuilder_;

      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NamespaceCondition> getConditionsList() {
        if (conditionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(conditions_);
        } else {
          return conditionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public int getConditionsCount() {
        if (conditionsBuilder_ == null) {
          return conditions_.size();
        } else {
          return conditionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NamespaceCondition getConditions(int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);
        } else {
          return conditionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.NamespaceCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.set(index, value);
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.NamespaceCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.set(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public Builder addConditions(io.kubernetes.client.proto.V1.NamespaceCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.NamespaceCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(index, value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public Builder addConditions(
          io.kubernetes.client.proto.V1.NamespaceCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.NamespaceCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public Builder addAllConditions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.NamespaceCondition> values) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, conditions_);
          onChanged();
        } else {
          conditionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public Builder clearConditions() {
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          conditionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public Builder removeConditions(int index) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.remove(index);
          onChanged();
        } else {
          conditionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NamespaceCondition.Builder getConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NamespaceConditionOrBuilder getConditionsOrBuilder(
          int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);  } else {
          return conditionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.NamespaceConditionOrBuilder> 
           getConditionsOrBuilderList() {
        if (conditionsBuilder_ != null) {
          return conditionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(conditions_);
        }
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NamespaceCondition.Builder addConditionsBuilder() {
        return getConditionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.NamespaceCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NamespaceCondition.Builder addConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.NamespaceCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * Represents the latest available observations of a namespace's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NamespaceCondition conditions = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NamespaceCondition.Builder> 
           getConditionsBuilderList() {
        return getConditionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NamespaceCondition, io.kubernetes.client.proto.V1.NamespaceCondition.Builder, io.kubernetes.client.proto.V1.NamespaceConditionOrBuilder> 
          getConditionsFieldBuilder() {
        if (conditionsBuilder_ == null) {
          conditionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.NamespaceCondition, io.kubernetes.client.proto.V1.NamespaceCondition.Builder, io.kubernetes.client.proto.V1.NamespaceConditionOrBuilder>(
                  conditions_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          conditions_ = null;
        }
        return conditionsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NamespaceStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NamespaceStatus)
    private static final io.kubernetes.client.proto.V1.NamespaceStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NamespaceStatus();
    }

    public static io.kubernetes.client.proto.V1.NamespaceStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NamespaceStatus>
        PARSER = new com.google.protobuf.AbstractParser<NamespaceStatus>() {
      @java.lang.Override
      public NamespaceStatus 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<NamespaceStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NamespaceStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NamespaceStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Node)
      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 defines the behavior of a node.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * Spec defines the behavior of a node.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.NodeSpec getSpec();
    /**
     * <pre>
     * Spec defines the behavior of a node.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.NodeSpecOrBuilder getSpecOrBuilder();

    /**
     * <pre>
     * Most recently observed status of the node.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Most recently observed status of the node.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1.NodeStatus getStatus();
    /**
     * <pre>
     * Most recently observed status of the node.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V1.NodeStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * Node is a worker node in Kubernetes.
   * Each node will have a unique identifier in the cache (i.e. in etcd).
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Node}
   */
  public static final class Node extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Node)
      NodeOrBuilder {
  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= */ "",
        Node.class.getName());
    }
    // Use Node.newBuilder() to construct.
    private Node(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Node() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Node_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Node_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Node.class, io.kubernetes.client.proto.V1.Node.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.V1.NodeSpec spec_;
    /**
     * <pre>
     * Spec defines the behavior of a node.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Spec defines the behavior of a node.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.NodeSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * Spec defines the behavior of a node.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.NodeSpec.getDefaultInstance() : spec_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.NodeStatus status_;
    /**
     * <pre>
     * Most recently observed status of the node.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Most recently observed status of the node.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1.NodeStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * Most recently observed status of the node.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1.NodeStatus.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.V1.Node)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Node other = (io.kubernetes.client.proto.V1.Node) 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.V1.Node parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Node 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.V1.Node parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Node 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.V1.Node parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Node parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Node parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Node 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.V1.Node parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Node 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.V1.Node parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Node 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.V1.Node 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>
     * Node is a worker node in Kubernetes.
     * Each node will have a unique identifier in the cache (i.e. in etcd).
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Node}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Node)
        io.kubernetes.client.proto.V1.NodeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Node_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Node_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Node.class, io.kubernetes.client.proto.V1.Node.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Node.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.V1.internal_static_k8s_io_api_core_v1_Node_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Node getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Node.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Node build() {
        io.kubernetes.client.proto.V1.Node result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Node buildPartial() {
        io.kubernetes.client.proto.V1.Node result = new io.kubernetes.client.proto.V1.Node(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Node 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.V1.Node) {
          return mergeFrom((io.kubernetes.client.proto.V1.Node)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Node other) {
        if (other == io.kubernetes.client.proto.V1.Node.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.V1.NodeSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSpec, io.kubernetes.client.proto.V1.NodeSpec.Builder, io.kubernetes.client.proto.V1.NodeSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * Spec defines the behavior of a node.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Spec defines the behavior of a node.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.NodeSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.NodeSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Spec defines the behavior of a node.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.NodeSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of a node.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.NodeSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of a node.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.NodeSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.NodeSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of a node.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of a node.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Spec defines the behavior of a node.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.NodeSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * Spec defines the behavior of a node.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSpec, io.kubernetes.client.proto.V1.NodeSpec.Builder, io.kubernetes.client.proto.V1.NodeSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeSpec, io.kubernetes.client.proto.V1.NodeSpec.Builder, io.kubernetes.client.proto.V1.NodeSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      private io.kubernetes.client.proto.V1.NodeStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeStatus, io.kubernetes.client.proto.V1.NodeStatus.Builder, io.kubernetes.client.proto.V1.NodeStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * Most recently observed status of the node.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Most recently observed status of the node.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1.NodeStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1.NodeStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Most recently observed status of the node.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1.NodeStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the node.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1.NodeStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the node.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1.NodeStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1.NodeStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the node.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the node.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.NodeStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Most recently observed status of the node.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.NodeStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1.NodeStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * Most recently observed status of the node.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeStatus status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeStatus, io.kubernetes.client.proto.V1.NodeStatus.Builder, io.kubernetes.client.proto.V1.NodeStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeStatus, io.kubernetes.client.proto.V1.NodeStatus.Builder, io.kubernetes.client.proto.V1.NodeStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Node)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Node)
    private static final io.kubernetes.client.proto.V1.Node DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Node();
    }

    public static io.kubernetes.client.proto.V1.Node getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Node>
        PARSER = new com.google.protobuf.AbstractParser<Node>() {
      @java.lang.Override
      public Node 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<Node> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Node> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Node getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeAddressOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeAddress)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Node address type, one of Hostname, ExternalIP or InternalIP.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * Node address type, one of Hostname, ExternalIP or InternalIP.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * Node address type, one of Hostname, ExternalIP or InternalIP.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * The node address.
     * </pre>
     *
     * <code>optional string address = 2;</code>
     * @return Whether the address field is set.
     */
    boolean hasAddress();
    /**
     * <pre>
     * The node address.
     * </pre>
     *
     * <code>optional string address = 2;</code>
     * @return The address.
     */
    java.lang.String getAddress();
    /**
     * <pre>
     * The node address.
     * </pre>
     *
     * <code>optional string address = 2;</code>
     * @return The bytes for address.
     */
    com.google.protobuf.ByteString
        getAddressBytes();
  }
  /**
   * <pre>
   * NodeAddress contains information for the node's address.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeAddress}
   */
  public static final class NodeAddress extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeAddress)
      NodeAddressOrBuilder {
  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= */ "",
        NodeAddress.class.getName());
    }
    // Use NodeAddress.newBuilder() to construct.
    private NodeAddress(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeAddress() {
      type_ = "";
      address_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeAddress_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeAddress_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeAddress.class, io.kubernetes.client.proto.V1.NodeAddress.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * Node address type, one of Hostname, ExternalIP or InternalIP.
     * </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>
     * Node address type, one of Hostname, ExternalIP or InternalIP.
     * </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>
     * Node address type, one of Hostname, ExternalIP or InternalIP.
     * </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 ADDRESS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object address_ = "";
    /**
     * <pre>
     * The node address.
     * </pre>
     *
     * <code>optional string address = 2;</code>
     * @return Whether the address field is set.
     */
    @java.lang.Override
    public boolean hasAddress() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The node address.
     * </pre>
     *
     * <code>optional string address = 2;</code>
     * @return The address.
     */
    @java.lang.Override
    public java.lang.String getAddress() {
      java.lang.Object ref = address_;
      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()) {
          address_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The node address.
     * </pre>
     *
     * <code>optional string address = 2;</code>
     * @return The bytes for address.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAddressBytes() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        address_ = 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, address_);
      }
      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, address_);
      }
      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.V1.NodeAddress)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeAddress other = (io.kubernetes.client.proto.V1.NodeAddress) obj;

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasAddress() != other.hasAddress()) return false;
      if (hasAddress()) {
        if (!getAddress()
            .equals(other.getAddress())) 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 (hasAddress()) {
        hash = (37 * hash) + ADDRESS_FIELD_NUMBER;
        hash = (53 * hash) + getAddress().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeAddress parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeAddress 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.V1.NodeAddress parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeAddress 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.V1.NodeAddress parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeAddress parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeAddress parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeAddress 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.V1.NodeAddress parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeAddress 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.V1.NodeAddress parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeAddress 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.V1.NodeAddress 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>
     * NodeAddress contains information for the node's address.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeAddress}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeAddress)
        io.kubernetes.client.proto.V1.NodeAddressOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeAddress_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeAddress_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeAddress.class, io.kubernetes.client.proto.V1.NodeAddress.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeAddress.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = "";
        address_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeAddress_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeAddress getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeAddress.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeAddress build() {
        io.kubernetes.client.proto.V1.NodeAddress result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeAddress buildPartial() {
        io.kubernetes.client.proto.V1.NodeAddress result = new io.kubernetes.client.proto.V1.NodeAddress(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeAddress 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.address_ = address_;
          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.V1.NodeAddress) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeAddress)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeAddress other) {
        if (other == io.kubernetes.client.proto.V1.NodeAddress.getDefaultInstance()) return this;
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasAddress()) {
          address_ = other.address_;
          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: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                address_ = 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 type_ = "";
      /**
       * <pre>
       * Node address type, one of Hostname, ExternalIP or InternalIP.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Node address type, one of Hostname, ExternalIP or InternalIP.
       * </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>
       * Node address type, one of Hostname, ExternalIP or InternalIP.
       * </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>
       * Node address type, one of Hostname, ExternalIP or InternalIP.
       * </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>
       * Node address type, one of Hostname, ExternalIP or InternalIP.
       * </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>
       * Node address type, one of Hostname, ExternalIP or InternalIP.
       * </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 address_ = "";
      /**
       * <pre>
       * The node address.
       * </pre>
       *
       * <code>optional string address = 2;</code>
       * @return Whether the address field is set.
       */
      public boolean hasAddress() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The node address.
       * </pre>
       *
       * <code>optional string address = 2;</code>
       * @return The address.
       */
      public java.lang.String getAddress() {
        java.lang.Object ref = address_;
        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()) {
            address_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The node address.
       * </pre>
       *
       * <code>optional string address = 2;</code>
       * @return The bytes for address.
       */
      public com.google.protobuf.ByteString
          getAddressBytes() {
        java.lang.Object ref = address_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          address_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The node address.
       * </pre>
       *
       * <code>optional string address = 2;</code>
       * @param value The address to set.
       * @return This builder for chaining.
       */
      public Builder setAddress(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        address_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The node address.
       * </pre>
       *
       * <code>optional string address = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAddress() {
        address_ = getDefaultInstance().getAddress();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The node address.
       * </pre>
       *
       * <code>optional string address = 2;</code>
       * @param value The bytes for address to set.
       * @return This builder for chaining.
       */
      public Builder setAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        address_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeAddress)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeAddress)
    private static final io.kubernetes.client.proto.V1.NodeAddress DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeAddress();
    }

    public static io.kubernetes.client.proto.V1.NodeAddress getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeAddress>
        PARSER = new com.google.protobuf.AbstractParser<NodeAddress>() {
      @java.lang.Override
      public NodeAddress 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<NodeAddress> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeAddress> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeAddress getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeAffinityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeAffinity)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to an update), the system
     * may or may not try to eventually evict the pod from its node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     * @return Whether the requiredDuringSchedulingIgnoredDuringExecution field is set.
     */
    boolean hasRequiredDuringSchedulingIgnoredDuringExecution();
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to an update), the system
     * may or may not try to eventually evict the pod from its node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     * @return The requiredDuringSchedulingIgnoredDuringExecution.
     */
    io.kubernetes.client.proto.V1.NodeSelector getRequiredDuringSchedulingIgnoredDuringExecution();
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to an update), the system
     * may or may not try to eventually evict the pod from its node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    io.kubernetes.client.proto.V1.NodeSelectorOrBuilder getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilder();

    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node matches the corresponding matchExpressions; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PreferredSchedulingTerm> 
        getPreferredDuringSchedulingIgnoredDuringExecutionList();
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node matches the corresponding matchExpressions; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    io.kubernetes.client.proto.V1.PreferredSchedulingTerm getPreferredDuringSchedulingIgnoredDuringExecution(int index);
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node matches the corresponding matchExpressions; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    int getPreferredDuringSchedulingIgnoredDuringExecutionCount();
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node matches the corresponding matchExpressions; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PreferredSchedulingTermOrBuilder> 
        getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilderList();
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node matches the corresponding matchExpressions; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    io.kubernetes.client.proto.V1.PreferredSchedulingTermOrBuilder getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Node affinity is a group of node affinity scheduling rules.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeAffinity}
   */
  public static final class NodeAffinity extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeAffinity)
      NodeAffinityOrBuilder {
  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= */ "",
        NodeAffinity.class.getName());
    }
    // Use NodeAffinity.newBuilder() to construct.
    private NodeAffinity(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeAffinity() {
      preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeAffinity_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeAffinity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeAffinity.class, io.kubernetes.client.proto.V1.NodeAffinity.Builder.class);
    }

    private int bitField0_;
    public static final int REQUIREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution_;
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to an update), the system
     * may or may not try to eventually evict the pod from its node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     * @return Whether the requiredDuringSchedulingIgnoredDuringExecution field is set.
     */
    @java.lang.Override
    public boolean hasRequiredDuringSchedulingIgnoredDuringExecution() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to an update), the system
     * may or may not try to eventually evict the pod from its node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     * @return The requiredDuringSchedulingIgnoredDuringExecution.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelector getRequiredDuringSchedulingIgnoredDuringExecution() {
      return requiredDuringSchedulingIgnoredDuringExecution_ == null ? io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance() : requiredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to an update), the system
     * may or may not try to eventually evict the pod from its node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorOrBuilder getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilder() {
      return requiredDuringSchedulingIgnoredDuringExecution_ == null ? io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance() : requiredDuringSchedulingIgnoredDuringExecution_;
    }

    public static final int PREFERREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PreferredSchedulingTerm> preferredDuringSchedulingIgnoredDuringExecution_;
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node matches the corresponding matchExpressions; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PreferredSchedulingTerm> getPreferredDuringSchedulingIgnoredDuringExecutionList() {
      return preferredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node matches the corresponding matchExpressions; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PreferredSchedulingTermOrBuilder> 
        getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilderList() {
      return preferredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node matches the corresponding matchExpressions; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public int getPreferredDuringSchedulingIgnoredDuringExecutionCount() {
      return preferredDuringSchedulingIgnoredDuringExecution_.size();
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node matches the corresponding matchExpressions; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PreferredSchedulingTerm getPreferredDuringSchedulingIgnoredDuringExecution(int index) {
      return preferredDuringSchedulingIgnoredDuringExecution_.get(index);
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node matches the corresponding matchExpressions; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PreferredSchedulingTermOrBuilder getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilder(
        int index) {
      return preferredDuringSchedulingIgnoredDuringExecution_.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, getRequiredDuringSchedulingIgnoredDuringExecution());
      }
      for (int i = 0; i < preferredDuringSchedulingIgnoredDuringExecution_.size(); i++) {
        output.writeMessage(2, preferredDuringSchedulingIgnoredDuringExecution_.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, getRequiredDuringSchedulingIgnoredDuringExecution());
      }
      for (int i = 0; i < preferredDuringSchedulingIgnoredDuringExecution_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, preferredDuringSchedulingIgnoredDuringExecution_.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.V1.NodeAffinity)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeAffinity other = (io.kubernetes.client.proto.V1.NodeAffinity) obj;

      if (hasRequiredDuringSchedulingIgnoredDuringExecution() != other.hasRequiredDuringSchedulingIgnoredDuringExecution()) return false;
      if (hasRequiredDuringSchedulingIgnoredDuringExecution()) {
        if (!getRequiredDuringSchedulingIgnoredDuringExecution()
            .equals(other.getRequiredDuringSchedulingIgnoredDuringExecution())) return false;
      }
      if (!getPreferredDuringSchedulingIgnoredDuringExecutionList()
          .equals(other.getPreferredDuringSchedulingIgnoredDuringExecutionList())) 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 (hasRequiredDuringSchedulingIgnoredDuringExecution()) {
        hash = (37 * hash) + REQUIREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER;
        hash = (53 * hash) + getRequiredDuringSchedulingIgnoredDuringExecution().hashCode();
      }
      if (getPreferredDuringSchedulingIgnoredDuringExecutionCount() > 0) {
        hash = (37 * hash) + PREFERREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER;
        hash = (53 * hash) + getPreferredDuringSchedulingIgnoredDuringExecutionList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeAffinity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeAffinity 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.V1.NodeAffinity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeAffinity 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.V1.NodeAffinity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeAffinity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeAffinity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeAffinity 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.V1.NodeAffinity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeAffinity 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.V1.NodeAffinity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeAffinity 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.V1.NodeAffinity 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>
     * Node affinity is a group of node affinity scheduling rules.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeAffinity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeAffinity)
        io.kubernetes.client.proto.V1.NodeAffinityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeAffinity_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeAffinity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeAffinity.class, io.kubernetes.client.proto.V1.NodeAffinity.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeAffinity.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder();
          getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        requiredDuringSchedulingIgnoredDuringExecution_ = null;
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ != null) {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.dispose();
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_ = null;
        }
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
        } else {
          preferredDuringSchedulingIgnoredDuringExecution_ = null;
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeAffinity_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeAffinity getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeAffinity.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeAffinity build() {
        io.kubernetes.client.proto.V1.NodeAffinity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeAffinity buildPartial() {
        io.kubernetes.client.proto.V1.NodeAffinity result = new io.kubernetes.client.proto.V1.NodeAffinity(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.NodeAffinity result) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.unmodifiableList(preferredDuringSchedulingIgnoredDuringExecution_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.preferredDuringSchedulingIgnoredDuringExecution_ = preferredDuringSchedulingIgnoredDuringExecution_;
        } else {
          result.preferredDuringSchedulingIgnoredDuringExecution_ = preferredDuringSchedulingIgnoredDuringExecutionBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeAffinity result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.requiredDuringSchedulingIgnoredDuringExecution_ = requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null
              ? requiredDuringSchedulingIgnoredDuringExecution_
              : requiredDuringSchedulingIgnoredDuringExecutionBuilder_.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.V1.NodeAffinity) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeAffinity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeAffinity other) {
        if (other == io.kubernetes.client.proto.V1.NodeAffinity.getDefaultInstance()) return this;
        if (other.hasRequiredDuringSchedulingIgnoredDuringExecution()) {
          mergeRequiredDuringSchedulingIgnoredDuringExecution(other.getRequiredDuringSchedulingIgnoredDuringExecution());
        }
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (!other.preferredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
            if (preferredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
              preferredDuringSchedulingIgnoredDuringExecution_ = other.preferredDuringSchedulingIgnoredDuringExecution_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
              preferredDuringSchedulingIgnoredDuringExecution_.addAll(other.preferredDuringSchedulingIgnoredDuringExecution_);
            }
            onChanged();
          }
        } else {
          if (!other.preferredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
            if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_.isEmpty()) {
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_.dispose();
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_ = null;
              preferredDuringSchedulingIgnoredDuringExecution_ = other.preferredDuringSchedulingIgnoredDuringExecution_;
              bitField0_ = (bitField0_ & ~0x00000002);
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder() : null;
            } else {
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addAllMessages(other.preferredDuringSchedulingIgnoredDuringExecution_);
            }
          }
        }
        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(
                    getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.PreferredSchedulingTerm m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PreferredSchedulingTerm.parser(),
                        extensionRegistry);
                if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
                  ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
                  preferredDuringSchedulingIgnoredDuringExecution_.add(m);
                } else {
                  preferredDuringSchedulingIgnoredDuringExecutionBuilder_.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.V1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelector, io.kubernetes.client.proto.V1.NodeSelector.Builder, io.kubernetes.client.proto.V1.NodeSelectorOrBuilder> requiredDuringSchedulingIgnoredDuringExecutionBuilder_;
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to an update), the system
       * may or may not try to eventually evict the pod from its node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       * @return Whether the requiredDuringSchedulingIgnoredDuringExecution field is set.
       */
      public boolean hasRequiredDuringSchedulingIgnoredDuringExecution() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to an update), the system
       * may or may not try to eventually evict the pod from its node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       * @return The requiredDuringSchedulingIgnoredDuringExecution.
       */
      public io.kubernetes.client.proto.V1.NodeSelector getRequiredDuringSchedulingIgnoredDuringExecution() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return requiredDuringSchedulingIgnoredDuringExecution_ == null ? io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance() : requiredDuringSchedulingIgnoredDuringExecution_;
        } else {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to an update), the system
       * may or may not try to eventually evict the pod from its node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder setRequiredDuringSchedulingIgnoredDuringExecution(io.kubernetes.client.proto.V1.NodeSelector value) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          requiredDuringSchedulingIgnoredDuringExecution_ = value;
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to an update), the system
       * may or may not try to eventually evict the pod from its node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder setRequiredDuringSchedulingIgnoredDuringExecution(
          io.kubernetes.client.proto.V1.NodeSelector.Builder builderForValue) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          requiredDuringSchedulingIgnoredDuringExecution_ = builderForValue.build();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to an update), the system
       * may or may not try to eventually evict the pod from its node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder mergeRequiredDuringSchedulingIgnoredDuringExecution(io.kubernetes.client.proto.V1.NodeSelector value) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            requiredDuringSchedulingIgnoredDuringExecution_ != null &&
            requiredDuringSchedulingIgnoredDuringExecution_ != io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance()) {
            getRequiredDuringSchedulingIgnoredDuringExecutionBuilder().mergeFrom(value);
          } else {
            requiredDuringSchedulingIgnoredDuringExecution_ = value;
          }
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.mergeFrom(value);
        }
        if (requiredDuringSchedulingIgnoredDuringExecution_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to an update), the system
       * may or may not try to eventually evict the pod from its node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder clearRequiredDuringSchedulingIgnoredDuringExecution() {
        bitField0_ = (bitField0_ & ~0x00000001);
        requiredDuringSchedulingIgnoredDuringExecution_ = null;
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ != null) {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.dispose();
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to an update), the system
       * may or may not try to eventually evict the pod from its node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelector.Builder getRequiredDuringSchedulingIgnoredDuringExecutionBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to an update), the system
       * may or may not try to eventually evict the pod from its node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorOrBuilder getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilder() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ != null) {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilder();
        } else {
          return requiredDuringSchedulingIgnoredDuringExecution_ == null ?
              io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance() : requiredDuringSchedulingIgnoredDuringExecution_;
        }
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to an update), the system
       * may or may not try to eventually evict the pod from its node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelector, io.kubernetes.client.proto.V1.NodeSelector.Builder, io.kubernetes.client.proto.V1.NodeSelectorOrBuilder> 
          getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeSelector, io.kubernetes.client.proto.V1.NodeSelector.Builder, io.kubernetes.client.proto.V1.NodeSelectorOrBuilder>(
                  getRequiredDuringSchedulingIgnoredDuringExecution(),
                  getParentForChildren(),
                  isClean());
          requiredDuringSchedulingIgnoredDuringExecution_ = null;
        }
        return requiredDuringSchedulingIgnoredDuringExecutionBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.PreferredSchedulingTerm> preferredDuringSchedulingIgnoredDuringExecution_ =
        java.util.Collections.emptyList();
      private void ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          preferredDuringSchedulingIgnoredDuringExecution_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PreferredSchedulingTerm>(preferredDuringSchedulingIgnoredDuringExecution_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PreferredSchedulingTerm, io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder, io.kubernetes.client.proto.V1.PreferredSchedulingTermOrBuilder> preferredDuringSchedulingIgnoredDuringExecutionBuilder_;

      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PreferredSchedulingTerm> getPreferredDuringSchedulingIgnoredDuringExecutionList() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(preferredDuringSchedulingIgnoredDuringExecution_);
        } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public int getPreferredDuringSchedulingIgnoredDuringExecutionCount() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return preferredDuringSchedulingIgnoredDuringExecution_.size();
        } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PreferredSchedulingTerm getPreferredDuringSchedulingIgnoredDuringExecution(int index) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return preferredDuringSchedulingIgnoredDuringExecution_.get(index);
        } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder setPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PreferredSchedulingTerm value) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.set(index, value);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder setPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder builderForValue) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.set(index, builderForValue.build());
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(io.kubernetes.client.proto.V1.PreferredSchedulingTerm value) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(value);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PreferredSchedulingTerm value) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(index, value);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(
          io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder builderForValue) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(builderForValue.build());
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder builderForValue) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(index, builderForValue.build());
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addAllPreferredDuringSchedulingIgnoredDuringExecution(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PreferredSchedulingTerm> values) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, preferredDuringSchedulingIgnoredDuringExecution_);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder clearPreferredDuringSchedulingIgnoredDuringExecution() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder removePreferredDuringSchedulingIgnoredDuringExecution(int index) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.remove(index);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder getPreferredDuringSchedulingIgnoredDuringExecutionBuilder(
          int index) {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PreferredSchedulingTermOrBuilder getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilder(
          int index) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return preferredDuringSchedulingIgnoredDuringExecution_.get(index);  } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PreferredSchedulingTermOrBuilder> 
           getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilderList() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ != null) {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(preferredDuringSchedulingIgnoredDuringExecution_);
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder addPreferredDuringSchedulingIgnoredDuringExecutionBuilder() {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PreferredSchedulingTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder addPreferredDuringSchedulingIgnoredDuringExecutionBuilder(
          int index) {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PreferredSchedulingTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node matches the corresponding matchExpressions; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder> 
           getPreferredDuringSchedulingIgnoredDuringExecutionBuilderList() {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PreferredSchedulingTerm, io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder, io.kubernetes.client.proto.V1.PreferredSchedulingTermOrBuilder> 
          getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PreferredSchedulingTerm, io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder, io.kubernetes.client.proto.V1.PreferredSchedulingTermOrBuilder>(
                  preferredDuringSchedulingIgnoredDuringExecution_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          preferredDuringSchedulingIgnoredDuringExecution_ = null;
        }
        return preferredDuringSchedulingIgnoredDuringExecutionBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeAffinity)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeAffinity)
    private static final io.kubernetes.client.proto.V1.NodeAffinity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeAffinity();
    }

    public static io.kubernetes.client.proto.V1.NodeAffinity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeAffinity>
        PARSER = new com.google.protobuf.AbstractParser<NodeAffinity>() {
      @java.lang.Override
      public NodeAffinity 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<NodeAffinity> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeAffinity> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeAffinity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeConditionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeCondition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Type of node condition.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * Type of node condition.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * Type of node condition.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * Status of the condition, one of True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Status of the condition, one of True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The status.
     */
    java.lang.String getStatus();
    /**
     * <pre>
     * Status of the condition, one of True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The bytes for status.
     */
    com.google.protobuf.ByteString
        getStatusBytes();

    /**
     * <pre>
     * Last time we got an update on a given condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
     * @return Whether the lastHeartbeatTime field is set.
     */
    boolean hasLastHeartbeatTime();
    /**
     * <pre>
     * Last time we got an update on a given condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
     * @return The lastHeartbeatTime.
     */
    io.kubernetes.client.proto.Meta.Time getLastHeartbeatTime();
    /**
     * <pre>
     * Last time we got an update on a given condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastHeartbeatTimeOrBuilder();

    /**
     * <pre>
     * Last time the condition transit from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return Whether the lastTransitionTime field is set.
     */
    boolean hasLastTransitionTime();
    /**
     * <pre>
     * Last time the condition transit from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return The lastTransitionTime.
     */
    io.kubernetes.client.proto.Meta.Time getLastTransitionTime();
    /**
     * <pre>
     * Last time the condition transit from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastTransitionTimeOrBuilder();

    /**
     * <pre>
     * (brief) reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * (brief) reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * (brief) reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * Human readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * Human readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * Human readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * <pre>
   * NodeCondition contains condition information for a node.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeCondition}
   */
  public static final class NodeCondition extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeCondition)
      NodeConditionOrBuilder {
  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= */ "",
        NodeCondition.class.getName());
    }
    // Use NodeCondition.newBuilder() to construct.
    private NodeCondition(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeCondition() {
      type_ = "";
      status_ = "";
      reason_ = "";
      message_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeCondition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeCondition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeCondition.class, io.kubernetes.client.proto.V1.NodeCondition.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * Type of node condition.
     * </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 of node condition.
     * </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 of node condition.
     * </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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 LASTHEARTBEATTIME_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.Meta.Time lastHeartbeatTime_;
    /**
     * <pre>
     * Last time we got an update on a given condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
     * @return Whether the lastHeartbeatTime field is set.
     */
    @java.lang.Override
    public boolean hasLastHeartbeatTime() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Last time we got an update on a given condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
     * @return The lastHeartbeatTime.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getLastHeartbeatTime() {
      return lastHeartbeatTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastHeartbeatTime_;
    }
    /**
     * <pre>
     * Last time we got an update on a given condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastHeartbeatTimeOrBuilder() {
      return lastHeartbeatTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastHeartbeatTime_;
    }

    public static final int LASTTRANSITIONTIME_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.Meta.Time lastTransitionTime_;
    /**
     * <pre>
     * Last time the condition transit from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return Whether the lastTransitionTime field is set.
     */
    @java.lang.Override
    public boolean hasLastTransitionTime() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Last time the condition transit from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
     * Last time the condition transit from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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 = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * (brief) reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * (brief) reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</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>
     * (brief) reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</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 = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * Human readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Human readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</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>
     * Human readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</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, getLastHeartbeatTime());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getLastTransitionTime());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, reason_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, 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, getLastHeartbeatTime());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getLastTransitionTime());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, reason_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, 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.V1.NodeCondition)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeCondition other = (io.kubernetes.client.proto.V1.NodeCondition) 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 (hasLastHeartbeatTime() != other.hasLastHeartbeatTime()) return false;
      if (hasLastHeartbeatTime()) {
        if (!getLastHeartbeatTime()
            .equals(other.getLastHeartbeatTime())) 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 (hasLastHeartbeatTime()) {
        hash = (37 * hash) + LASTHEARTBEATTIME_FIELD_NUMBER;
        hash = (53 * hash) + getLastHeartbeatTime().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.V1.NodeCondition parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeCondition 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.V1.NodeCondition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeCondition 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.V1.NodeCondition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeCondition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeCondition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeCondition 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.V1.NodeCondition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeCondition 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.V1.NodeCondition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeCondition 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.V1.NodeCondition 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>
     * NodeCondition contains condition information for a node.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeCondition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeCondition)
        io.kubernetes.client.proto.V1.NodeConditionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeCondition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeCondition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeCondition.class, io.kubernetes.client.proto.V1.NodeCondition.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeCondition.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLastHeartbeatTimeFieldBuilder();
          getLastTransitionTimeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = "";
        status_ = "";
        lastHeartbeatTime_ = null;
        if (lastHeartbeatTimeBuilder_ != null) {
          lastHeartbeatTimeBuilder_.dispose();
          lastHeartbeatTimeBuilder_ = null;
        }
        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.V1.internal_static_k8s_io_api_core_v1_NodeCondition_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeCondition getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeCondition.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeCondition build() {
        io.kubernetes.client.proto.V1.NodeCondition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeCondition buildPartial() {
        io.kubernetes.client.proto.V1.NodeCondition result = new io.kubernetes.client.proto.V1.NodeCondition(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeCondition 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.lastHeartbeatTime_ = lastHeartbeatTimeBuilder_ == null
              ? lastHeartbeatTime_
              : lastHeartbeatTimeBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.lastTransitionTime_ = lastTransitionTimeBuilder_ == null
              ? lastTransitionTime_
              : lastTransitionTimeBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.message_ = message_;
          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.V1.NodeCondition) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeCondition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeCondition other) {
        if (other == io.kubernetes.client.proto.V1.NodeCondition.getDefaultInstance()) return this;
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasStatus()) {
          status_ = other.status_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasLastHeartbeatTime()) {
          mergeLastHeartbeatTime(other.getLastHeartbeatTime());
        }
        if (other.hasLastTransitionTime()) {
          mergeLastTransitionTime(other.getLastTransitionTime());
        }
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          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: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                status_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getLastHeartbeatTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getLastTransitionTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                reason_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                message_ = 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 type_ = "";
      /**
       * <pre>
       * Type of node condition.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Type of node condition.
       * </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 of node condition.
       * </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 of node condition.
       * </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 of node condition.
       * </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 of node condition.
       * </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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 lastHeartbeatTime_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> lastHeartbeatTimeBuilder_;
      /**
       * <pre>
       * Last time we got an update on a given condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
       * @return Whether the lastHeartbeatTime field is set.
       */
      public boolean hasLastHeartbeatTime() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Last time we got an update on a given condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
       * @return The lastHeartbeatTime.
       */
      public io.kubernetes.client.proto.Meta.Time getLastHeartbeatTime() {
        if (lastHeartbeatTimeBuilder_ == null) {
          return lastHeartbeatTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastHeartbeatTime_;
        } else {
          return lastHeartbeatTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Last time we got an update on a given condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
       */
      public Builder setLastHeartbeatTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastHeartbeatTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastHeartbeatTime_ = value;
        } else {
          lastHeartbeatTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time we got an update on a given condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
       */
      public Builder setLastHeartbeatTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (lastHeartbeatTimeBuilder_ == null) {
          lastHeartbeatTime_ = builderForValue.build();
        } else {
          lastHeartbeatTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time we got an update on a given condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
       */
      public Builder mergeLastHeartbeatTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastHeartbeatTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            lastHeartbeatTime_ != null &&
            lastHeartbeatTime_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getLastHeartbeatTimeBuilder().mergeFrom(value);
          } else {
            lastHeartbeatTime_ = value;
          }
        } else {
          lastHeartbeatTimeBuilder_.mergeFrom(value);
        }
        if (lastHeartbeatTime_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Last time we got an update on a given condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
       */
      public Builder clearLastHeartbeatTime() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lastHeartbeatTime_ = null;
        if (lastHeartbeatTimeBuilder_ != null) {
          lastHeartbeatTimeBuilder_.dispose();
          lastHeartbeatTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time we got an update on a given condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastHeartbeatTimeBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getLastHeartbeatTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Last time we got an update on a given condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastHeartbeatTimeOrBuilder() {
        if (lastHeartbeatTimeBuilder_ != null) {
          return lastHeartbeatTimeBuilder_.getMessageOrBuilder();
        } else {
          return lastHeartbeatTime_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastHeartbeatTime_;
        }
      }
      /**
       * <pre>
       * Last time we got an update on a given condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 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> 
          getLastHeartbeatTimeFieldBuilder() {
        if (lastHeartbeatTimeBuilder_ == null) {
          lastHeartbeatTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getLastHeartbeatTime(),
                  getParentForChildren(),
                  isClean());
          lastHeartbeatTime_ = null;
        }
        return lastHeartbeatTimeBuilder_;
      }

      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>
       * Last time the condition transit from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       * @return Whether the lastTransitionTime field is set.
       */
      public boolean hasLastTransitionTime() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Last time the condition transit from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * Last time the condition transit from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time the condition transit from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public Builder setLastTransitionTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (lastTransitionTimeBuilder_ == null) {
          lastTransitionTime_ = builderForValue.build();
        } else {
          lastTransitionTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time the condition transit from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public Builder mergeLastTransitionTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastTransitionTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 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_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Last time the condition transit from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public Builder clearLastTransitionTime() {
        bitField0_ = (bitField0_ & ~0x00000008);
        lastTransitionTime_ = null;
        if (lastTransitionTimeBuilder_ != null) {
          lastTransitionTimeBuilder_.dispose();
          lastTransitionTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time the condition transit from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastTransitionTimeBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getLastTransitionTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Last time the condition transit from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * Last time the condition transit from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * (brief) reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * (brief) reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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>
       * (brief) reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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>
       * (brief) reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * (brief) reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * (brief) reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * Human readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Human readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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>
       * Human readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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>
       * Human readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Human readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Human readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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_ |= 0x00000020;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeCondition)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeCondition)
    private static final io.kubernetes.client.proto.V1.NodeCondition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeCondition();
    }

    public static io.kubernetes.client.proto.V1.NodeCondition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeCondition>
        PARSER = new com.google.protobuf.AbstractParser<NodeCondition>() {
      @java.lang.Override
      public NodeCondition 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<NodeCondition> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeCondition> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeCondition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeConfigSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeConfigSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * ConfigMap is a reference to a Node's ConfigMap
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
     * @return Whether the configMap field is set.
     */
    boolean hasConfigMap();
    /**
     * <pre>
     * ConfigMap is a reference to a Node's ConfigMap
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
     * @return The configMap.
     */
    io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource getConfigMap();
    /**
     * <pre>
     * ConfigMap is a reference to a Node's ConfigMap
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
     */
    io.kubernetes.client.proto.V1.ConfigMapNodeConfigSourceOrBuilder getConfigMapOrBuilder();
  }
  /**
   * <pre>
   * NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.
   * This API is deprecated since 1.22
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeConfigSource}
   */
  public static final class NodeConfigSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeConfigSource)
      NodeConfigSourceOrBuilder {
  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= */ "",
        NodeConfigSource.class.getName());
    }
    // Use NodeConfigSource.newBuilder() to construct.
    private NodeConfigSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeConfigSource() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeConfigSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeConfigSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeConfigSource.class, io.kubernetes.client.proto.V1.NodeConfigSource.Builder.class);
    }

    private int bitField0_;
    public static final int CONFIGMAP_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource configMap_;
    /**
     * <pre>
     * ConfigMap is a reference to a Node's ConfigMap
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
     * @return Whether the configMap field is set.
     */
    @java.lang.Override
    public boolean hasConfigMap() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * ConfigMap is a reference to a Node's ConfigMap
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
     * @return The configMap.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource getConfigMap() {
      return configMap_ == null ? io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.getDefaultInstance() : configMap_;
    }
    /**
     * <pre>
     * ConfigMap is a reference to a Node's ConfigMap
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapNodeConfigSourceOrBuilder getConfigMapOrBuilder() {
      return configMap_ == null ? io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.getDefaultInstance() : configMap_;
    }

    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(2, getConfigMap());
      }
      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(2, getConfigMap());
      }
      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.V1.NodeConfigSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeConfigSource other = (io.kubernetes.client.proto.V1.NodeConfigSource) obj;

      if (hasConfigMap() != other.hasConfigMap()) return false;
      if (hasConfigMap()) {
        if (!getConfigMap()
            .equals(other.getConfigMap())) 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 (hasConfigMap()) {
        hash = (37 * hash) + CONFIGMAP_FIELD_NUMBER;
        hash = (53 * hash) + getConfigMap().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeConfigSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigSource 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.V1.NodeConfigSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigSource 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.V1.NodeConfigSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigSource 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.V1.NodeConfigSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeConfigSource 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.V1.NodeConfigSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigSource 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.V1.NodeConfigSource 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>
     * NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.
     * This API is deprecated since 1.22
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeConfigSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeConfigSource)
        io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeConfigSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeConfigSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeConfigSource.class, io.kubernetes.client.proto.V1.NodeConfigSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeConfigSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getConfigMapFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        configMap_ = null;
        if (configMapBuilder_ != null) {
          configMapBuilder_.dispose();
          configMapBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeConfigSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeConfigSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeConfigSource build() {
        io.kubernetes.client.proto.V1.NodeConfigSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeConfigSource buildPartial() {
        io.kubernetes.client.proto.V1.NodeConfigSource result = new io.kubernetes.client.proto.V1.NodeConfigSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeConfigSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.configMap_ = configMapBuilder_ == null
              ? configMap_
              : configMapBuilder_.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.V1.NodeConfigSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeConfigSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeConfigSource other) {
        if (other == io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance()) return this;
        if (other.hasConfigMap()) {
          mergeConfigMap(other.getConfigMap());
        }
        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 18: {
                input.readMessage(
                    getConfigMapFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                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.V1.ConfigMapNodeConfigSource configMap_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource, io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.Builder, io.kubernetes.client.proto.V1.ConfigMapNodeConfigSourceOrBuilder> configMapBuilder_;
      /**
       * <pre>
       * ConfigMap is a reference to a Node's ConfigMap
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
       * @return Whether the configMap field is set.
       */
      public boolean hasConfigMap() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * ConfigMap is a reference to a Node's ConfigMap
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
       * @return The configMap.
       */
      public io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource getConfigMap() {
        if (configMapBuilder_ == null) {
          return configMap_ == null ? io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.getDefaultInstance() : configMap_;
        } else {
          return configMapBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * ConfigMap is a reference to a Node's ConfigMap
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
       */
      public Builder setConfigMap(io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource value) {
        if (configMapBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configMap_ = value;
        } else {
          configMapBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ConfigMap is a reference to a Node's ConfigMap
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
       */
      public Builder setConfigMap(
          io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.Builder builderForValue) {
        if (configMapBuilder_ == null) {
          configMap_ = builderForValue.build();
        } else {
          configMapBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ConfigMap is a reference to a Node's ConfigMap
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
       */
      public Builder mergeConfigMap(io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource value) {
        if (configMapBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            configMap_ != null &&
            configMap_ != io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.getDefaultInstance()) {
            getConfigMapBuilder().mergeFrom(value);
          } else {
            configMap_ = value;
          }
        } else {
          configMapBuilder_.mergeFrom(value);
        }
        if (configMap_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * ConfigMap is a reference to a Node's ConfigMap
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
       */
      public Builder clearConfigMap() {
        bitField0_ = (bitField0_ & ~0x00000001);
        configMap_ = null;
        if (configMapBuilder_ != null) {
          configMapBuilder_.dispose();
          configMapBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ConfigMap is a reference to a Node's ConfigMap
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.Builder getConfigMapBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getConfigMapFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * ConfigMap is a reference to a Node's ConfigMap
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ConfigMapNodeConfigSourceOrBuilder getConfigMapOrBuilder() {
        if (configMapBuilder_ != null) {
          return configMapBuilder_.getMessageOrBuilder();
        } else {
          return configMap_ == null ?
              io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.getDefaultInstance() : configMap_;
        }
      }
      /**
       * <pre>
       * ConfigMap is a reference to a Node's ConfigMap
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapNodeConfigSource configMap = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource, io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.Builder, io.kubernetes.client.proto.V1.ConfigMapNodeConfigSourceOrBuilder> 
          getConfigMapFieldBuilder() {
        if (configMapBuilder_ == null) {
          configMapBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource, io.kubernetes.client.proto.V1.ConfigMapNodeConfigSource.Builder, io.kubernetes.client.proto.V1.ConfigMapNodeConfigSourceOrBuilder>(
                  getConfigMap(),
                  getParentForChildren(),
                  isClean());
          configMap_ = null;
        }
        return configMapBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeConfigSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeConfigSource)
    private static final io.kubernetes.client.proto.V1.NodeConfigSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeConfigSource();
    }

    public static io.kubernetes.client.proto.V1.NodeConfigSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeConfigSource>
        PARSER = new com.google.protobuf.AbstractParser<NodeConfigSource>() {
      @java.lang.Override
      public NodeConfigSource 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<NodeConfigSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeConfigSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeConfigStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeConfigStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Assigned reports the checkpointed config the node will try to use.
     * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
     * config payload to local disk, along with a record indicating intended
     * config. The node refers to this record to choose its config checkpoint, and
     * reports this record in Assigned. Assigned only updates in the status after
     * the record has been checkpointed to disk. When the Kubelet is restarted,
     * it tries to make the Assigned config the Active config by loading and
     * validating the checkpointed payload identified by Assigned.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
     * @return Whether the assigned field is set.
     */
    boolean hasAssigned();
    /**
     * <pre>
     * Assigned reports the checkpointed config the node will try to use.
     * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
     * config payload to local disk, along with a record indicating intended
     * config. The node refers to this record to choose its config checkpoint, and
     * reports this record in Assigned. Assigned only updates in the status after
     * the record has been checkpointed to disk. When the Kubelet is restarted,
     * it tries to make the Assigned config the Active config by loading and
     * validating the checkpointed payload identified by Assigned.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
     * @return The assigned.
     */
    io.kubernetes.client.proto.V1.NodeConfigSource getAssigned();
    /**
     * <pre>
     * Assigned reports the checkpointed config the node will try to use.
     * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
     * config payload to local disk, along with a record indicating intended
     * config. The node refers to this record to choose its config checkpoint, and
     * reports this record in Assigned. Assigned only updates in the status after
     * the record has been checkpointed to disk. When the Kubelet is restarted,
     * it tries to make the Assigned config the Active config by loading and
     * validating the checkpointed payload identified by Assigned.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
     */
    io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getAssignedOrBuilder();

    /**
     * <pre>
     * Active reports the checkpointed config the node is actively using.
     * Active will represent either the current version of the Assigned config,
     * or the current LastKnownGood config, depending on whether attempting to use the
     * Assigned config results in an error.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
     * @return Whether the active field is set.
     */
    boolean hasActive();
    /**
     * <pre>
     * Active reports the checkpointed config the node is actively using.
     * Active will represent either the current version of the Assigned config,
     * or the current LastKnownGood config, depending on whether attempting to use the
     * Assigned config results in an error.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
     * @return The active.
     */
    io.kubernetes.client.proto.V1.NodeConfigSource getActive();
    /**
     * <pre>
     * Active reports the checkpointed config the node is actively using.
     * Active will represent either the current version of the Assigned config,
     * or the current LastKnownGood config, depending on whether attempting to use the
     * Assigned config results in an error.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
     */
    io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getActiveOrBuilder();

    /**
     * <pre>
     * LastKnownGood reports the checkpointed config the node will fall back to
     * when it encounters an error attempting to use the Assigned config.
     * The Assigned config becomes the LastKnownGood config when the node determines
     * that the Assigned config is stable and correct.
     * This is currently implemented as a 10-minute soak period starting when the local
     * record of Assigned config is updated. If the Assigned config is Active at the end
     * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
     * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
     * because the local default config is always assumed good.
     * You should not make assumptions about the node's method of determining config stability
     * and correctness, as this may change or become configurable in the future.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
     * @return Whether the lastKnownGood field is set.
     */
    boolean hasLastKnownGood();
    /**
     * <pre>
     * LastKnownGood reports the checkpointed config the node will fall back to
     * when it encounters an error attempting to use the Assigned config.
     * The Assigned config becomes the LastKnownGood config when the node determines
     * that the Assigned config is stable and correct.
     * This is currently implemented as a 10-minute soak period starting when the local
     * record of Assigned config is updated. If the Assigned config is Active at the end
     * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
     * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
     * because the local default config is always assumed good.
     * You should not make assumptions about the node's method of determining config stability
     * and correctness, as this may change or become configurable in the future.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
     * @return The lastKnownGood.
     */
    io.kubernetes.client.proto.V1.NodeConfigSource getLastKnownGood();
    /**
     * <pre>
     * LastKnownGood reports the checkpointed config the node will fall back to
     * when it encounters an error attempting to use the Assigned config.
     * The Assigned config becomes the LastKnownGood config when the node determines
     * that the Assigned config is stable and correct.
     * This is currently implemented as a 10-minute soak period starting when the local
     * record of Assigned config is updated. If the Assigned config is Active at the end
     * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
     * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
     * because the local default config is always assumed good.
     * You should not make assumptions about the node's method of determining config stability
     * and correctness, as this may change or become configurable in the future.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
     */
    io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getLastKnownGoodOrBuilder();

    /**
     * <pre>
     * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
     * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
     * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
     * to load or validate the Assigned config, etc.
     * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
     * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
     * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
     * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
     * by fixing the config assigned in Spec.ConfigSource.
     * You can find additional information for debugging by searching the error message in the Kubelet log.
     * Error is a human-readable description of the error state; machines can check whether or not Error
     * is empty, but should not rely on the stability of the Error text across Kubelet versions.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
     * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
     * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
     * to load or validate the Assigned config, etc.
     * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
     * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
     * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
     * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
     * by fixing the config assigned in Spec.ConfigSource.
     * You can find additional information for debugging by searching the error message in the Kubelet log.
     * Error is a human-readable description of the error state; machines can check whether or not Error
     * is empty, but should not rely on the stability of the Error text across Kubelet versions.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return The error.
     */
    java.lang.String getError();
    /**
     * <pre>
     * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
     * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
     * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
     * to load or validate the Assigned config, etc.
     * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
     * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
     * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
     * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
     * by fixing the config assigned in Spec.ConfigSource.
     * You can find additional information for debugging by searching the error message in the Kubelet log.
     * Error is a human-readable description of the error state; machines can check whether or not Error
     * is empty, but should not rely on the stability of the Error text across Kubelet versions.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return The bytes for error.
     */
    com.google.protobuf.ByteString
        getErrorBytes();
  }
  /**
   * <pre>
   * NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeConfigStatus}
   */
  public static final class NodeConfigStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeConfigStatus)
      NodeConfigStatusOrBuilder {
  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= */ "",
        NodeConfigStatus.class.getName());
    }
    // Use NodeConfigStatus.newBuilder() to construct.
    private NodeConfigStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeConfigStatus() {
      error_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeConfigStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeConfigStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeConfigStatus.class, io.kubernetes.client.proto.V1.NodeConfigStatus.Builder.class);
    }

    private int bitField0_;
    public static final int ASSIGNED_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.NodeConfigSource assigned_;
    /**
     * <pre>
     * Assigned reports the checkpointed config the node will try to use.
     * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
     * config payload to local disk, along with a record indicating intended
     * config. The node refers to this record to choose its config checkpoint, and
     * reports this record in Assigned. Assigned only updates in the status after
     * the record has been checkpointed to disk. When the Kubelet is restarted,
     * it tries to make the Assigned config the Active config by loading and
     * validating the checkpointed payload identified by Assigned.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
     * @return Whether the assigned field is set.
     */
    @java.lang.Override
    public boolean hasAssigned() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Assigned reports the checkpointed config the node will try to use.
     * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
     * config payload to local disk, along with a record indicating intended
     * config. The node refers to this record to choose its config checkpoint, and
     * reports this record in Assigned. Assigned only updates in the status after
     * the record has been checkpointed to disk. When the Kubelet is restarted,
     * it tries to make the Assigned config the Active config by loading and
     * validating the checkpointed payload identified by Assigned.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
     * @return The assigned.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigSource getAssigned() {
      return assigned_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : assigned_;
    }
    /**
     * <pre>
     * Assigned reports the checkpointed config the node will try to use.
     * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
     * config payload to local disk, along with a record indicating intended
     * config. The node refers to this record to choose its config checkpoint, and
     * reports this record in Assigned. Assigned only updates in the status after
     * the record has been checkpointed to disk. When the Kubelet is restarted,
     * it tries to make the Assigned config the Active config by loading and
     * validating the checkpointed payload identified by Assigned.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getAssignedOrBuilder() {
      return assigned_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : assigned_;
    }

    public static final int ACTIVE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.NodeConfigSource active_;
    /**
     * <pre>
     * Active reports the checkpointed config the node is actively using.
     * Active will represent either the current version of the Assigned config,
     * or the current LastKnownGood config, depending on whether attempting to use the
     * Assigned config results in an error.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
     * @return Whether the active field is set.
     */
    @java.lang.Override
    public boolean hasActive() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Active reports the checkpointed config the node is actively using.
     * Active will represent either the current version of the Assigned config,
     * or the current LastKnownGood config, depending on whether attempting to use the
     * Assigned config results in an error.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
     * @return The active.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigSource getActive() {
      return active_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : active_;
    }
    /**
     * <pre>
     * Active reports the checkpointed config the node is actively using.
     * Active will represent either the current version of the Assigned config,
     * or the current LastKnownGood config, depending on whether attempting to use the
     * Assigned config results in an error.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getActiveOrBuilder() {
      return active_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : active_;
    }

    public static final int LASTKNOWNGOOD_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.NodeConfigSource lastKnownGood_;
    /**
     * <pre>
     * LastKnownGood reports the checkpointed config the node will fall back to
     * when it encounters an error attempting to use the Assigned config.
     * The Assigned config becomes the LastKnownGood config when the node determines
     * that the Assigned config is stable and correct.
     * This is currently implemented as a 10-minute soak period starting when the local
     * record of Assigned config is updated. If the Assigned config is Active at the end
     * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
     * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
     * because the local default config is always assumed good.
     * You should not make assumptions about the node's method of determining config stability
     * and correctness, as this may change or become configurable in the future.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
     * @return Whether the lastKnownGood field is set.
     */
    @java.lang.Override
    public boolean hasLastKnownGood() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * LastKnownGood reports the checkpointed config the node will fall back to
     * when it encounters an error attempting to use the Assigned config.
     * The Assigned config becomes the LastKnownGood config when the node determines
     * that the Assigned config is stable and correct.
     * This is currently implemented as a 10-minute soak period starting when the local
     * record of Assigned config is updated. If the Assigned config is Active at the end
     * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
     * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
     * because the local default config is always assumed good.
     * You should not make assumptions about the node's method of determining config stability
     * and correctness, as this may change or become configurable in the future.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
     * @return The lastKnownGood.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigSource getLastKnownGood() {
      return lastKnownGood_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : lastKnownGood_;
    }
    /**
     * <pre>
     * LastKnownGood reports the checkpointed config the node will fall back to
     * when it encounters an error attempting to use the Assigned config.
     * The Assigned config becomes the LastKnownGood config when the node determines
     * that the Assigned config is stable and correct.
     * This is currently implemented as a 10-minute soak period starting when the local
     * record of Assigned config is updated. If the Assigned config is Active at the end
     * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
     * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
     * because the local default config is always assumed good.
     * You should not make assumptions about the node's method of determining config stability
     * and correctness, as this may change or become configurable in the future.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getLastKnownGoodOrBuilder() {
      return lastKnownGood_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : lastKnownGood_;
    }

    public static final int ERROR_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object error_ = "";
    /**
     * <pre>
     * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
     * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
     * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
     * to load or validate the Assigned config, etc.
     * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
     * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
     * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
     * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
     * by fixing the config assigned in Spec.ConfigSource.
     * You can find additional information for debugging by searching the error message in the Kubelet log.
     * Error is a human-readable description of the error state; machines can check whether or not Error
     * is empty, but should not rely on the stability of the Error text across Kubelet versions.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
     * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
     * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
     * to load or validate the Assigned config, etc.
     * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
     * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
     * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
     * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
     * by fixing the config assigned in Spec.ConfigSource.
     * You can find additional information for debugging by searching the error message in the Kubelet log.
     * Error is a human-readable description of the error state; machines can check whether or not Error
     * is empty, but should not rely on the stability of the Error text across Kubelet versions.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return The error.
     */
    @java.lang.Override
    public java.lang.String getError() {
      java.lang.Object ref = error_;
      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()) {
          error_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
     * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
     * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
     * to load or validate the Assigned config, etc.
     * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
     * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
     * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
     * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
     * by fixing the config assigned in Spec.ConfigSource.
     * You can find additional information for debugging by searching the error message in the Kubelet log.
     * Error is a human-readable description of the error state; machines can check whether or not Error
     * is empty, but should not rely on the stability of the Error text across Kubelet versions.
     * +optional
     * </pre>
     *
     * <code>optional string error = 4;</code>
     * @return The bytes for error.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getErrorBytes() {
      java.lang.Object ref = error_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        error_ = 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)) {
        output.writeMessage(1, getAssigned());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getActive());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getLastKnownGood());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, error_);
      }
      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, getAssigned());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getActive());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getLastKnownGood());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, error_);
      }
      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.V1.NodeConfigStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeConfigStatus other = (io.kubernetes.client.proto.V1.NodeConfigStatus) obj;

      if (hasAssigned() != other.hasAssigned()) return false;
      if (hasAssigned()) {
        if (!getAssigned()
            .equals(other.getAssigned())) return false;
      }
      if (hasActive() != other.hasActive()) return false;
      if (hasActive()) {
        if (!getActive()
            .equals(other.getActive())) return false;
      }
      if (hasLastKnownGood() != other.hasLastKnownGood()) return false;
      if (hasLastKnownGood()) {
        if (!getLastKnownGood()
            .equals(other.getLastKnownGood())) return false;
      }
      if (hasError() != other.hasError()) return false;
      if (hasError()) {
        if (!getError()
            .equals(other.getError())) 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 (hasAssigned()) {
        hash = (37 * hash) + ASSIGNED_FIELD_NUMBER;
        hash = (53 * hash) + getAssigned().hashCode();
      }
      if (hasActive()) {
        hash = (37 * hash) + ACTIVE_FIELD_NUMBER;
        hash = (53 * hash) + getActive().hashCode();
      }
      if (hasLastKnownGood()) {
        hash = (37 * hash) + LASTKNOWNGOOD_FIELD_NUMBER;
        hash = (53 * hash) + getLastKnownGood().hashCode();
      }
      if (hasError()) {
        hash = (37 * hash) + ERROR_FIELD_NUMBER;
        hash = (53 * hash) + getError().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeConfigStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigStatus 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.V1.NodeConfigStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigStatus 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.V1.NodeConfigStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigStatus 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.V1.NodeConfigStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeConfigStatus 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.V1.NodeConfigStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeConfigStatus 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.V1.NodeConfigStatus 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>
     * NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeConfigStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeConfigStatus)
        io.kubernetes.client.proto.V1.NodeConfigStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeConfigStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeConfigStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeConfigStatus.class, io.kubernetes.client.proto.V1.NodeConfigStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeConfigStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getAssignedFieldBuilder();
          getActiveFieldBuilder();
          getLastKnownGoodFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        assigned_ = null;
        if (assignedBuilder_ != null) {
          assignedBuilder_.dispose();
          assignedBuilder_ = null;
        }
        active_ = null;
        if (activeBuilder_ != null) {
          activeBuilder_.dispose();
          activeBuilder_ = null;
        }
        lastKnownGood_ = null;
        if (lastKnownGoodBuilder_ != null) {
          lastKnownGoodBuilder_.dispose();
          lastKnownGoodBuilder_ = null;
        }
        error_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeConfigStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeConfigStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeConfigStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeConfigStatus build() {
        io.kubernetes.client.proto.V1.NodeConfigStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeConfigStatus buildPartial() {
        io.kubernetes.client.proto.V1.NodeConfigStatus result = new io.kubernetes.client.proto.V1.NodeConfigStatus(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeConfigStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.assigned_ = assignedBuilder_ == null
              ? assigned_
              : assignedBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.active_ = activeBuilder_ == null
              ? active_
              : activeBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.lastKnownGood_ = lastKnownGoodBuilder_ == null
              ? lastKnownGood_
              : lastKnownGoodBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.error_ = error_;
          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.V1.NodeConfigStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeConfigStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeConfigStatus other) {
        if (other == io.kubernetes.client.proto.V1.NodeConfigStatus.getDefaultInstance()) return this;
        if (other.hasAssigned()) {
          mergeAssigned(other.getAssigned());
        }
        if (other.hasActive()) {
          mergeActive(other.getActive());
        }
        if (other.hasLastKnownGood()) {
          mergeLastKnownGood(other.getLastKnownGood());
        }
        if (other.hasError()) {
          error_ = other.error_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getAssignedFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getActiveFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getLastKnownGoodFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                error_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.V1.NodeConfigSource assigned_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder> assignedBuilder_;
      /**
       * <pre>
       * Assigned reports the checkpointed config the node will try to use.
       * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
       * config payload to local disk, along with a record indicating intended
       * config. The node refers to this record to choose its config checkpoint, and
       * reports this record in Assigned. Assigned only updates in the status after
       * the record has been checkpointed to disk. When the Kubelet is restarted,
       * it tries to make the Assigned config the Active config by loading and
       * validating the checkpointed payload identified by Assigned.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
       * @return Whether the assigned field is set.
       */
      public boolean hasAssigned() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Assigned reports the checkpointed config the node will try to use.
       * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
       * config payload to local disk, along with a record indicating intended
       * config. The node refers to this record to choose its config checkpoint, and
       * reports this record in Assigned. Assigned only updates in the status after
       * the record has been checkpointed to disk. When the Kubelet is restarted,
       * it tries to make the Assigned config the Active config by loading and
       * validating the checkpointed payload identified by Assigned.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
       * @return The assigned.
       */
      public io.kubernetes.client.proto.V1.NodeConfigSource getAssigned() {
        if (assignedBuilder_ == null) {
          return assigned_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : assigned_;
        } else {
          return assignedBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Assigned reports the checkpointed config the node will try to use.
       * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
       * config payload to local disk, along with a record indicating intended
       * config. The node refers to this record to choose its config checkpoint, and
       * reports this record in Assigned. Assigned only updates in the status after
       * the record has been checkpointed to disk. When the Kubelet is restarted,
       * it tries to make the Assigned config the Active config by loading and
       * validating the checkpointed payload identified by Assigned.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
       */
      public Builder setAssigned(io.kubernetes.client.proto.V1.NodeConfigSource value) {
        if (assignedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          assigned_ = value;
        } else {
          assignedBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Assigned reports the checkpointed config the node will try to use.
       * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
       * config payload to local disk, along with a record indicating intended
       * config. The node refers to this record to choose its config checkpoint, and
       * reports this record in Assigned. Assigned only updates in the status after
       * the record has been checkpointed to disk. When the Kubelet is restarted,
       * it tries to make the Assigned config the Active config by loading and
       * validating the checkpointed payload identified by Assigned.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
       */
      public Builder setAssigned(
          io.kubernetes.client.proto.V1.NodeConfigSource.Builder builderForValue) {
        if (assignedBuilder_ == null) {
          assigned_ = builderForValue.build();
        } else {
          assignedBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Assigned reports the checkpointed config the node will try to use.
       * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
       * config payload to local disk, along with a record indicating intended
       * config. The node refers to this record to choose its config checkpoint, and
       * reports this record in Assigned. Assigned only updates in the status after
       * the record has been checkpointed to disk. When the Kubelet is restarted,
       * it tries to make the Assigned config the Active config by loading and
       * validating the checkpointed payload identified by Assigned.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
       */
      public Builder mergeAssigned(io.kubernetes.client.proto.V1.NodeConfigSource value) {
        if (assignedBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            assigned_ != null &&
            assigned_ != io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance()) {
            getAssignedBuilder().mergeFrom(value);
          } else {
            assigned_ = value;
          }
        } else {
          assignedBuilder_.mergeFrom(value);
        }
        if (assigned_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Assigned reports the checkpointed config the node will try to use.
       * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
       * config payload to local disk, along with a record indicating intended
       * config. The node refers to this record to choose its config checkpoint, and
       * reports this record in Assigned. Assigned only updates in the status after
       * the record has been checkpointed to disk. When the Kubelet is restarted,
       * it tries to make the Assigned config the Active config by loading and
       * validating the checkpointed payload identified by Assigned.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
       */
      public Builder clearAssigned() {
        bitField0_ = (bitField0_ & ~0x00000001);
        assigned_ = null;
        if (assignedBuilder_ != null) {
          assignedBuilder_.dispose();
          assignedBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Assigned reports the checkpointed config the node will try to use.
       * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
       * config payload to local disk, along with a record indicating intended
       * config. The node refers to this record to choose its config checkpoint, and
       * reports this record in Assigned. Assigned only updates in the status after
       * the record has been checkpointed to disk. When the Kubelet is restarted,
       * it tries to make the Assigned config the Active config by loading and
       * validating the checkpointed payload identified by Assigned.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConfigSource.Builder getAssignedBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getAssignedFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Assigned reports the checkpointed config the node will try to use.
       * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
       * config payload to local disk, along with a record indicating intended
       * config. The node refers to this record to choose its config checkpoint, and
       * reports this record in Assigned. Assigned only updates in the status after
       * the record has been checkpointed to disk. When the Kubelet is restarted,
       * it tries to make the Assigned config the Active config by loading and
       * validating the checkpointed payload identified by Assigned.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getAssignedOrBuilder() {
        if (assignedBuilder_ != null) {
          return assignedBuilder_.getMessageOrBuilder();
        } else {
          return assigned_ == null ?
              io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : assigned_;
        }
      }
      /**
       * <pre>
       * Assigned reports the checkpointed config the node will try to use.
       * When Node.Spec.ConfigSource is updated, the node checkpoints the associated
       * config payload to local disk, along with a record indicating intended
       * config. The node refers to this record to choose its config checkpoint, and
       * reports this record in Assigned. Assigned only updates in the status after
       * the record has been checkpointed to disk. When the Kubelet is restarted,
       * it tries to make the Assigned config the Active config by loading and
       * validating the checkpointed payload identified by Assigned.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource assigned = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder> 
          getAssignedFieldBuilder() {
        if (assignedBuilder_ == null) {
          assignedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder>(
                  getAssigned(),
                  getParentForChildren(),
                  isClean());
          assigned_ = null;
        }
        return assignedBuilder_;
      }

      private io.kubernetes.client.proto.V1.NodeConfigSource active_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder> activeBuilder_;
      /**
       * <pre>
       * Active reports the checkpointed config the node is actively using.
       * Active will represent either the current version of the Assigned config,
       * or the current LastKnownGood config, depending on whether attempting to use the
       * Assigned config results in an error.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
       * @return Whether the active field is set.
       */
      public boolean hasActive() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Active reports the checkpointed config the node is actively using.
       * Active will represent either the current version of the Assigned config,
       * or the current LastKnownGood config, depending on whether attempting to use the
       * Assigned config results in an error.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
       * @return The active.
       */
      public io.kubernetes.client.proto.V1.NodeConfigSource getActive() {
        if (activeBuilder_ == null) {
          return active_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : active_;
        } else {
          return activeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Active reports the checkpointed config the node is actively using.
       * Active will represent either the current version of the Assigned config,
       * or the current LastKnownGood config, depending on whether attempting to use the
       * Assigned config results in an error.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
       */
      public Builder setActive(io.kubernetes.client.proto.V1.NodeConfigSource value) {
        if (activeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          active_ = value;
        } else {
          activeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Active reports the checkpointed config the node is actively using.
       * Active will represent either the current version of the Assigned config,
       * or the current LastKnownGood config, depending on whether attempting to use the
       * Assigned config results in an error.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
       */
      public Builder setActive(
          io.kubernetes.client.proto.V1.NodeConfigSource.Builder builderForValue) {
        if (activeBuilder_ == null) {
          active_ = builderForValue.build();
        } else {
          activeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Active reports the checkpointed config the node is actively using.
       * Active will represent either the current version of the Assigned config,
       * or the current LastKnownGood config, depending on whether attempting to use the
       * Assigned config results in an error.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
       */
      public Builder mergeActive(io.kubernetes.client.proto.V1.NodeConfigSource value) {
        if (activeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            active_ != null &&
            active_ != io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance()) {
            getActiveBuilder().mergeFrom(value);
          } else {
            active_ = value;
          }
        } else {
          activeBuilder_.mergeFrom(value);
        }
        if (active_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Active reports the checkpointed config the node is actively using.
       * Active will represent either the current version of the Assigned config,
       * or the current LastKnownGood config, depending on whether attempting to use the
       * Assigned config results in an error.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
       */
      public Builder clearActive() {
        bitField0_ = (bitField0_ & ~0x00000002);
        active_ = null;
        if (activeBuilder_ != null) {
          activeBuilder_.dispose();
          activeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Active reports the checkpointed config the node is actively using.
       * Active will represent either the current version of the Assigned config,
       * or the current LastKnownGood config, depending on whether attempting to use the
       * Assigned config results in an error.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConfigSource.Builder getActiveBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getActiveFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Active reports the checkpointed config the node is actively using.
       * Active will represent either the current version of the Assigned config,
       * or the current LastKnownGood config, depending on whether attempting to use the
       * Assigned config results in an error.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getActiveOrBuilder() {
        if (activeBuilder_ != null) {
          return activeBuilder_.getMessageOrBuilder();
        } else {
          return active_ == null ?
              io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : active_;
        }
      }
      /**
       * <pre>
       * Active reports the checkpointed config the node is actively using.
       * Active will represent either the current version of the Assigned config,
       * or the current LastKnownGood config, depending on whether attempting to use the
       * Assigned config results in an error.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource active = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder> 
          getActiveFieldBuilder() {
        if (activeBuilder_ == null) {
          activeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder>(
                  getActive(),
                  getParentForChildren(),
                  isClean());
          active_ = null;
        }
        return activeBuilder_;
      }

      private io.kubernetes.client.proto.V1.NodeConfigSource lastKnownGood_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder> lastKnownGoodBuilder_;
      /**
       * <pre>
       * LastKnownGood reports the checkpointed config the node will fall back to
       * when it encounters an error attempting to use the Assigned config.
       * The Assigned config becomes the LastKnownGood config when the node determines
       * that the Assigned config is stable and correct.
       * This is currently implemented as a 10-minute soak period starting when the local
       * record of Assigned config is updated. If the Assigned config is Active at the end
       * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
       * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
       * because the local default config is always assumed good.
       * You should not make assumptions about the node's method of determining config stability
       * and correctness, as this may change or become configurable in the future.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
       * @return Whether the lastKnownGood field is set.
       */
      public boolean hasLastKnownGood() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * LastKnownGood reports the checkpointed config the node will fall back to
       * when it encounters an error attempting to use the Assigned config.
       * The Assigned config becomes the LastKnownGood config when the node determines
       * that the Assigned config is stable and correct.
       * This is currently implemented as a 10-minute soak period starting when the local
       * record of Assigned config is updated. If the Assigned config is Active at the end
       * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
       * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
       * because the local default config is always assumed good.
       * You should not make assumptions about the node's method of determining config stability
       * and correctness, as this may change or become configurable in the future.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
       * @return The lastKnownGood.
       */
      public io.kubernetes.client.proto.V1.NodeConfigSource getLastKnownGood() {
        if (lastKnownGoodBuilder_ == null) {
          return lastKnownGood_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : lastKnownGood_;
        } else {
          return lastKnownGoodBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * LastKnownGood reports the checkpointed config the node will fall back to
       * when it encounters an error attempting to use the Assigned config.
       * The Assigned config becomes the LastKnownGood config when the node determines
       * that the Assigned config is stable and correct.
       * This is currently implemented as a 10-minute soak period starting when the local
       * record of Assigned config is updated. If the Assigned config is Active at the end
       * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
       * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
       * because the local default config is always assumed good.
       * You should not make assumptions about the node's method of determining config stability
       * and correctness, as this may change or become configurable in the future.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
       */
      public Builder setLastKnownGood(io.kubernetes.client.proto.V1.NodeConfigSource value) {
        if (lastKnownGoodBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastKnownGood_ = value;
        } else {
          lastKnownGoodBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LastKnownGood reports the checkpointed config the node will fall back to
       * when it encounters an error attempting to use the Assigned config.
       * The Assigned config becomes the LastKnownGood config when the node determines
       * that the Assigned config is stable and correct.
       * This is currently implemented as a 10-minute soak period starting when the local
       * record of Assigned config is updated. If the Assigned config is Active at the end
       * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
       * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
       * because the local default config is always assumed good.
       * You should not make assumptions about the node's method of determining config stability
       * and correctness, as this may change or become configurable in the future.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
       */
      public Builder setLastKnownGood(
          io.kubernetes.client.proto.V1.NodeConfigSource.Builder builderForValue) {
        if (lastKnownGoodBuilder_ == null) {
          lastKnownGood_ = builderForValue.build();
        } else {
          lastKnownGoodBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LastKnownGood reports the checkpointed config the node will fall back to
       * when it encounters an error attempting to use the Assigned config.
       * The Assigned config becomes the LastKnownGood config when the node determines
       * that the Assigned config is stable and correct.
       * This is currently implemented as a 10-minute soak period starting when the local
       * record of Assigned config is updated. If the Assigned config is Active at the end
       * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
       * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
       * because the local default config is always assumed good.
       * You should not make assumptions about the node's method of determining config stability
       * and correctness, as this may change or become configurable in the future.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
       */
      public Builder mergeLastKnownGood(io.kubernetes.client.proto.V1.NodeConfigSource value) {
        if (lastKnownGoodBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            lastKnownGood_ != null &&
            lastKnownGood_ != io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance()) {
            getLastKnownGoodBuilder().mergeFrom(value);
          } else {
            lastKnownGood_ = value;
          }
        } else {
          lastKnownGoodBuilder_.mergeFrom(value);
        }
        if (lastKnownGood_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * LastKnownGood reports the checkpointed config the node will fall back to
       * when it encounters an error attempting to use the Assigned config.
       * The Assigned config becomes the LastKnownGood config when the node determines
       * that the Assigned config is stable and correct.
       * This is currently implemented as a 10-minute soak period starting when the local
       * record of Assigned config is updated. If the Assigned config is Active at the end
       * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
       * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
       * because the local default config is always assumed good.
       * You should not make assumptions about the node's method of determining config stability
       * and correctness, as this may change or become configurable in the future.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
       */
      public Builder clearLastKnownGood() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lastKnownGood_ = null;
        if (lastKnownGoodBuilder_ != null) {
          lastKnownGoodBuilder_.dispose();
          lastKnownGoodBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LastKnownGood reports the checkpointed config the node will fall back to
       * when it encounters an error attempting to use the Assigned config.
       * The Assigned config becomes the LastKnownGood config when the node determines
       * that the Assigned config is stable and correct.
       * This is currently implemented as a 10-minute soak period starting when the local
       * record of Assigned config is updated. If the Assigned config is Active at the end
       * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
       * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
       * because the local default config is always assumed good.
       * You should not make assumptions about the node's method of determining config stability
       * and correctness, as this may change or become configurable in the future.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConfigSource.Builder getLastKnownGoodBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getLastKnownGoodFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * LastKnownGood reports the checkpointed config the node will fall back to
       * when it encounters an error attempting to use the Assigned config.
       * The Assigned config becomes the LastKnownGood config when the node determines
       * that the Assigned config is stable and correct.
       * This is currently implemented as a 10-minute soak period starting when the local
       * record of Assigned config is updated. If the Assigned config is Active at the end
       * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
       * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
       * because the local default config is always assumed good.
       * You should not make assumptions about the node's method of determining config stability
       * and correctness, as this may change or become configurable in the future.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getLastKnownGoodOrBuilder() {
        if (lastKnownGoodBuilder_ != null) {
          return lastKnownGoodBuilder_.getMessageOrBuilder();
        } else {
          return lastKnownGood_ == null ?
              io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : lastKnownGood_;
        }
      }
      /**
       * <pre>
       * LastKnownGood reports the checkpointed config the node will fall back to
       * when it encounters an error attempting to use the Assigned config.
       * The Assigned config becomes the LastKnownGood config when the node determines
       * that the Assigned config is stable and correct.
       * This is currently implemented as a 10-minute soak period starting when the local
       * record of Assigned config is updated. If the Assigned config is Active at the end
       * of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
       * reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
       * because the local default config is always assumed good.
       * You should not make assumptions about the node's method of determining config stability
       * and correctness, as this may change or become configurable in the future.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource lastKnownGood = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder> 
          getLastKnownGoodFieldBuilder() {
        if (lastKnownGoodBuilder_ == null) {
          lastKnownGoodBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder>(
                  getLastKnownGood(),
                  getParentForChildren(),
                  isClean());
          lastKnownGood_ = null;
        }
        return lastKnownGoodBuilder_;
      }

      private java.lang.Object error_ = "";
      /**
       * <pre>
       * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
       * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
       * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
       * to load or validate the Assigned config, etc.
       * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
       * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
       * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
       * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
       * by fixing the config assigned in Spec.ConfigSource.
       * You can find additional information for debugging by searching the error message in the Kubelet log.
       * Error is a human-readable description of the error state; machines can check whether or not Error
       * is empty, but should not rely on the stability of the Error text across Kubelet versions.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @return Whether the error field is set.
       */
      public boolean hasError() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
       * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
       * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
       * to load or validate the Assigned config, etc.
       * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
       * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
       * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
       * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
       * by fixing the config assigned in Spec.ConfigSource.
       * You can find additional information for debugging by searching the error message in the Kubelet log.
       * Error is a human-readable description of the error state; machines can check whether or not Error
       * is empty, but should not rely on the stability of the Error text across Kubelet versions.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @return The error.
       */
      public java.lang.String getError() {
        java.lang.Object ref = error_;
        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()) {
            error_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
       * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
       * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
       * to load or validate the Assigned config, etc.
       * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
       * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
       * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
       * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
       * by fixing the config assigned in Spec.ConfigSource.
       * You can find additional information for debugging by searching the error message in the Kubelet log.
       * Error is a human-readable description of the error state; machines can check whether or not Error
       * is empty, but should not rely on the stability of the Error text across Kubelet versions.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @return The bytes for error.
       */
      public com.google.protobuf.ByteString
          getErrorBytes() {
        java.lang.Object ref = error_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          error_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
       * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
       * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
       * to load or validate the Assigned config, etc.
       * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
       * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
       * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
       * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
       * by fixing the config assigned in Spec.ConfigSource.
       * You can find additional information for debugging by searching the error message in the Kubelet log.
       * Error is a human-readable description of the error state; machines can check whether or not Error
       * is empty, but should not rely on the stability of the Error text across Kubelet versions.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @param value The error to set.
       * @return This builder for chaining.
       */
      public Builder setError(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        error_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
       * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
       * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
       * to load or validate the Assigned config, etc.
       * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
       * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
       * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
       * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
       * by fixing the config assigned in Spec.ConfigSource.
       * You can find additional information for debugging by searching the error message in the Kubelet log.
       * Error is a human-readable description of the error state; machines can check whether or not Error
       * is empty, but should not rely on the stability of the Error text across Kubelet versions.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearError() {
        error_ = getDefaultInstance().getError();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Error describes any problems reconciling the Spec.ConfigSource to the Active config.
       * Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
       * record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
       * to load or validate the Assigned config, etc.
       * Errors may occur at different points while syncing config. Earlier errors (e.g. download or
       * checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
       * Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
       * a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
       * by fixing the config assigned in Spec.ConfigSource.
       * You can find additional information for debugging by searching the error message in the Kubelet log.
       * Error is a human-readable description of the error state; machines can check whether or not Error
       * is empty, but should not rely on the stability of the Error text across Kubelet versions.
       * +optional
       * </pre>
       *
       * <code>optional string error = 4;</code>
       * @param value The bytes for error to set.
       * @return This builder for chaining.
       */
      public Builder setErrorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        error_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeConfigStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeConfigStatus)
    private static final io.kubernetes.client.proto.V1.NodeConfigStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeConfigStatus();
    }

    public static io.kubernetes.client.proto.V1.NodeConfigStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeConfigStatus>
        PARSER = new com.google.protobuf.AbstractParser<NodeConfigStatus>() {
      @java.lang.Override
      public NodeConfigStatus 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<NodeConfigStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeConfigStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeDaemonEndpointsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeDaemonEndpoints)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Endpoint on which Kubelet is listening.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
     * @return Whether the kubeletEndpoint field is set.
     */
    boolean hasKubeletEndpoint();
    /**
     * <pre>
     * Endpoint on which Kubelet is listening.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
     * @return The kubeletEndpoint.
     */
    io.kubernetes.client.proto.V1.DaemonEndpoint getKubeletEndpoint();
    /**
     * <pre>
     * Endpoint on which Kubelet is listening.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
     */
    io.kubernetes.client.proto.V1.DaemonEndpointOrBuilder getKubeletEndpointOrBuilder();
  }
  /**
   * <pre>
   * NodeDaemonEndpoints lists ports opened by daemons running on the Node.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeDaemonEndpoints}
   */
  public static final class NodeDaemonEndpoints extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeDaemonEndpoints)
      NodeDaemonEndpointsOrBuilder {
  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= */ "",
        NodeDaemonEndpoints.class.getName());
    }
    // Use NodeDaemonEndpoints.newBuilder() to construct.
    private NodeDaemonEndpoints(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeDaemonEndpoints() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeDaemonEndpoints_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeDaemonEndpoints_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeDaemonEndpoints.class, io.kubernetes.client.proto.V1.NodeDaemonEndpoints.Builder.class);
    }

    private int bitField0_;
    public static final int KUBELETENDPOINT_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.DaemonEndpoint kubeletEndpoint_;
    /**
     * <pre>
     * Endpoint on which Kubelet is listening.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
     * @return Whether the kubeletEndpoint field is set.
     */
    @java.lang.Override
    public boolean hasKubeletEndpoint() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Endpoint on which Kubelet is listening.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
     * @return The kubeletEndpoint.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.DaemonEndpoint getKubeletEndpoint() {
      return kubeletEndpoint_ == null ? io.kubernetes.client.proto.V1.DaemonEndpoint.getDefaultInstance() : kubeletEndpoint_;
    }
    /**
     * <pre>
     * Endpoint on which Kubelet is listening.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.DaemonEndpointOrBuilder getKubeletEndpointOrBuilder() {
      return kubeletEndpoint_ == null ? io.kubernetes.client.proto.V1.DaemonEndpoint.getDefaultInstance() : kubeletEndpoint_;
    }

    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, getKubeletEndpoint());
      }
      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, getKubeletEndpoint());
      }
      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.V1.NodeDaemonEndpoints)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeDaemonEndpoints other = (io.kubernetes.client.proto.V1.NodeDaemonEndpoints) obj;

      if (hasKubeletEndpoint() != other.hasKubeletEndpoint()) return false;
      if (hasKubeletEndpoint()) {
        if (!getKubeletEndpoint()
            .equals(other.getKubeletEndpoint())) 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 (hasKubeletEndpoint()) {
        hash = (37 * hash) + KUBELETENDPOINT_FIELD_NUMBER;
        hash = (53 * hash) + getKubeletEndpoint().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeDaemonEndpoints parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeDaemonEndpoints 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.V1.NodeDaemonEndpoints parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeDaemonEndpoints 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.V1.NodeDaemonEndpoints parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeDaemonEndpoints parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeDaemonEndpoints parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeDaemonEndpoints 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.V1.NodeDaemonEndpoints parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeDaemonEndpoints 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.V1.NodeDaemonEndpoints parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeDaemonEndpoints 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.V1.NodeDaemonEndpoints 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>
     * NodeDaemonEndpoints lists ports opened by daemons running on the Node.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeDaemonEndpoints}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeDaemonEndpoints)
        io.kubernetes.client.proto.V1.NodeDaemonEndpointsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeDaemonEndpoints_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeDaemonEndpoints_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeDaemonEndpoints.class, io.kubernetes.client.proto.V1.NodeDaemonEndpoints.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeDaemonEndpoints.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getKubeletEndpointFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        kubeletEndpoint_ = null;
        if (kubeletEndpointBuilder_ != null) {
          kubeletEndpointBuilder_.dispose();
          kubeletEndpointBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeDaemonEndpoints_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeDaemonEndpoints getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeDaemonEndpoints.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeDaemonEndpoints build() {
        io.kubernetes.client.proto.V1.NodeDaemonEndpoints result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeDaemonEndpoints buildPartial() {
        io.kubernetes.client.proto.V1.NodeDaemonEndpoints result = new io.kubernetes.client.proto.V1.NodeDaemonEndpoints(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeDaemonEndpoints result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.kubeletEndpoint_ = kubeletEndpointBuilder_ == null
              ? kubeletEndpoint_
              : kubeletEndpointBuilder_.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.V1.NodeDaemonEndpoints) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeDaemonEndpoints)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeDaemonEndpoints other) {
        if (other == io.kubernetes.client.proto.V1.NodeDaemonEndpoints.getDefaultInstance()) return this;
        if (other.hasKubeletEndpoint()) {
          mergeKubeletEndpoint(other.getKubeletEndpoint());
        }
        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(
                    getKubeletEndpointFieldBuilder().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.V1.DaemonEndpoint kubeletEndpoint_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.DaemonEndpoint, io.kubernetes.client.proto.V1.DaemonEndpoint.Builder, io.kubernetes.client.proto.V1.DaemonEndpointOrBuilder> kubeletEndpointBuilder_;
      /**
       * <pre>
       * Endpoint on which Kubelet is listening.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
       * @return Whether the kubeletEndpoint field is set.
       */
      public boolean hasKubeletEndpoint() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Endpoint on which Kubelet is listening.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
       * @return The kubeletEndpoint.
       */
      public io.kubernetes.client.proto.V1.DaemonEndpoint getKubeletEndpoint() {
        if (kubeletEndpointBuilder_ == null) {
          return kubeletEndpoint_ == null ? io.kubernetes.client.proto.V1.DaemonEndpoint.getDefaultInstance() : kubeletEndpoint_;
        } else {
          return kubeletEndpointBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Endpoint on which Kubelet is listening.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
       */
      public Builder setKubeletEndpoint(io.kubernetes.client.proto.V1.DaemonEndpoint value) {
        if (kubeletEndpointBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          kubeletEndpoint_ = value;
        } else {
          kubeletEndpointBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Endpoint on which Kubelet is listening.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
       */
      public Builder setKubeletEndpoint(
          io.kubernetes.client.proto.V1.DaemonEndpoint.Builder builderForValue) {
        if (kubeletEndpointBuilder_ == null) {
          kubeletEndpoint_ = builderForValue.build();
        } else {
          kubeletEndpointBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Endpoint on which Kubelet is listening.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
       */
      public Builder mergeKubeletEndpoint(io.kubernetes.client.proto.V1.DaemonEndpoint value) {
        if (kubeletEndpointBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            kubeletEndpoint_ != null &&
            kubeletEndpoint_ != io.kubernetes.client.proto.V1.DaemonEndpoint.getDefaultInstance()) {
            getKubeletEndpointBuilder().mergeFrom(value);
          } else {
            kubeletEndpoint_ = value;
          }
        } else {
          kubeletEndpointBuilder_.mergeFrom(value);
        }
        if (kubeletEndpoint_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Endpoint on which Kubelet is listening.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
       */
      public Builder clearKubeletEndpoint() {
        bitField0_ = (bitField0_ & ~0x00000001);
        kubeletEndpoint_ = null;
        if (kubeletEndpointBuilder_ != null) {
          kubeletEndpointBuilder_.dispose();
          kubeletEndpointBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Endpoint on which Kubelet is listening.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DaemonEndpoint.Builder getKubeletEndpointBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getKubeletEndpointFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Endpoint on which Kubelet is listening.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
       */
      public io.kubernetes.client.proto.V1.DaemonEndpointOrBuilder getKubeletEndpointOrBuilder() {
        if (kubeletEndpointBuilder_ != null) {
          return kubeletEndpointBuilder_.getMessageOrBuilder();
        } else {
          return kubeletEndpoint_ == null ?
              io.kubernetes.client.proto.V1.DaemonEndpoint.getDefaultInstance() : kubeletEndpoint_;
        }
      }
      /**
       * <pre>
       * Endpoint on which Kubelet is listening.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DaemonEndpoint kubeletEndpoint = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.DaemonEndpoint, io.kubernetes.client.proto.V1.DaemonEndpoint.Builder, io.kubernetes.client.proto.V1.DaemonEndpointOrBuilder> 
          getKubeletEndpointFieldBuilder() {
        if (kubeletEndpointBuilder_ == null) {
          kubeletEndpointBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.DaemonEndpoint, io.kubernetes.client.proto.V1.DaemonEndpoint.Builder, io.kubernetes.client.proto.V1.DaemonEndpointOrBuilder>(
                  getKubeletEndpoint(),
                  getParentForChildren(),
                  isClean());
          kubeletEndpoint_ = null;
        }
        return kubeletEndpointBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeDaemonEndpoints)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeDaemonEndpoints)
    private static final io.kubernetes.client.proto.V1.NodeDaemonEndpoints DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeDaemonEndpoints();
    }

    public static io.kubernetes.client.proto.V1.NodeDaemonEndpoints getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeDaemonEndpoints>
        PARSER = new com.google.protobuf.AbstractParser<NodeDaemonEndpoints>() {
      @java.lang.Override
      public NodeDaemonEndpoints 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<NodeDaemonEndpoints> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeDaemonEndpoints> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeDaemonEndpoints getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * List of nodes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Node> 
        getItemsList();
    /**
     * <pre>
     * List of nodes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
     */
    io.kubernetes.client.proto.V1.Node getItems(int index);
    /**
     * <pre>
     * List of nodes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * List of nodes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.NodeOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * List of nodes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
     */
    io.kubernetes.client.proto.V1.NodeOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * NodeList is the whole list of all Nodes which have been registered with master.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeList}
   */
  public static final class NodeList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeList)
      NodeListOrBuilder {
  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= */ "",
        NodeList.class.getName());
    }
    // Use NodeList.newBuilder() to construct.
    private NodeList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeList.class, io.kubernetes.client.proto.V1.NodeList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.Node> items_;
    /**
     * <pre>
     * List of nodes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Node> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * List of nodes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.NodeOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * List of nodes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * List of nodes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Node getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * List of nodes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeOrBuilder 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.V1.NodeList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeList other = (io.kubernetes.client.proto.V1.NodeList) 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.V1.NodeList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeList 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.V1.NodeList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeList 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.V1.NodeList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeList 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.V1.NodeList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeList 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.V1.NodeList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeList 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.V1.NodeList 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>
     * NodeList is the whole list of all Nodes which have been registered with master.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeList)
        io.kubernetes.client.proto.V1.NodeListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeList.class, io.kubernetes.client.proto.V1.NodeList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeList.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.V1.internal_static_k8s_io_api_core_v1_NodeList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeList build() {
        io.kubernetes.client.proto.V1.NodeList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeList buildPartial() {
        io.kubernetes.client.proto.V1.NodeList result = new io.kubernetes.client.proto.V1.NodeList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.NodeList 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.V1.NodeList 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.V1.NodeList) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeList other) {
        if (other == io.kubernetes.client.proto.V1.NodeList.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.V1.Node m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Node.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.Node> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Node>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Node, io.kubernetes.client.proto.V1.Node.Builder, io.kubernetes.client.proto.V1.NodeOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Node> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Node getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.Node value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.Node.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.Node value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.Node value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.Node.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.Node.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Node> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Node.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.NodeOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Node.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Node.getDefaultInstance());
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Node.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Node.getDefaultInstance());
      }
      /**
       * <pre>
       * List of nodes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Node items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Node.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Node, io.kubernetes.client.proto.V1.Node.Builder, io.kubernetes.client.proto.V1.NodeOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Node, io.kubernetes.client.proto.V1.Node.Builder, io.kubernetes.client.proto.V1.NodeOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeList)
    private static final io.kubernetes.client.proto.V1.NodeList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeList();
    }

    public static io.kubernetes.client.proto.V1.NodeList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeList>
        PARSER = new com.google.protobuf.AbstractParser<NodeList>() {
      @java.lang.Override
      public NodeList 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<NodeList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeProxyOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeProxyOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Path is the URL path to use for the current proxy request to node.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * Path is the URL path to use for the current proxy request to node.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Path is the URL path to use for the current proxy request to node.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();
  }
  /**
   * <pre>
   * NodeProxyOptions is the query options to a Node's proxy call.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeProxyOptions}
   */
  public static final class NodeProxyOptions extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeProxyOptions)
      NodeProxyOptionsOrBuilder {
  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= */ "",
        NodeProxyOptions.class.getName());
    }
    // Use NodeProxyOptions.newBuilder() to construct.
    private NodeProxyOptions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeProxyOptions() {
      path_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeProxyOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeProxyOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeProxyOptions.class, io.kubernetes.client.proto.V1.NodeProxyOptions.Builder.class);
    }

    private int bitField0_;
    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * Path is the URL path to use for the current proxy request to node.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Path is the URL path to use for the current proxy request to node.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</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 the URL path to use for the current proxy request to node.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</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;
      }
    }

    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, path_);
      }
      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, path_);
      }
      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.V1.NodeProxyOptions)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeProxyOptions other = (io.kubernetes.client.proto.V1.NodeProxyOptions) obj;

      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) 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 (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeProxyOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeProxyOptions 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.V1.NodeProxyOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeProxyOptions 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.V1.NodeProxyOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeProxyOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeProxyOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeProxyOptions 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.V1.NodeProxyOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeProxyOptions 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.V1.NodeProxyOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeProxyOptions 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.V1.NodeProxyOptions 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>
     * NodeProxyOptions is the query options to a Node's proxy call.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeProxyOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeProxyOptions)
        io.kubernetes.client.proto.V1.NodeProxyOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeProxyOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeProxyOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeProxyOptions.class, io.kubernetes.client.proto.V1.NodeProxyOptions.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeProxyOptions.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeProxyOptions_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeProxyOptions getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeProxyOptions.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeProxyOptions build() {
        io.kubernetes.client.proto.V1.NodeProxyOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeProxyOptions buildPartial() {
        io.kubernetes.client.proto.V1.NodeProxyOptions result = new io.kubernetes.client.proto.V1.NodeProxyOptions(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeProxyOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
          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.V1.NodeProxyOptions) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeProxyOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeProxyOptions other) {
        if (other == io.kubernetes.client.proto.V1.NodeProxyOptions.getDefaultInstance()) return this;
        if (other.hasPath()) {
          path_ = other.path_;
          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: {
                path_ = 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 path_ = "";
      /**
       * <pre>
       * Path is the URL path to use for the current proxy request to node.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Path is the URL path to use for the current proxy request to node.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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 the URL path to use for the current proxy request to node.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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 the URL path to use for the current proxy request to node.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path is the URL path to use for the current proxy request to node.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path is the URL path to use for the current proxy request to node.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeProxyOptions)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeProxyOptions)
    private static final io.kubernetes.client.proto.V1.NodeProxyOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeProxyOptions();
    }

    public static io.kubernetes.client.proto.V1.NodeProxyOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeProxyOptions>
        PARSER = new com.google.protobuf.AbstractParser<NodeProxyOptions>() {
      @java.lang.Override
      public NodeProxyOptions 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<NodeProxyOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeProxyOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeProxyOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeRuntimeHandlerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeRuntimeHandler)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Runtime handler name.
     * Empty for the default runtime handler.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Runtime handler name.
     * Empty for the default runtime handler.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Runtime handler name.
     * Empty for the default runtime handler.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Supported features.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
     * @return Whether the features field is set.
     */
    boolean hasFeatures();
    /**
     * <pre>
     * Supported features.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
     * @return The features.
     */
    io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures getFeatures();
    /**
     * <pre>
     * Supported features.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
     */
    io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeaturesOrBuilder getFeaturesOrBuilder();
  }
  /**
   * <pre>
   * NodeRuntimeHandler is a set of runtime handler information.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeRuntimeHandler}
   */
  public static final class NodeRuntimeHandler extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeRuntimeHandler)
      NodeRuntimeHandlerOrBuilder {
  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= */ "",
        NodeRuntimeHandler.class.getName());
    }
    // Use NodeRuntimeHandler.newBuilder() to construct.
    private NodeRuntimeHandler(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeRuntimeHandler() {
      name_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeRuntimeHandler_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeRuntimeHandler_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeRuntimeHandler.class, io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Runtime handler name.
     * Empty for the default runtime handler.
     * +optional
     * </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>
     * Runtime handler name.
     * Empty for the default runtime handler.
     * +optional
     * </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>
     * Runtime handler name.
     * Empty for the default runtime handler.
     * +optional
     * </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 FEATURES_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures features_;
    /**
     * <pre>
     * Supported features.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
     * @return Whether the features field is set.
     */
    @java.lang.Override
    public boolean hasFeatures() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Supported features.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
     * @return The features.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures getFeatures() {
      return features_ == null ? io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.getDefaultInstance() : features_;
    }
    /**
     * <pre>
     * Supported features.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeaturesOrBuilder getFeaturesOrBuilder() {
      return features_ == null ? io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.getDefaultInstance() : features_;
    }

    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.writeMessage(2, getFeatures());
      }
      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
          .computeMessageSize(2, getFeatures());
      }
      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.V1.NodeRuntimeHandler)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeRuntimeHandler other = (io.kubernetes.client.proto.V1.NodeRuntimeHandler) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasFeatures() != other.hasFeatures()) return false;
      if (hasFeatures()) {
        if (!getFeatures()
            .equals(other.getFeatures())) 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 (hasFeatures()) {
        hash = (37 * hash) + FEATURES_FIELD_NUMBER;
        hash = (53 * hash) + getFeatures().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeRuntimeHandler parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandler 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.V1.NodeRuntimeHandler parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandler 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.V1.NodeRuntimeHandler parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandler parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandler parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandler 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.V1.NodeRuntimeHandler parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeRuntimeHandler 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.V1.NodeRuntimeHandler parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandler 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.V1.NodeRuntimeHandler 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>
     * NodeRuntimeHandler is a set of runtime handler information.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeRuntimeHandler}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeRuntimeHandler)
        io.kubernetes.client.proto.V1.NodeRuntimeHandlerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeRuntimeHandler_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeRuntimeHandler_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeRuntimeHandler.class, io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeRuntimeHandler.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getFeaturesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        features_ = null;
        if (featuresBuilder_ != null) {
          featuresBuilder_.dispose();
          featuresBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeRuntimeHandler_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeRuntimeHandler getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeRuntimeHandler.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeRuntimeHandler build() {
        io.kubernetes.client.proto.V1.NodeRuntimeHandler result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeRuntimeHandler buildPartial() {
        io.kubernetes.client.proto.V1.NodeRuntimeHandler result = new io.kubernetes.client.proto.V1.NodeRuntimeHandler(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeRuntimeHandler 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.features_ = featuresBuilder_ == null
              ? features_
              : featuresBuilder_.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.V1.NodeRuntimeHandler) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeRuntimeHandler)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeRuntimeHandler other) {
        if (other == io.kubernetes.client.proto.V1.NodeRuntimeHandler.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFeatures()) {
          mergeFeatures(other.getFeatures());
        }
        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: {
                input.readMessage(
                    getFeaturesFieldBuilder().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 java.lang.Object name_ = "";
      /**
       * <pre>
       * Runtime handler name.
       * Empty for the default runtime handler.
       * +optional
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Runtime handler name.
       * Empty for the default runtime handler.
       * +optional
       * </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>
       * Runtime handler name.
       * Empty for the default runtime handler.
       * +optional
       * </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>
       * Runtime handler name.
       * Empty for the default runtime handler.
       * +optional
       * </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>
       * Runtime handler name.
       * Empty for the default runtime handler.
       * +optional
       * </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>
       * Runtime handler name.
       * Empty for the default runtime handler.
       * +optional
       * </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 io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures features_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures, io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.Builder, io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeaturesOrBuilder> featuresBuilder_;
      /**
       * <pre>
       * Supported features.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
       * @return Whether the features field is set.
       */
      public boolean hasFeatures() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Supported features.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
       * @return The features.
       */
      public io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures getFeatures() {
        if (featuresBuilder_ == null) {
          return features_ == null ? io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.getDefaultInstance() : features_;
        } else {
          return featuresBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Supported features.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
       */
      public Builder setFeatures(io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures value) {
        if (featuresBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          features_ = value;
        } else {
          featuresBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Supported features.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
       */
      public Builder setFeatures(
          io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.Builder builderForValue) {
        if (featuresBuilder_ == null) {
          features_ = builderForValue.build();
        } else {
          featuresBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Supported features.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
       */
      public Builder mergeFeatures(io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures value) {
        if (featuresBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            features_ != null &&
            features_ != io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.getDefaultInstance()) {
            getFeaturesBuilder().mergeFrom(value);
          } else {
            features_ = value;
          }
        } else {
          featuresBuilder_.mergeFrom(value);
        }
        if (features_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Supported features.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
       */
      public Builder clearFeatures() {
        bitField0_ = (bitField0_ & ~0x00000002);
        features_ = null;
        if (featuresBuilder_ != null) {
          featuresBuilder_.dispose();
          featuresBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Supported features.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.Builder getFeaturesBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getFeaturesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Supported features.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeaturesOrBuilder getFeaturesOrBuilder() {
        if (featuresBuilder_ != null) {
          return featuresBuilder_.getMessageOrBuilder();
        } else {
          return features_ == null ?
              io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.getDefaultInstance() : features_;
        }
      }
      /**
       * <pre>
       * Supported features.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeRuntimeHandlerFeatures features = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures, io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.Builder, io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeaturesOrBuilder> 
          getFeaturesFieldBuilder() {
        if (featuresBuilder_ == null) {
          featuresBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures, io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.Builder, io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeaturesOrBuilder>(
                  getFeatures(),
                  getParentForChildren(),
                  isClean());
          features_ = null;
        }
        return featuresBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeRuntimeHandler)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeRuntimeHandler)
    private static final io.kubernetes.client.proto.V1.NodeRuntimeHandler DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeRuntimeHandler();
    }

    public static io.kubernetes.client.proto.V1.NodeRuntimeHandler getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeRuntimeHandler>
        PARSER = new com.google.protobuf.AbstractParser<NodeRuntimeHandler>() {
      @java.lang.Override
      public NodeRuntimeHandler 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<NodeRuntimeHandler> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeRuntimeHandler> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeRuntimeHandler getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeRuntimeHandlerFeaturesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeRuntimeHandlerFeatures)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional bool recursiveReadOnlyMounts = 1;</code>
     * @return Whether the recursiveReadOnlyMounts field is set.
     */
    boolean hasRecursiveReadOnlyMounts();
    /**
     * <pre>
     * RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional bool recursiveReadOnlyMounts = 1;</code>
     * @return The recursiveReadOnlyMounts.
     */
    boolean getRecursiveReadOnlyMounts();
  }
  /**
   * <pre>
   * NodeRuntimeHandlerFeatures is a set of runtime features.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeRuntimeHandlerFeatures}
   */
  public static final class NodeRuntimeHandlerFeatures extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeRuntimeHandlerFeatures)
      NodeRuntimeHandlerFeaturesOrBuilder {
  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= */ "",
        NodeRuntimeHandlerFeatures.class.getName());
    }
    // Use NodeRuntimeHandlerFeatures.newBuilder() to construct.
    private NodeRuntimeHandlerFeatures(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeRuntimeHandlerFeatures() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeRuntimeHandlerFeatures_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeRuntimeHandlerFeatures_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.class, io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.Builder.class);
    }

    private int bitField0_;
    public static final int RECURSIVEREADONLYMOUNTS_FIELD_NUMBER = 1;
    private boolean recursiveReadOnlyMounts_ = false;
    /**
     * <pre>
     * RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional bool recursiveReadOnlyMounts = 1;</code>
     * @return Whether the recursiveReadOnlyMounts field is set.
     */
    @java.lang.Override
    public boolean hasRecursiveReadOnlyMounts() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional bool recursiveReadOnlyMounts = 1;</code>
     * @return The recursiveReadOnlyMounts.
     */
    @java.lang.Override
    public boolean getRecursiveReadOnlyMounts() {
      return recursiveReadOnlyMounts_;
    }

    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, recursiveReadOnlyMounts_);
      }
      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, recursiveReadOnlyMounts_);
      }
      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.V1.NodeRuntimeHandlerFeatures)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures other = (io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures) obj;

      if (hasRecursiveReadOnlyMounts() != other.hasRecursiveReadOnlyMounts()) return false;
      if (hasRecursiveReadOnlyMounts()) {
        if (getRecursiveReadOnlyMounts()
            != other.getRecursiveReadOnlyMounts()) 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 (hasRecursiveReadOnlyMounts()) {
        hash = (37 * hash) + RECURSIVEREADONLYMOUNTS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getRecursiveReadOnlyMounts());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures 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.V1.NodeRuntimeHandlerFeatures parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures 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.V1.NodeRuntimeHandlerFeatures parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures 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.V1.NodeRuntimeHandlerFeatures parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures 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.V1.NodeRuntimeHandlerFeatures parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures 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.V1.NodeRuntimeHandlerFeatures 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>
     * NodeRuntimeHandlerFeatures is a set of runtime features.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeRuntimeHandlerFeatures}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeRuntimeHandlerFeatures)
        io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeaturesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeRuntimeHandlerFeatures_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeRuntimeHandlerFeatures_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.class, io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        recursiveReadOnlyMounts_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeRuntimeHandlerFeatures_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures build() {
        io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures buildPartial() {
        io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures result = new io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.recursiveReadOnlyMounts_ = recursiveReadOnlyMounts_;
          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.V1.NodeRuntimeHandlerFeatures) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures other) {
        if (other == io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures.getDefaultInstance()) return this;
        if (other.hasRecursiveReadOnlyMounts()) {
          setRecursiveReadOnlyMounts(other.getRecursiveReadOnlyMounts());
        }
        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: {
                recursiveReadOnlyMounts_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private boolean recursiveReadOnlyMounts_ ;
      /**
       * <pre>
       * RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional bool recursiveReadOnlyMounts = 1;</code>
       * @return Whether the recursiveReadOnlyMounts field is set.
       */
      @java.lang.Override
      public boolean hasRecursiveReadOnlyMounts() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional bool recursiveReadOnlyMounts = 1;</code>
       * @return The recursiveReadOnlyMounts.
       */
      @java.lang.Override
      public boolean getRecursiveReadOnlyMounts() {
        return recursiveReadOnlyMounts_;
      }
      /**
       * <pre>
       * RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional bool recursiveReadOnlyMounts = 1;</code>
       * @param value The recursiveReadOnlyMounts to set.
       * @return This builder for chaining.
       */
      public Builder setRecursiveReadOnlyMounts(boolean value) {

        recursiveReadOnlyMounts_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional bool recursiveReadOnlyMounts = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRecursiveReadOnlyMounts() {
        bitField0_ = (bitField0_ & ~0x00000001);
        recursiveReadOnlyMounts_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeRuntimeHandlerFeatures)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeRuntimeHandlerFeatures)
    private static final io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures();
    }

    public static io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeRuntimeHandlerFeatures>
        PARSER = new com.google.protobuf.AbstractParser<NodeRuntimeHandlerFeatures>() {
      @java.lang.Override
      public NodeRuntimeHandlerFeatures 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<NodeRuntimeHandlerFeatures> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeRuntimeHandlerFeatures> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeRuntimeHandlerFeatures getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeSelectorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeSelector)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required. A list of node selector terms. The terms are ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.NodeSelectorTerm> 
        getNodeSelectorTermsList();
    /**
     * <pre>
     * Required. A list of node selector terms. The terms are ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
     */
    io.kubernetes.client.proto.V1.NodeSelectorTerm getNodeSelectorTerms(int index);
    /**
     * <pre>
     * Required. A list of node selector terms. The terms are ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
     */
    int getNodeSelectorTermsCount();
    /**
     * <pre>
     * Required. A list of node selector terms. The terms are ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder> 
        getNodeSelectorTermsOrBuilderList();
    /**
     * <pre>
     * Required. A list of node selector terms. The terms are ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
     */
    io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder getNodeSelectorTermsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A node selector represents the union of the results of one or more label queries
   * over a set of nodes; that is, it represents the OR of the selectors represented
   * by the node selector terms.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeSelector}
   */
  public static final class NodeSelector extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeSelector)
      NodeSelectorOrBuilder {
  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= */ "",
        NodeSelector.class.getName());
    }
    // Use NodeSelector.newBuilder() to construct.
    private NodeSelector(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeSelector() {
      nodeSelectorTerms_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelector_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelector_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeSelector.class, io.kubernetes.client.proto.V1.NodeSelector.Builder.class);
    }

    public static final int NODESELECTORTERMS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.NodeSelectorTerm> nodeSelectorTerms_;
    /**
     * <pre>
     * Required. A list of node selector terms. The terms are ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.NodeSelectorTerm> getNodeSelectorTermsList() {
      return nodeSelectorTerms_;
    }
    /**
     * <pre>
     * Required. A list of node selector terms. The terms are ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder> 
        getNodeSelectorTermsOrBuilderList() {
      return nodeSelectorTerms_;
    }
    /**
     * <pre>
     * Required. A list of node selector terms. The terms are ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
     */
    @java.lang.Override
    public int getNodeSelectorTermsCount() {
      return nodeSelectorTerms_.size();
    }
    /**
     * <pre>
     * Required. A list of node selector terms. The terms are ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorTerm getNodeSelectorTerms(int index) {
      return nodeSelectorTerms_.get(index);
    }
    /**
     * <pre>
     * Required. A list of node selector terms. The terms are ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder getNodeSelectorTermsOrBuilder(
        int index) {
      return nodeSelectorTerms_.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 {
      for (int i = 0; i < nodeSelectorTerms_.size(); i++) {
        output.writeMessage(1, nodeSelectorTerms_.get(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 < nodeSelectorTerms_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, nodeSelectorTerms_.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.V1.NodeSelector)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeSelector other = (io.kubernetes.client.proto.V1.NodeSelector) obj;

      if (!getNodeSelectorTermsList()
          .equals(other.getNodeSelectorTermsList())) 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 (getNodeSelectorTermsCount() > 0) {
        hash = (37 * hash) + NODESELECTORTERMS_FIELD_NUMBER;
        hash = (53 * hash) + getNodeSelectorTermsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeSelector parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSelector 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.V1.NodeSelector parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSelector 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.V1.NodeSelector parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSelector parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeSelector parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeSelector 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.V1.NodeSelector parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeSelector 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.V1.NodeSelector parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeSelector 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.V1.NodeSelector 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>
     * A node selector represents the union of the results of one or more label queries
     * over a set of nodes; that is, it represents the OR of the selectors represented
     * by the node selector terms.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeSelector}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeSelector)
        io.kubernetes.client.proto.V1.NodeSelectorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelector_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelector_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeSelector.class, io.kubernetes.client.proto.V1.NodeSelector.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeSelector.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (nodeSelectorTermsBuilder_ == null) {
          nodeSelectorTerms_ = java.util.Collections.emptyList();
        } else {
          nodeSelectorTerms_ = null;
          nodeSelectorTermsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelector_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSelector getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSelector build() {
        io.kubernetes.client.proto.V1.NodeSelector result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSelector buildPartial() {
        io.kubernetes.client.proto.V1.NodeSelector result = new io.kubernetes.client.proto.V1.NodeSelector(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.NodeSelector result) {
        if (nodeSelectorTermsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            nodeSelectorTerms_ = java.util.Collections.unmodifiableList(nodeSelectorTerms_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.nodeSelectorTerms_ = nodeSelectorTerms_;
        } else {
          result.nodeSelectorTerms_ = nodeSelectorTermsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeSelector result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.NodeSelector) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeSelector)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeSelector other) {
        if (other == io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance()) return this;
        if (nodeSelectorTermsBuilder_ == null) {
          if (!other.nodeSelectorTerms_.isEmpty()) {
            if (nodeSelectorTerms_.isEmpty()) {
              nodeSelectorTerms_ = other.nodeSelectorTerms_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureNodeSelectorTermsIsMutable();
              nodeSelectorTerms_.addAll(other.nodeSelectorTerms_);
            }
            onChanged();
          }
        } else {
          if (!other.nodeSelectorTerms_.isEmpty()) {
            if (nodeSelectorTermsBuilder_.isEmpty()) {
              nodeSelectorTermsBuilder_.dispose();
              nodeSelectorTermsBuilder_ = null;
              nodeSelectorTerms_ = other.nodeSelectorTerms_;
              bitField0_ = (bitField0_ & ~0x00000001);
              nodeSelectorTermsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getNodeSelectorTermsFieldBuilder() : null;
            } else {
              nodeSelectorTermsBuilder_.addAllMessages(other.nodeSelectorTerms_);
            }
          }
        }
        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.V1.NodeSelectorTerm m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.NodeSelectorTerm.parser(),
                        extensionRegistry);
                if (nodeSelectorTermsBuilder_ == null) {
                  ensureNodeSelectorTermsIsMutable();
                  nodeSelectorTerms_.add(m);
                } else {
                  nodeSelectorTermsBuilder_.addMessage(m);
                }
                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.util.List<io.kubernetes.client.proto.V1.NodeSelectorTerm> nodeSelectorTerms_ =
        java.util.Collections.emptyList();
      private void ensureNodeSelectorTermsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          nodeSelectorTerms_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.NodeSelectorTerm>(nodeSelectorTerms_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelectorTerm, io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder, io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder> nodeSelectorTermsBuilder_;

      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeSelectorTerm> getNodeSelectorTermsList() {
        if (nodeSelectorTermsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(nodeSelectorTerms_);
        } else {
          return nodeSelectorTermsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public int getNodeSelectorTermsCount() {
        if (nodeSelectorTermsBuilder_ == null) {
          return nodeSelectorTerms_.size();
        } else {
          return nodeSelectorTermsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorTerm getNodeSelectorTerms(int index) {
        if (nodeSelectorTermsBuilder_ == null) {
          return nodeSelectorTerms_.get(index);
        } else {
          return nodeSelectorTermsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public Builder setNodeSelectorTerms(
          int index, io.kubernetes.client.proto.V1.NodeSelectorTerm value) {
        if (nodeSelectorTermsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeSelectorTermsIsMutable();
          nodeSelectorTerms_.set(index, value);
          onChanged();
        } else {
          nodeSelectorTermsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public Builder setNodeSelectorTerms(
          int index, io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder builderForValue) {
        if (nodeSelectorTermsBuilder_ == null) {
          ensureNodeSelectorTermsIsMutable();
          nodeSelectorTerms_.set(index, builderForValue.build());
          onChanged();
        } else {
          nodeSelectorTermsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public Builder addNodeSelectorTerms(io.kubernetes.client.proto.V1.NodeSelectorTerm value) {
        if (nodeSelectorTermsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeSelectorTermsIsMutable();
          nodeSelectorTerms_.add(value);
          onChanged();
        } else {
          nodeSelectorTermsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public Builder addNodeSelectorTerms(
          int index, io.kubernetes.client.proto.V1.NodeSelectorTerm value) {
        if (nodeSelectorTermsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeSelectorTermsIsMutable();
          nodeSelectorTerms_.add(index, value);
          onChanged();
        } else {
          nodeSelectorTermsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public Builder addNodeSelectorTerms(
          io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder builderForValue) {
        if (nodeSelectorTermsBuilder_ == null) {
          ensureNodeSelectorTermsIsMutable();
          nodeSelectorTerms_.add(builderForValue.build());
          onChanged();
        } else {
          nodeSelectorTermsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public Builder addNodeSelectorTerms(
          int index, io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder builderForValue) {
        if (nodeSelectorTermsBuilder_ == null) {
          ensureNodeSelectorTermsIsMutable();
          nodeSelectorTerms_.add(index, builderForValue.build());
          onChanged();
        } else {
          nodeSelectorTermsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public Builder addAllNodeSelectorTerms(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.NodeSelectorTerm> values) {
        if (nodeSelectorTermsBuilder_ == null) {
          ensureNodeSelectorTermsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, nodeSelectorTerms_);
          onChanged();
        } else {
          nodeSelectorTermsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public Builder clearNodeSelectorTerms() {
        if (nodeSelectorTermsBuilder_ == null) {
          nodeSelectorTerms_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          nodeSelectorTermsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public Builder removeNodeSelectorTerms(int index) {
        if (nodeSelectorTermsBuilder_ == null) {
          ensureNodeSelectorTermsIsMutable();
          nodeSelectorTerms_.remove(index);
          onChanged();
        } else {
          nodeSelectorTermsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder getNodeSelectorTermsBuilder(
          int index) {
        return getNodeSelectorTermsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder getNodeSelectorTermsOrBuilder(
          int index) {
        if (nodeSelectorTermsBuilder_ == null) {
          return nodeSelectorTerms_.get(index);  } else {
          return nodeSelectorTermsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder> 
           getNodeSelectorTermsOrBuilderList() {
        if (nodeSelectorTermsBuilder_ != null) {
          return nodeSelectorTermsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(nodeSelectorTerms_);
        }
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder addNodeSelectorTermsBuilder() {
        return getNodeSelectorTermsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.NodeSelectorTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder addNodeSelectorTermsBuilder(
          int index) {
        return getNodeSelectorTermsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.NodeSelectorTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * Required. A list of node selector terms. The terms are ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorTerm nodeSelectorTerms = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder> 
           getNodeSelectorTermsBuilderList() {
        return getNodeSelectorTermsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelectorTerm, io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder, io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder> 
          getNodeSelectorTermsFieldBuilder() {
        if (nodeSelectorTermsBuilder_ == null) {
          nodeSelectorTermsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.NodeSelectorTerm, io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder, io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder>(
                  nodeSelectorTerms_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          nodeSelectorTerms_ = null;
        }
        return nodeSelectorTermsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeSelector)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeSelector)
    private static final io.kubernetes.client.proto.V1.NodeSelector DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeSelector();
    }

    public static io.kubernetes.client.proto.V1.NodeSelector getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeSelector>
        PARSER = new com.google.protobuf.AbstractParser<NodeSelector>() {
      @java.lang.Override
      public NodeSelector 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<NodeSelector> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeSelector> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelector getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeSelectorRequirementOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeSelectorRequirement)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * Represents a key's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return Whether the operator field is set.
     */
    boolean hasOperator();
    /**
     * <pre>
     * Represents a key's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The operator.
     */
    java.lang.String getOperator();
    /**
     * <pre>
     * Represents a key's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The bytes for operator.
     */
    com.google.protobuf.ByteString
        getOperatorBytes();

    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty. If the operator is Gt or Lt, the values
     * array must have a single element, which will be interpreted as an integer.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @return A list containing the values.
     */
    java.util.List<java.lang.String>
        getValuesList();
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty. If the operator is Gt or Lt, the values
     * array must have a single element, which will be interpreted as an integer.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @return The count of values.
     */
    int getValuesCount();
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty. If the operator is Gt or Lt, the values
     * array must have a single element, which will be interpreted as an integer.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    java.lang.String getValues(int index);
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty. If the operator is Gt or Lt, the values
     * array must have a single element, which will be interpreted as an integer.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the values at the given index.
     */
    com.google.protobuf.ByteString
        getValuesBytes(int index);
  }
  /**
   * <pre>
   * A node selector requirement is a selector that contains values, a key, and an operator
   * that relates the key and values.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeSelectorRequirement}
   */
  public static final class NodeSelectorRequirement extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeSelectorRequirement)
      NodeSelectorRequirementOrBuilder {
  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= */ "",
        NodeSelectorRequirement.class.getName());
    }
    // Use NodeSelectorRequirement.newBuilder() to construct.
    private NodeSelectorRequirement(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeSelectorRequirement() {
      key_ = "";
      operator_ = "";
      values_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelectorRequirement_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelectorRequirement_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeSelectorRequirement.class, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object key_ = "";
    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPERATOR_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object operator_ = "";
    /**
     * <pre>
     * Represents a key's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return Whether the operator field is set.
     */
    @java.lang.Override
    public boolean hasOperator() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Represents a key's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The operator.
     */
    @java.lang.Override
    public java.lang.String getOperator() {
      java.lang.Object ref = operator_;
      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()) {
          operator_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Represents a key's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The bytes for operator.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOperatorBytes() {
      java.lang.Object ref = operator_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        operator_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUES_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList values_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty. If the operator is Gt or Lt, the values
     * array must have a single element, which will be interpreted as an integer.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @return A list containing the values.
     */
    public com.google.protobuf.ProtocolStringList
        getValuesList() {
      return values_;
    }
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty. If the operator is Gt or Lt, the values
     * array must have a single element, which will be interpreted as an integer.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @return The count of values.
     */
    public int getValuesCount() {
      return values_.size();
    }
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty. If the operator is Gt or Lt, the values
     * array must have a single element, which will be interpreted as an integer.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    public java.lang.String getValues(int index) {
      return values_.get(index);
    }
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty. If the operator is Gt or Lt, the values
     * array must have a single element, which will be interpreted as an integer.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the values at the given index.
     */
    public com.google.protobuf.ByteString
        getValuesBytes(int index) {
      return values_.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, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, operator_);
      }
      for (int i = 0; i < values_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, values_.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, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, operator_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < values_.size(); i++) {
          dataSize += computeStringSizeNoTag(values_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getValuesList().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.V1.NodeSelectorRequirement)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeSelectorRequirement other = (io.kubernetes.client.proto.V1.NodeSelectorRequirement) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasOperator() != other.hasOperator()) return false;
      if (hasOperator()) {
        if (!getOperator()
            .equals(other.getOperator())) return false;
      }
      if (!getValuesList()
          .equals(other.getValuesList())) 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 (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasOperator()) {
        hash = (37 * hash) + OPERATOR_FIELD_NUMBER;
        hash = (53 * hash) + getOperator().hashCode();
      }
      if (getValuesCount() > 0) {
        hash = (37 * hash) + VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getValuesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeSelectorRequirement parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorRequirement 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.V1.NodeSelectorRequirement parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorRequirement 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.V1.NodeSelectorRequirement parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorRequirement parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorRequirement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorRequirement 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.V1.NodeSelectorRequirement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeSelectorRequirement 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.V1.NodeSelectorRequirement parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorRequirement 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.V1.NodeSelectorRequirement 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>
     * A node selector requirement is a selector that contains values, a key, and an operator
     * that relates the key and values.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeSelectorRequirement}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeSelectorRequirement)
        io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelectorRequirement_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelectorRequirement_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeSelectorRequirement.class, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeSelectorRequirement.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        key_ = "";
        operator_ = "";
        values_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelectorRequirement_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeSelectorRequirement.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement build() {
        io.kubernetes.client.proto.V1.NodeSelectorRequirement result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement buildPartial() {
        io.kubernetes.client.proto.V1.NodeSelectorRequirement result = new io.kubernetes.client.proto.V1.NodeSelectorRequirement(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeSelectorRequirement result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.key_ = key_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.operator_ = operator_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          values_.makeImmutable();
          result.values_ = values_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.NodeSelectorRequirement) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeSelectorRequirement)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeSelectorRequirement other) {
        if (other == io.kubernetes.client.proto.V1.NodeSelectorRequirement.getDefaultInstance()) return this;
        if (other.hasKey()) {
          key_ = other.key_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasOperator()) {
          operator_ = other.operator_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.values_.isEmpty()) {
          if (values_.isEmpty()) {
            values_ = other.values_;
            bitField0_ |= 0x00000004;
          } else {
            ensureValuesIsMutable();
            values_.addAll(other.values_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                key_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                operator_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureValuesIsMutable();
                values_.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 key_ = "";
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = getDefaultInstance().getKey();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object operator_ = "";
      /**
       * <pre>
       * Represents a key's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return Whether the operator field is set.
       */
      public boolean hasOperator() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Represents a key's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return The operator.
       */
      public java.lang.String getOperator() {
        java.lang.Object ref = operator_;
        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()) {
            operator_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Represents a key's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return The bytes for operator.
       */
      public com.google.protobuf.ByteString
          getOperatorBytes() {
        java.lang.Object ref = operator_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          operator_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Represents a key's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @param value The operator to set.
       * @return This builder for chaining.
       */
      public Builder setOperator(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        operator_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Represents a key's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOperator() {
        operator_ = getDefaultInstance().getOperator();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Represents a key's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @param value The bytes for operator to set.
       * @return This builder for chaining.
       */
      public Builder setOperatorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        operator_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList values_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureValuesIsMutable() {
        if (!values_.isModifiable()) {
          values_ = new com.google.protobuf.LazyStringArrayList(values_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty. If the operator is Gt or Lt, the values
       * array must have a single element, which will be interpreted as an integer.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @return A list containing the values.
       */
      public com.google.protobuf.ProtocolStringList
          getValuesList() {
        values_.makeImmutable();
        return values_;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty. If the operator is Gt or Lt, the values
       * array must have a single element, which will be interpreted as an integer.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @return The count of values.
       */
      public int getValuesCount() {
        return values_.size();
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty. If the operator is Gt or Lt, the values
       * array must have a single element, which will be interpreted as an integer.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param index The index of the element to return.
       * @return The values at the given index.
       */
      public java.lang.String getValues(int index) {
        return values_.get(index);
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty. If the operator is Gt or Lt, the values
       * array must have a single element, which will be interpreted as an integer.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the values at the given index.
       */
      public com.google.protobuf.ByteString
          getValuesBytes(int index) {
        return values_.getByteString(index);
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty. If the operator is Gt or Lt, the values
       * array must have a single element, which will be interpreted as an integer.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param index The index to set the value at.
       * @param value The values to set.
       * @return This builder for chaining.
       */
      public Builder setValues(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValuesIsMutable();
        values_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty. If the operator is Gt or Lt, the values
       * array must have a single element, which will be interpreted as an integer.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param value The values to add.
       * @return This builder for chaining.
       */
      public Builder addValues(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValuesIsMutable();
        values_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty. If the operator is Gt or Lt, the values
       * array must have a single element, which will be interpreted as an integer.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param values The values to add.
       * @return This builder for chaining.
       */
      public Builder addAllValues(
          java.lang.Iterable<java.lang.String> values) {
        ensureValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, values_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty. If the operator is Gt or Lt, the values
       * array must have a single element, which will be interpreted as an integer.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearValues() {
        values_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty. If the operator is Gt or Lt, the values
       * array must have a single element, which will be interpreted as an integer.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param value The bytes of the values to add.
       * @return This builder for chaining.
       */
      public Builder addValuesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValuesIsMutable();
        values_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeSelectorRequirement)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeSelectorRequirement)
    private static final io.kubernetes.client.proto.V1.NodeSelectorRequirement DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeSelectorRequirement();
    }

    public static io.kubernetes.client.proto.V1.NodeSelectorRequirement getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeSelectorRequirement>
        PARSER = new com.google.protobuf.AbstractParser<NodeSelectorRequirement>() {
      @java.lang.Override
      public NodeSelectorRequirement 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<NodeSelectorRequirement> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeSelectorRequirement> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorRequirement getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeSelectorTermOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeSelectorTerm)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A list of node selector requirements by node's labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement> 
        getMatchExpressionsList();
    /**
     * <pre>
     * A list of node selector requirements by node's labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
     */
    io.kubernetes.client.proto.V1.NodeSelectorRequirement getMatchExpressions(int index);
    /**
     * <pre>
     * A list of node selector requirements by node's labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
     */
    int getMatchExpressionsCount();
    /**
     * <pre>
     * A list of node selector requirements by node's labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder> 
        getMatchExpressionsOrBuilderList();
    /**
     * <pre>
     * A list of node selector requirements by node's labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
     */
    io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder getMatchExpressionsOrBuilder(
        int index);

    /**
     * <pre>
     * A list of node selector requirements by node's fields.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement> 
        getMatchFieldsList();
    /**
     * <pre>
     * A list of node selector requirements by node's fields.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
     */
    io.kubernetes.client.proto.V1.NodeSelectorRequirement getMatchFields(int index);
    /**
     * <pre>
     * A list of node selector requirements by node's fields.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
     */
    int getMatchFieldsCount();
    /**
     * <pre>
     * A list of node selector requirements by node's fields.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder> 
        getMatchFieldsOrBuilderList();
    /**
     * <pre>
     * A list of node selector requirements by node's fields.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
     */
    io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder getMatchFieldsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A null or empty node selector term matches no objects. The requirements of
   * them are ANDed.
   * The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeSelectorTerm}
   */
  public static final class NodeSelectorTerm extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeSelectorTerm)
      NodeSelectorTermOrBuilder {
  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= */ "",
        NodeSelectorTerm.class.getName());
    }
    // Use NodeSelectorTerm.newBuilder() to construct.
    private NodeSelectorTerm(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeSelectorTerm() {
      matchExpressions_ = java.util.Collections.emptyList();
      matchFields_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelectorTerm_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelectorTerm_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeSelectorTerm.class, io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder.class);
    }

    public static final int MATCHEXPRESSIONS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement> matchExpressions_;
    /**
     * <pre>
     * A list of node selector requirements by node's labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement> getMatchExpressionsList() {
      return matchExpressions_;
    }
    /**
     * <pre>
     * A list of node selector requirements by node's labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder> 
        getMatchExpressionsOrBuilderList() {
      return matchExpressions_;
    }
    /**
     * <pre>
     * A list of node selector requirements by node's labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
     */
    @java.lang.Override
    public int getMatchExpressionsCount() {
      return matchExpressions_.size();
    }
    /**
     * <pre>
     * A list of node selector requirements by node's labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorRequirement getMatchExpressions(int index) {
      return matchExpressions_.get(index);
    }
    /**
     * <pre>
     * A list of node selector requirements by node's labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder getMatchExpressionsOrBuilder(
        int index) {
      return matchExpressions_.get(index);
    }

    public static final int MATCHFIELDS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement> matchFields_;
    /**
     * <pre>
     * A list of node selector requirements by node's fields.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement> getMatchFieldsList() {
      return matchFields_;
    }
    /**
     * <pre>
     * A list of node selector requirements by node's fields.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder> 
        getMatchFieldsOrBuilderList() {
      return matchFields_;
    }
    /**
     * <pre>
     * A list of node selector requirements by node's fields.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
     */
    @java.lang.Override
    public int getMatchFieldsCount() {
      return matchFields_.size();
    }
    /**
     * <pre>
     * A list of node selector requirements by node's fields.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorRequirement getMatchFields(int index) {
      return matchFields_.get(index);
    }
    /**
     * <pre>
     * A list of node selector requirements by node's fields.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder getMatchFieldsOrBuilder(
        int index) {
      return matchFields_.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 {
      for (int i = 0; i < matchExpressions_.size(); i++) {
        output.writeMessage(1, matchExpressions_.get(i));
      }
      for (int i = 0; i < matchFields_.size(); i++) {
        output.writeMessage(2, matchFields_.get(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 < matchExpressions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, matchExpressions_.get(i));
      }
      for (int i = 0; i < matchFields_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, matchFields_.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.V1.NodeSelectorTerm)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeSelectorTerm other = (io.kubernetes.client.proto.V1.NodeSelectorTerm) obj;

      if (!getMatchExpressionsList()
          .equals(other.getMatchExpressionsList())) return false;
      if (!getMatchFieldsList()
          .equals(other.getMatchFieldsList())) 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 (getMatchExpressionsCount() > 0) {
        hash = (37 * hash) + MATCHEXPRESSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getMatchExpressionsList().hashCode();
      }
      if (getMatchFieldsCount() > 0) {
        hash = (37 * hash) + MATCHFIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getMatchFieldsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeSelectorTerm parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorTerm 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.V1.NodeSelectorTerm parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorTerm 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.V1.NodeSelectorTerm parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorTerm parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorTerm parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorTerm 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.V1.NodeSelectorTerm parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeSelectorTerm 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.V1.NodeSelectorTerm parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeSelectorTerm 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.V1.NodeSelectorTerm 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>
     * A null or empty node selector term matches no objects. The requirements of
     * them are ANDed.
     * The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeSelectorTerm}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeSelectorTerm)
        io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelectorTerm_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelectorTerm_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeSelectorTerm.class, io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeSelectorTerm.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (matchExpressionsBuilder_ == null) {
          matchExpressions_ = java.util.Collections.emptyList();
        } else {
          matchExpressions_ = null;
          matchExpressionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (matchFieldsBuilder_ == null) {
          matchFields_ = java.util.Collections.emptyList();
        } else {
          matchFields_ = null;
          matchFieldsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSelectorTerm_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSelectorTerm getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeSelectorTerm.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSelectorTerm build() {
        io.kubernetes.client.proto.V1.NodeSelectorTerm result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSelectorTerm buildPartial() {
        io.kubernetes.client.proto.V1.NodeSelectorTerm result = new io.kubernetes.client.proto.V1.NodeSelectorTerm(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.NodeSelectorTerm result) {
        if (matchExpressionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            matchExpressions_ = java.util.Collections.unmodifiableList(matchExpressions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.matchExpressions_ = matchExpressions_;
        } else {
          result.matchExpressions_ = matchExpressionsBuilder_.build();
        }
        if (matchFieldsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            matchFields_ = java.util.Collections.unmodifiableList(matchFields_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.matchFields_ = matchFields_;
        } else {
          result.matchFields_ = matchFieldsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeSelectorTerm result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.NodeSelectorTerm) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeSelectorTerm)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeSelectorTerm other) {
        if (other == io.kubernetes.client.proto.V1.NodeSelectorTerm.getDefaultInstance()) return this;
        if (matchExpressionsBuilder_ == null) {
          if (!other.matchExpressions_.isEmpty()) {
            if (matchExpressions_.isEmpty()) {
              matchExpressions_ = other.matchExpressions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMatchExpressionsIsMutable();
              matchExpressions_.addAll(other.matchExpressions_);
            }
            onChanged();
          }
        } else {
          if (!other.matchExpressions_.isEmpty()) {
            if (matchExpressionsBuilder_.isEmpty()) {
              matchExpressionsBuilder_.dispose();
              matchExpressionsBuilder_ = null;
              matchExpressions_ = other.matchExpressions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              matchExpressionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMatchExpressionsFieldBuilder() : null;
            } else {
              matchExpressionsBuilder_.addAllMessages(other.matchExpressions_);
            }
          }
        }
        if (matchFieldsBuilder_ == null) {
          if (!other.matchFields_.isEmpty()) {
            if (matchFields_.isEmpty()) {
              matchFields_ = other.matchFields_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureMatchFieldsIsMutable();
              matchFields_.addAll(other.matchFields_);
            }
            onChanged();
          }
        } else {
          if (!other.matchFields_.isEmpty()) {
            if (matchFieldsBuilder_.isEmpty()) {
              matchFieldsBuilder_.dispose();
              matchFieldsBuilder_ = null;
              matchFields_ = other.matchFields_;
              bitField0_ = (bitField0_ & ~0x00000002);
              matchFieldsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMatchFieldsFieldBuilder() : null;
            } else {
              matchFieldsBuilder_.addAllMessages(other.matchFields_);
            }
          }
        }
        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.V1.NodeSelectorRequirement m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.NodeSelectorRequirement.parser(),
                        extensionRegistry);
                if (matchExpressionsBuilder_ == null) {
                  ensureMatchExpressionsIsMutable();
                  matchExpressions_.add(m);
                } else {
                  matchExpressionsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.NodeSelectorRequirement m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.NodeSelectorRequirement.parser(),
                        extensionRegistry);
                if (matchFieldsBuilder_ == null) {
                  ensureMatchFieldsIsMutable();
                  matchFields_.add(m);
                } else {
                  matchFieldsBuilder_.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 java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement> matchExpressions_ =
        java.util.Collections.emptyList();
      private void ensureMatchExpressionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          matchExpressions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.NodeSelectorRequirement>(matchExpressions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelectorRequirement, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder, io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder> matchExpressionsBuilder_;

      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement> getMatchExpressionsList() {
        if (matchExpressionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(matchExpressions_);
        } else {
          return matchExpressionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public int getMatchExpressionsCount() {
        if (matchExpressionsBuilder_ == null) {
          return matchExpressions_.size();
        } else {
          return matchExpressionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement getMatchExpressions(int index) {
        if (matchExpressionsBuilder_ == null) {
          return matchExpressions_.get(index);
        } else {
          return matchExpressionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder setMatchExpressions(
          int index, io.kubernetes.client.proto.V1.NodeSelectorRequirement value) {
        if (matchExpressionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchExpressionsIsMutable();
          matchExpressions_.set(index, value);
          onChanged();
        } else {
          matchExpressionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder setMatchExpressions(
          int index, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder builderForValue) {
        if (matchExpressionsBuilder_ == null) {
          ensureMatchExpressionsIsMutable();
          matchExpressions_.set(index, builderForValue.build());
          onChanged();
        } else {
          matchExpressionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder addMatchExpressions(io.kubernetes.client.proto.V1.NodeSelectorRequirement value) {
        if (matchExpressionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchExpressionsIsMutable();
          matchExpressions_.add(value);
          onChanged();
        } else {
          matchExpressionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder addMatchExpressions(
          int index, io.kubernetes.client.proto.V1.NodeSelectorRequirement value) {
        if (matchExpressionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchExpressionsIsMutable();
          matchExpressions_.add(index, value);
          onChanged();
        } else {
          matchExpressionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder addMatchExpressions(
          io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder builderForValue) {
        if (matchExpressionsBuilder_ == null) {
          ensureMatchExpressionsIsMutable();
          matchExpressions_.add(builderForValue.build());
          onChanged();
        } else {
          matchExpressionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder addMatchExpressions(
          int index, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder builderForValue) {
        if (matchExpressionsBuilder_ == null) {
          ensureMatchExpressionsIsMutable();
          matchExpressions_.add(index, builderForValue.build());
          onChanged();
        } else {
          matchExpressionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder addAllMatchExpressions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.NodeSelectorRequirement> values) {
        if (matchExpressionsBuilder_ == null) {
          ensureMatchExpressionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, matchExpressions_);
          onChanged();
        } else {
          matchExpressionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder clearMatchExpressions() {
        if (matchExpressionsBuilder_ == null) {
          matchExpressions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          matchExpressionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder removeMatchExpressions(int index) {
        if (matchExpressionsBuilder_ == null) {
          ensureMatchExpressionsIsMutable();
          matchExpressions_.remove(index);
          onChanged();
        } else {
          matchExpressionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder getMatchExpressionsBuilder(
          int index) {
        return getMatchExpressionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder getMatchExpressionsOrBuilder(
          int index) {
        if (matchExpressionsBuilder_ == null) {
          return matchExpressions_.get(index);  } else {
          return matchExpressionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder> 
           getMatchExpressionsOrBuilderList() {
        if (matchExpressionsBuilder_ != null) {
          return matchExpressionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(matchExpressions_);
        }
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder addMatchExpressionsBuilder() {
        return getMatchExpressionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.NodeSelectorRequirement.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder addMatchExpressionsBuilder(
          int index) {
        return getMatchExpressionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.NodeSelectorRequirement.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of node selector requirements by node's labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchExpressions = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder> 
           getMatchExpressionsBuilderList() {
        return getMatchExpressionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelectorRequirement, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder, io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder> 
          getMatchExpressionsFieldBuilder() {
        if (matchExpressionsBuilder_ == null) {
          matchExpressionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.NodeSelectorRequirement, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder, io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder>(
                  matchExpressions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          matchExpressions_ = null;
        }
        return matchExpressionsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement> matchFields_ =
        java.util.Collections.emptyList();
      private void ensureMatchFieldsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          matchFields_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.NodeSelectorRequirement>(matchFields_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelectorRequirement, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder, io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder> matchFieldsBuilder_;

      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement> getMatchFieldsList() {
        if (matchFieldsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(matchFields_);
        } else {
          return matchFieldsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public int getMatchFieldsCount() {
        if (matchFieldsBuilder_ == null) {
          return matchFields_.size();
        } else {
          return matchFieldsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement getMatchFields(int index) {
        if (matchFieldsBuilder_ == null) {
          return matchFields_.get(index);
        } else {
          return matchFieldsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public Builder setMatchFields(
          int index, io.kubernetes.client.proto.V1.NodeSelectorRequirement value) {
        if (matchFieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchFieldsIsMutable();
          matchFields_.set(index, value);
          onChanged();
        } else {
          matchFieldsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public Builder setMatchFields(
          int index, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder builderForValue) {
        if (matchFieldsBuilder_ == null) {
          ensureMatchFieldsIsMutable();
          matchFields_.set(index, builderForValue.build());
          onChanged();
        } else {
          matchFieldsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public Builder addMatchFields(io.kubernetes.client.proto.V1.NodeSelectorRequirement value) {
        if (matchFieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchFieldsIsMutable();
          matchFields_.add(value);
          onChanged();
        } else {
          matchFieldsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public Builder addMatchFields(
          int index, io.kubernetes.client.proto.V1.NodeSelectorRequirement value) {
        if (matchFieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchFieldsIsMutable();
          matchFields_.add(index, value);
          onChanged();
        } else {
          matchFieldsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public Builder addMatchFields(
          io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder builderForValue) {
        if (matchFieldsBuilder_ == null) {
          ensureMatchFieldsIsMutable();
          matchFields_.add(builderForValue.build());
          onChanged();
        } else {
          matchFieldsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public Builder addMatchFields(
          int index, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder builderForValue) {
        if (matchFieldsBuilder_ == null) {
          ensureMatchFieldsIsMutable();
          matchFields_.add(index, builderForValue.build());
          onChanged();
        } else {
          matchFieldsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public Builder addAllMatchFields(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.NodeSelectorRequirement> values) {
        if (matchFieldsBuilder_ == null) {
          ensureMatchFieldsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, matchFields_);
          onChanged();
        } else {
          matchFieldsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public Builder clearMatchFields() {
        if (matchFieldsBuilder_ == null) {
          matchFields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          matchFieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public Builder removeMatchFields(int index) {
        if (matchFieldsBuilder_ == null) {
          ensureMatchFieldsIsMutable();
          matchFields_.remove(index);
          onChanged();
        } else {
          matchFieldsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder getMatchFieldsBuilder(
          int index) {
        return getMatchFieldsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder getMatchFieldsOrBuilder(
          int index) {
        if (matchFieldsBuilder_ == null) {
          return matchFields_.get(index);  } else {
          return matchFieldsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder> 
           getMatchFieldsOrBuilderList() {
        if (matchFieldsBuilder_ != null) {
          return matchFieldsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(matchFields_);
        }
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder addMatchFieldsBuilder() {
        return getMatchFieldsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.NodeSelectorRequirement.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder addMatchFieldsBuilder(
          int index) {
        return getMatchFieldsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.NodeSelectorRequirement.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of node selector requirements by node's fields.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeSelectorRequirement matchFields = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder> 
           getMatchFieldsBuilderList() {
        return getMatchFieldsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelectorRequirement, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder, io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder> 
          getMatchFieldsFieldBuilder() {
        if (matchFieldsBuilder_ == null) {
          matchFieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.NodeSelectorRequirement, io.kubernetes.client.proto.V1.NodeSelectorRequirement.Builder, io.kubernetes.client.proto.V1.NodeSelectorRequirementOrBuilder>(
                  matchFields_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          matchFields_ = null;
        }
        return matchFieldsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeSelectorTerm)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeSelectorTerm)
    private static final io.kubernetes.client.proto.V1.NodeSelectorTerm DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeSelectorTerm();
    }

    public static io.kubernetes.client.proto.V1.NodeSelectorTerm getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeSelectorTerm>
        PARSER = new com.google.protobuf.AbstractParser<NodeSelectorTerm>() {
      @java.lang.Override
      public NodeSelectorTerm 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<NodeSelectorTerm> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeSelectorTerm> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorTerm getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * PodCIDR represents the pod IP range assigned to the node.
     * +optional
     * </pre>
     *
     * <code>optional string podCIDR = 1;</code>
     * @return Whether the podCIDR field is set.
     */
    boolean hasPodCIDR();
    /**
     * <pre>
     * PodCIDR represents the pod IP range assigned to the node.
     * +optional
     * </pre>
     *
     * <code>optional string podCIDR = 1;</code>
     * @return The podCIDR.
     */
    java.lang.String getPodCIDR();
    /**
     * <pre>
     * PodCIDR represents the pod IP range assigned to the node.
     * +optional
     * </pre>
     *
     * <code>optional string podCIDR = 1;</code>
     * @return The bytes for podCIDR.
     */
    com.google.protobuf.ByteString
        getPodCIDRBytes();

    /**
     * <pre>
     * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
     * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
     * each of IPv4 and IPv6.
     * +optional
     * +patchStrategy=merge
     * +listType=set
     * </pre>
     *
     * <code>repeated string podCIDRs = 7;</code>
     * @return A list containing the podCIDRs.
     */
    java.util.List<java.lang.String>
        getPodCIDRsList();
    /**
     * <pre>
     * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
     * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
     * each of IPv4 and IPv6.
     * +optional
     * +patchStrategy=merge
     * +listType=set
     * </pre>
     *
     * <code>repeated string podCIDRs = 7;</code>
     * @return The count of podCIDRs.
     */
    int getPodCIDRsCount();
    /**
     * <pre>
     * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
     * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
     * each of IPv4 and IPv6.
     * +optional
     * +patchStrategy=merge
     * +listType=set
     * </pre>
     *
     * <code>repeated string podCIDRs = 7;</code>
     * @param index The index of the element to return.
     * @return The podCIDRs at the given index.
     */
    java.lang.String getPodCIDRs(int index);
    /**
     * <pre>
     * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
     * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
     * each of IPv4 and IPv6.
     * +optional
     * +patchStrategy=merge
     * +listType=set
     * </pre>
     *
     * <code>repeated string podCIDRs = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the podCIDRs at the given index.
     */
    com.google.protobuf.ByteString
        getPodCIDRsBytes(int index);

    /**
     * <pre>
     * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
     * +optional
     * </pre>
     *
     * <code>optional string providerID = 3;</code>
     * @return Whether the providerID field is set.
     */
    boolean hasProviderID();
    /**
     * <pre>
     * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
     * +optional
     * </pre>
     *
     * <code>optional string providerID = 3;</code>
     * @return The providerID.
     */
    java.lang.String getProviderID();
    /**
     * <pre>
     * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
     * +optional
     * </pre>
     *
     * <code>optional string providerID = 3;</code>
     * @return The bytes for providerID.
     */
    com.google.protobuf.ByteString
        getProviderIDBytes();

    /**
     * <pre>
     * Unschedulable controls node schedulability of new pods. By default, node is schedulable.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
     * +optional
     * </pre>
     *
     * <code>optional bool unschedulable = 4;</code>
     * @return Whether the unschedulable field is set.
     */
    boolean hasUnschedulable();
    /**
     * <pre>
     * Unschedulable controls node schedulability of new pods. By default, node is schedulable.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
     * +optional
     * </pre>
     *
     * <code>optional bool unschedulable = 4;</code>
     * @return The unschedulable.
     */
    boolean getUnschedulable();

    /**
     * <pre>
     * If specified, the node's taints.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Taint> 
        getTaintsList();
    /**
     * <pre>
     * If specified, the node's taints.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
     */
    io.kubernetes.client.proto.V1.Taint getTaints(int index);
    /**
     * <pre>
     * If specified, the node's taints.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
     */
    int getTaintsCount();
    /**
     * <pre>
     * If specified, the node's taints.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.TaintOrBuilder> 
        getTaintsOrBuilderList();
    /**
     * <pre>
     * If specified, the node's taints.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
     */
    io.kubernetes.client.proto.V1.TaintOrBuilder getTaintsOrBuilder(
        int index);

    /**
     * <pre>
     * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
     * @return Whether the configSource field is set.
     */
    boolean hasConfigSource();
    /**
     * <pre>
     * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
     * @return The configSource.
     */
    io.kubernetes.client.proto.V1.NodeConfigSource getConfigSource();
    /**
     * <pre>
     * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
     */
    io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getConfigSourceOrBuilder();

    /**
     * <pre>
     * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
     * see: https://issues.k8s.io/61966
     * +optional
     * </pre>
     *
     * <code>optional string externalID = 2;</code>
     * @return Whether the externalID field is set.
     */
    boolean hasExternalID();
    /**
     * <pre>
     * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
     * see: https://issues.k8s.io/61966
     * +optional
     * </pre>
     *
     * <code>optional string externalID = 2;</code>
     * @return The externalID.
     */
    java.lang.String getExternalID();
    /**
     * <pre>
     * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
     * see: https://issues.k8s.io/61966
     * +optional
     * </pre>
     *
     * <code>optional string externalID = 2;</code>
     * @return The bytes for externalID.
     */
    com.google.protobuf.ByteString
        getExternalIDBytes();
  }
  /**
   * <pre>
   * NodeSpec describes the attributes that a node is created with.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeSpec}
   */
  public static final class NodeSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeSpec)
      NodeSpecOrBuilder {
  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= */ "",
        NodeSpec.class.getName());
    }
    // Use NodeSpec.newBuilder() to construct.
    private NodeSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeSpec() {
      podCIDR_ = "";
      podCIDRs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      providerID_ = "";
      taints_ = java.util.Collections.emptyList();
      externalID_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSpec_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeSpec.class, io.kubernetes.client.proto.V1.NodeSpec.Builder.class);
    }

    private int bitField0_;
    public static final int PODCIDR_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object podCIDR_ = "";
    /**
     * <pre>
     * PodCIDR represents the pod IP range assigned to the node.
     * +optional
     * </pre>
     *
     * <code>optional string podCIDR = 1;</code>
     * @return Whether the podCIDR field is set.
     */
    @java.lang.Override
    public boolean hasPodCIDR() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * PodCIDR represents the pod IP range assigned to the node.
     * +optional
     * </pre>
     *
     * <code>optional string podCIDR = 1;</code>
     * @return The podCIDR.
     */
    @java.lang.Override
    public java.lang.String getPodCIDR() {
      java.lang.Object ref = podCIDR_;
      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()) {
          podCIDR_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * PodCIDR represents the pod IP range assigned to the node.
     * +optional
     * </pre>
     *
     * <code>optional string podCIDR = 1;</code>
     * @return The bytes for podCIDR.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPodCIDRBytes() {
      java.lang.Object ref = podCIDR_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        podCIDR_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PODCIDRS_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList podCIDRs_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
     * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
     * each of IPv4 and IPv6.
     * +optional
     * +patchStrategy=merge
     * +listType=set
     * </pre>
     *
     * <code>repeated string podCIDRs = 7;</code>
     * @return A list containing the podCIDRs.
     */
    public com.google.protobuf.ProtocolStringList
        getPodCIDRsList() {
      return podCIDRs_;
    }
    /**
     * <pre>
     * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
     * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
     * each of IPv4 and IPv6.
     * +optional
     * +patchStrategy=merge
     * +listType=set
     * </pre>
     *
     * <code>repeated string podCIDRs = 7;</code>
     * @return The count of podCIDRs.
     */
    public int getPodCIDRsCount() {
      return podCIDRs_.size();
    }
    /**
     * <pre>
     * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
     * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
     * each of IPv4 and IPv6.
     * +optional
     * +patchStrategy=merge
     * +listType=set
     * </pre>
     *
     * <code>repeated string podCIDRs = 7;</code>
     * @param index The index of the element to return.
     * @return The podCIDRs at the given index.
     */
    public java.lang.String getPodCIDRs(int index) {
      return podCIDRs_.get(index);
    }
    /**
     * <pre>
     * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
     * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
     * each of IPv4 and IPv6.
     * +optional
     * +patchStrategy=merge
     * +listType=set
     * </pre>
     *
     * <code>repeated string podCIDRs = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the podCIDRs at the given index.
     */
    public com.google.protobuf.ByteString
        getPodCIDRsBytes(int index) {
      return podCIDRs_.getByteString(index);
    }

    public static final int PROVIDERID_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object providerID_ = "";
    /**
     * <pre>
     * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
     * +optional
     * </pre>
     *
     * <code>optional string providerID = 3;</code>
     * @return Whether the providerID field is set.
     */
    @java.lang.Override
    public boolean hasProviderID() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
     * +optional
     * </pre>
     *
     * <code>optional string providerID = 3;</code>
     * @return The providerID.
     */
    @java.lang.Override
    public java.lang.String getProviderID() {
      java.lang.Object ref = providerID_;
      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()) {
          providerID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
     * +optional
     * </pre>
     *
     * <code>optional string providerID = 3;</code>
     * @return The bytes for providerID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getProviderIDBytes() {
      java.lang.Object ref = providerID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        providerID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int UNSCHEDULABLE_FIELD_NUMBER = 4;
    private boolean unschedulable_ = false;
    /**
     * <pre>
     * Unschedulable controls node schedulability of new pods. By default, node is schedulable.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
     * +optional
     * </pre>
     *
     * <code>optional bool unschedulable = 4;</code>
     * @return Whether the unschedulable field is set.
     */
    @java.lang.Override
    public boolean hasUnschedulable() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Unschedulable controls node schedulability of new pods. By default, node is schedulable.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
     * +optional
     * </pre>
     *
     * <code>optional bool unschedulable = 4;</code>
     * @return The unschedulable.
     */
    @java.lang.Override
    public boolean getUnschedulable() {
      return unschedulable_;
    }

    public static final int TAINTS_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.Taint> taints_;
    /**
     * <pre>
     * If specified, the node's taints.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Taint> getTaintsList() {
      return taints_;
    }
    /**
     * <pre>
     * If specified, the node's taints.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.TaintOrBuilder> 
        getTaintsOrBuilderList() {
      return taints_;
    }
    /**
     * <pre>
     * If specified, the node's taints.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
     */
    @java.lang.Override
    public int getTaintsCount() {
      return taints_.size();
    }
    /**
     * <pre>
     * If specified, the node's taints.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Taint getTaints(int index) {
      return taints_.get(index);
    }
    /**
     * <pre>
     * If specified, the node's taints.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TaintOrBuilder getTaintsOrBuilder(
        int index) {
      return taints_.get(index);
    }

    public static final int CONFIGSOURCE_FIELD_NUMBER = 6;
    private io.kubernetes.client.proto.V1.NodeConfigSource configSource_;
    /**
     * <pre>
     * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
     * @return Whether the configSource field is set.
     */
    @java.lang.Override
    public boolean hasConfigSource() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
     * @return The configSource.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigSource getConfigSource() {
      return configSource_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : configSource_;
    }
    /**
     * <pre>
     * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getConfigSourceOrBuilder() {
      return configSource_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : configSource_;
    }

    public static final int EXTERNALID_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object externalID_ = "";
    /**
     * <pre>
     * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
     * see: https://issues.k8s.io/61966
     * +optional
     * </pre>
     *
     * <code>optional string externalID = 2;</code>
     * @return Whether the externalID field is set.
     */
    @java.lang.Override
    public boolean hasExternalID() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
     * see: https://issues.k8s.io/61966
     * +optional
     * </pre>
     *
     * <code>optional string externalID = 2;</code>
     * @return The externalID.
     */
    @java.lang.Override
    public java.lang.String getExternalID() {
      java.lang.Object ref = externalID_;
      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()) {
          externalID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
     * see: https://issues.k8s.io/61966
     * +optional
     * </pre>
     *
     * <code>optional string externalID = 2;</code>
     * @return The bytes for externalID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getExternalIDBytes() {
      java.lang.Object ref = externalID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        externalID_ = 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, podCIDR_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, externalID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, providerID_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(4, unschedulable_);
      }
      for (int i = 0; i < taints_.size(); i++) {
        output.writeMessage(5, taints_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(6, getConfigSource());
      }
      for (int i = 0; i < podCIDRs_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, podCIDRs_.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, podCIDR_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, externalID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, providerID_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, unschedulable_);
      }
      for (int i = 0; i < taints_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, taints_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getConfigSource());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < podCIDRs_.size(); i++) {
          dataSize += computeStringSizeNoTag(podCIDRs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPodCIDRsList().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.V1.NodeSpec)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeSpec other = (io.kubernetes.client.proto.V1.NodeSpec) obj;

      if (hasPodCIDR() != other.hasPodCIDR()) return false;
      if (hasPodCIDR()) {
        if (!getPodCIDR()
            .equals(other.getPodCIDR())) return false;
      }
      if (!getPodCIDRsList()
          .equals(other.getPodCIDRsList())) return false;
      if (hasProviderID() != other.hasProviderID()) return false;
      if (hasProviderID()) {
        if (!getProviderID()
            .equals(other.getProviderID())) return false;
      }
      if (hasUnschedulable() != other.hasUnschedulable()) return false;
      if (hasUnschedulable()) {
        if (getUnschedulable()
            != other.getUnschedulable()) return false;
      }
      if (!getTaintsList()
          .equals(other.getTaintsList())) return false;
      if (hasConfigSource() != other.hasConfigSource()) return false;
      if (hasConfigSource()) {
        if (!getConfigSource()
            .equals(other.getConfigSource())) return false;
      }
      if (hasExternalID() != other.hasExternalID()) return false;
      if (hasExternalID()) {
        if (!getExternalID()
            .equals(other.getExternalID())) 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 (hasPodCIDR()) {
        hash = (37 * hash) + PODCIDR_FIELD_NUMBER;
        hash = (53 * hash) + getPodCIDR().hashCode();
      }
      if (getPodCIDRsCount() > 0) {
        hash = (37 * hash) + PODCIDRS_FIELD_NUMBER;
        hash = (53 * hash) + getPodCIDRsList().hashCode();
      }
      if (hasProviderID()) {
        hash = (37 * hash) + PROVIDERID_FIELD_NUMBER;
        hash = (53 * hash) + getProviderID().hashCode();
      }
      if (hasUnschedulable()) {
        hash = (37 * hash) + UNSCHEDULABLE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getUnschedulable());
      }
      if (getTaintsCount() > 0) {
        hash = (37 * hash) + TAINTS_FIELD_NUMBER;
        hash = (53 * hash) + getTaintsList().hashCode();
      }
      if (hasConfigSource()) {
        hash = (37 * hash) + CONFIGSOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getConfigSource().hashCode();
      }
      if (hasExternalID()) {
        hash = (37 * hash) + EXTERNALID_FIELD_NUMBER;
        hash = (53 * hash) + getExternalID().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSpec 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.V1.NodeSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSpec 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.V1.NodeSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeSpec 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.V1.NodeSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeSpec 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.V1.NodeSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeSpec 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.V1.NodeSpec 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>
     * NodeSpec describes the attributes that a node is created with.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeSpec)
        io.kubernetes.client.proto.V1.NodeSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSpec_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeSpec.class, io.kubernetes.client.proto.V1.NodeSpec.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeSpec.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getTaintsFieldBuilder();
          getConfigSourceFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        podCIDR_ = "";
        podCIDRs_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        providerID_ = "";
        unschedulable_ = false;
        if (taintsBuilder_ == null) {
          taints_ = java.util.Collections.emptyList();
        } else {
          taints_ = null;
          taintsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        configSource_ = null;
        if (configSourceBuilder_ != null) {
          configSourceBuilder_.dispose();
          configSourceBuilder_ = null;
        }
        externalID_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSpec build() {
        io.kubernetes.client.proto.V1.NodeSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSpec buildPartial() {
        io.kubernetes.client.proto.V1.NodeSpec result = new io.kubernetes.client.proto.V1.NodeSpec(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.NodeSpec result) {
        if (taintsBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            taints_ = java.util.Collections.unmodifiableList(taints_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.taints_ = taints_;
        } else {
          result.taints_ = taintsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeSpec result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.podCIDR_ = podCIDR_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          podCIDRs_.makeImmutable();
          result.podCIDRs_ = podCIDRs_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.providerID_ = providerID_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.unschedulable_ = unschedulable_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.configSource_ = configSourceBuilder_ == null
              ? configSource_
              : configSourceBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.externalID_ = externalID_;
          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.V1.NodeSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeSpec other) {
        if (other == io.kubernetes.client.proto.V1.NodeSpec.getDefaultInstance()) return this;
        if (other.hasPodCIDR()) {
          podCIDR_ = other.podCIDR_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.podCIDRs_.isEmpty()) {
          if (podCIDRs_.isEmpty()) {
            podCIDRs_ = other.podCIDRs_;
            bitField0_ |= 0x00000002;
          } else {
            ensurePodCIDRsIsMutable();
            podCIDRs_.addAll(other.podCIDRs_);
          }
          onChanged();
        }
        if (other.hasProviderID()) {
          providerID_ = other.providerID_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasUnschedulable()) {
          setUnschedulable(other.getUnschedulable());
        }
        if (taintsBuilder_ == null) {
          if (!other.taints_.isEmpty()) {
            if (taints_.isEmpty()) {
              taints_ = other.taints_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureTaintsIsMutable();
              taints_.addAll(other.taints_);
            }
            onChanged();
          }
        } else {
          if (!other.taints_.isEmpty()) {
            if (taintsBuilder_.isEmpty()) {
              taintsBuilder_.dispose();
              taintsBuilder_ = null;
              taints_ = other.taints_;
              bitField0_ = (bitField0_ & ~0x00000010);
              taintsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTaintsFieldBuilder() : null;
            } else {
              taintsBuilder_.addAllMessages(other.taints_);
            }
          }
        }
        if (other.hasConfigSource()) {
          mergeConfigSource(other.getConfigSource());
        }
        if (other.hasExternalID()) {
          externalID_ = other.externalID_;
          bitField0_ |= 0x00000040;
          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: {
                podCIDR_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                externalID_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 18
              case 26: {
                providerID_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                unschedulable_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                io.kubernetes.client.proto.V1.Taint m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Taint.parser(),
                        extensionRegistry);
                if (taintsBuilder_ == null) {
                  ensureTaintsIsMutable();
                  taints_.add(m);
                } else {
                  taintsBuilder_.addMessage(m);
                }
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getConfigSourceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensurePodCIDRsIsMutable();
                podCIDRs_.add(bs);
                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object podCIDR_ = "";
      /**
       * <pre>
       * PodCIDR represents the pod IP range assigned to the node.
       * +optional
       * </pre>
       *
       * <code>optional string podCIDR = 1;</code>
       * @return Whether the podCIDR field is set.
       */
      public boolean hasPodCIDR() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * PodCIDR represents the pod IP range assigned to the node.
       * +optional
       * </pre>
       *
       * <code>optional string podCIDR = 1;</code>
       * @return The podCIDR.
       */
      public java.lang.String getPodCIDR() {
        java.lang.Object ref = podCIDR_;
        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()) {
            podCIDR_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * PodCIDR represents the pod IP range assigned to the node.
       * +optional
       * </pre>
       *
       * <code>optional string podCIDR = 1;</code>
       * @return The bytes for podCIDR.
       */
      public com.google.protobuf.ByteString
          getPodCIDRBytes() {
        java.lang.Object ref = podCIDR_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          podCIDR_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * PodCIDR represents the pod IP range assigned to the node.
       * +optional
       * </pre>
       *
       * <code>optional string podCIDR = 1;</code>
       * @param value The podCIDR to set.
       * @return This builder for chaining.
       */
      public Builder setPodCIDR(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        podCIDR_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PodCIDR represents the pod IP range assigned to the node.
       * +optional
       * </pre>
       *
       * <code>optional string podCIDR = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPodCIDR() {
        podCIDR_ = getDefaultInstance().getPodCIDR();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PodCIDR represents the pod IP range assigned to the node.
       * +optional
       * </pre>
       *
       * <code>optional string podCIDR = 1;</code>
       * @param value The bytes for podCIDR to set.
       * @return This builder for chaining.
       */
      public Builder setPodCIDRBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        podCIDR_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList podCIDRs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensurePodCIDRsIsMutable() {
        if (!podCIDRs_.isModifiable()) {
          podCIDRs_ = new com.google.protobuf.LazyStringArrayList(podCIDRs_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
       * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
       * each of IPv4 and IPv6.
       * +optional
       * +patchStrategy=merge
       * +listType=set
       * </pre>
       *
       * <code>repeated string podCIDRs = 7;</code>
       * @return A list containing the podCIDRs.
       */
      public com.google.protobuf.ProtocolStringList
          getPodCIDRsList() {
        podCIDRs_.makeImmutable();
        return podCIDRs_;
      }
      /**
       * <pre>
       * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
       * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
       * each of IPv4 and IPv6.
       * +optional
       * +patchStrategy=merge
       * +listType=set
       * </pre>
       *
       * <code>repeated string podCIDRs = 7;</code>
       * @return The count of podCIDRs.
       */
      public int getPodCIDRsCount() {
        return podCIDRs_.size();
      }
      /**
       * <pre>
       * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
       * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
       * each of IPv4 and IPv6.
       * +optional
       * +patchStrategy=merge
       * +listType=set
       * </pre>
       *
       * <code>repeated string podCIDRs = 7;</code>
       * @param index The index of the element to return.
       * @return The podCIDRs at the given index.
       */
      public java.lang.String getPodCIDRs(int index) {
        return podCIDRs_.get(index);
      }
      /**
       * <pre>
       * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
       * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
       * each of IPv4 and IPv6.
       * +optional
       * +patchStrategy=merge
       * +listType=set
       * </pre>
       *
       * <code>repeated string podCIDRs = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the podCIDRs at the given index.
       */
      public com.google.protobuf.ByteString
          getPodCIDRsBytes(int index) {
        return podCIDRs_.getByteString(index);
      }
      /**
       * <pre>
       * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
       * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
       * each of IPv4 and IPv6.
       * +optional
       * +patchStrategy=merge
       * +listType=set
       * </pre>
       *
       * <code>repeated string podCIDRs = 7;</code>
       * @param index The index to set the value at.
       * @param value The podCIDRs to set.
       * @return This builder for chaining.
       */
      public Builder setPodCIDRs(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePodCIDRsIsMutable();
        podCIDRs_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
       * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
       * each of IPv4 and IPv6.
       * +optional
       * +patchStrategy=merge
       * +listType=set
       * </pre>
       *
       * <code>repeated string podCIDRs = 7;</code>
       * @param value The podCIDRs to add.
       * @return This builder for chaining.
       */
      public Builder addPodCIDRs(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePodCIDRsIsMutable();
        podCIDRs_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
       * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
       * each of IPv4 and IPv6.
       * +optional
       * +patchStrategy=merge
       * +listType=set
       * </pre>
       *
       * <code>repeated string podCIDRs = 7;</code>
       * @param values The podCIDRs to add.
       * @return This builder for chaining.
       */
      public Builder addAllPodCIDRs(
          java.lang.Iterable<java.lang.String> values) {
        ensurePodCIDRsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, podCIDRs_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
       * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
       * each of IPv4 and IPv6.
       * +optional
       * +patchStrategy=merge
       * +listType=set
       * </pre>
       *
       * <code>repeated string podCIDRs = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearPodCIDRs() {
        podCIDRs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
       * field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
       * each of IPv4 and IPv6.
       * +optional
       * +patchStrategy=merge
       * +listType=set
       * </pre>
       *
       * <code>repeated string podCIDRs = 7;</code>
       * @param value The bytes of the podCIDRs to add.
       * @return This builder for chaining.
       */
      public Builder addPodCIDRsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePodCIDRsIsMutable();
        podCIDRs_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object providerID_ = "";
      /**
       * <pre>
       * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
       * +optional
       * </pre>
       *
       * <code>optional string providerID = 3;</code>
       * @return Whether the providerID field is set.
       */
      public boolean hasProviderID() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
       * +optional
       * </pre>
       *
       * <code>optional string providerID = 3;</code>
       * @return The providerID.
       */
      public java.lang.String getProviderID() {
        java.lang.Object ref = providerID_;
        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()) {
            providerID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
       * +optional
       * </pre>
       *
       * <code>optional string providerID = 3;</code>
       * @return The bytes for providerID.
       */
      public com.google.protobuf.ByteString
          getProviderIDBytes() {
        java.lang.Object ref = providerID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          providerID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
       * +optional
       * </pre>
       *
       * <code>optional string providerID = 3;</code>
       * @param value The providerID to set.
       * @return This builder for chaining.
       */
      public Builder setProviderID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        providerID_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
       * +optional
       * </pre>
       *
       * <code>optional string providerID = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearProviderID() {
        providerID_ = getDefaultInstance().getProviderID();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;
       * +optional
       * </pre>
       *
       * <code>optional string providerID = 3;</code>
       * @param value The bytes for providerID to set.
       * @return This builder for chaining.
       */
      public Builder setProviderIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        providerID_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private boolean unschedulable_ ;
      /**
       * <pre>
       * Unschedulable controls node schedulability of new pods. By default, node is schedulable.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
       * +optional
       * </pre>
       *
       * <code>optional bool unschedulable = 4;</code>
       * @return Whether the unschedulable field is set.
       */
      @java.lang.Override
      public boolean hasUnschedulable() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Unschedulable controls node schedulability of new pods. By default, node is schedulable.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
       * +optional
       * </pre>
       *
       * <code>optional bool unschedulable = 4;</code>
       * @return The unschedulable.
       */
      @java.lang.Override
      public boolean getUnschedulable() {
        return unschedulable_;
      }
      /**
       * <pre>
       * Unschedulable controls node schedulability of new pods. By default, node is schedulable.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
       * +optional
       * </pre>
       *
       * <code>optional bool unschedulable = 4;</code>
       * @param value The unschedulable to set.
       * @return This builder for chaining.
       */
      public Builder setUnschedulable(boolean value) {

        unschedulable_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unschedulable controls node schedulability of new pods. By default, node is schedulable.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
       * +optional
       * </pre>
       *
       * <code>optional bool unschedulable = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearUnschedulable() {
        bitField0_ = (bitField0_ & ~0x00000008);
        unschedulable_ = false;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.Taint> taints_ =
        java.util.Collections.emptyList();
      private void ensureTaintsIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          taints_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Taint>(taints_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Taint, io.kubernetes.client.proto.V1.Taint.Builder, io.kubernetes.client.proto.V1.TaintOrBuilder> taintsBuilder_;

      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Taint> getTaintsList() {
        if (taintsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(taints_);
        } else {
          return taintsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public int getTaintsCount() {
        if (taintsBuilder_ == null) {
          return taints_.size();
        } else {
          return taintsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public io.kubernetes.client.proto.V1.Taint getTaints(int index) {
        if (taintsBuilder_ == null) {
          return taints_.get(index);
        } else {
          return taintsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public Builder setTaints(
          int index, io.kubernetes.client.proto.V1.Taint value) {
        if (taintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTaintsIsMutable();
          taints_.set(index, value);
          onChanged();
        } else {
          taintsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public Builder setTaints(
          int index, io.kubernetes.client.proto.V1.Taint.Builder builderForValue) {
        if (taintsBuilder_ == null) {
          ensureTaintsIsMutable();
          taints_.set(index, builderForValue.build());
          onChanged();
        } else {
          taintsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public Builder addTaints(io.kubernetes.client.proto.V1.Taint value) {
        if (taintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTaintsIsMutable();
          taints_.add(value);
          onChanged();
        } else {
          taintsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public Builder addTaints(
          int index, io.kubernetes.client.proto.V1.Taint value) {
        if (taintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTaintsIsMutable();
          taints_.add(index, value);
          onChanged();
        } else {
          taintsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public Builder addTaints(
          io.kubernetes.client.proto.V1.Taint.Builder builderForValue) {
        if (taintsBuilder_ == null) {
          ensureTaintsIsMutable();
          taints_.add(builderForValue.build());
          onChanged();
        } else {
          taintsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public Builder addTaints(
          int index, io.kubernetes.client.proto.V1.Taint.Builder builderForValue) {
        if (taintsBuilder_ == null) {
          ensureTaintsIsMutable();
          taints_.add(index, builderForValue.build());
          onChanged();
        } else {
          taintsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public Builder addAllTaints(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Taint> values) {
        if (taintsBuilder_ == null) {
          ensureTaintsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, taints_);
          onChanged();
        } else {
          taintsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public Builder clearTaints() {
        if (taintsBuilder_ == null) {
          taints_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          taintsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public Builder removeTaints(int index) {
        if (taintsBuilder_ == null) {
          ensureTaintsIsMutable();
          taints_.remove(index);
          onChanged();
        } else {
          taintsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public io.kubernetes.client.proto.V1.Taint.Builder getTaintsBuilder(
          int index) {
        return getTaintsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public io.kubernetes.client.proto.V1.TaintOrBuilder getTaintsOrBuilder(
          int index) {
        if (taintsBuilder_ == null) {
          return taints_.get(index);  } else {
          return taintsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.TaintOrBuilder> 
           getTaintsOrBuilderList() {
        if (taintsBuilder_ != null) {
          return taintsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(taints_);
        }
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public io.kubernetes.client.proto.V1.Taint.Builder addTaintsBuilder() {
        return getTaintsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Taint.getDefaultInstance());
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public io.kubernetes.client.proto.V1.Taint.Builder addTaintsBuilder(
          int index) {
        return getTaintsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Taint.getDefaultInstance());
      }
      /**
       * <pre>
       * If specified, the node's taints.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Taint taints = 5;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Taint.Builder> 
           getTaintsBuilderList() {
        return getTaintsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Taint, io.kubernetes.client.proto.V1.Taint.Builder, io.kubernetes.client.proto.V1.TaintOrBuilder> 
          getTaintsFieldBuilder() {
        if (taintsBuilder_ == null) {
          taintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Taint, io.kubernetes.client.proto.V1.Taint.Builder, io.kubernetes.client.proto.V1.TaintOrBuilder>(
                  taints_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          taints_ = null;
        }
        return taintsBuilder_;
      }

      private io.kubernetes.client.proto.V1.NodeConfigSource configSource_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder> configSourceBuilder_;
      /**
       * <pre>
       * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
       * @return Whether the configSource field is set.
       */
      public boolean hasConfigSource() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
       * @return The configSource.
       */
      public io.kubernetes.client.proto.V1.NodeConfigSource getConfigSource() {
        if (configSourceBuilder_ == null) {
          return configSource_ == null ? io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : configSource_;
        } else {
          return configSourceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
       */
      public Builder setConfigSource(io.kubernetes.client.proto.V1.NodeConfigSource value) {
        if (configSourceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configSource_ = value;
        } else {
          configSourceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
       */
      public Builder setConfigSource(
          io.kubernetes.client.proto.V1.NodeConfigSource.Builder builderForValue) {
        if (configSourceBuilder_ == null) {
          configSource_ = builderForValue.build();
        } else {
          configSourceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
       */
      public Builder mergeConfigSource(io.kubernetes.client.proto.V1.NodeConfigSource value) {
        if (configSourceBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            configSource_ != null &&
            configSource_ != io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance()) {
            getConfigSourceBuilder().mergeFrom(value);
          } else {
            configSource_ = value;
          }
        } else {
          configSourceBuilder_.mergeFrom(value);
        }
        if (configSource_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
       */
      public Builder clearConfigSource() {
        bitField0_ = (bitField0_ & ~0x00000020);
        configSource_ = null;
        if (configSourceBuilder_ != null) {
          configSourceBuilder_.dispose();
          configSourceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConfigSource.Builder getConfigSourceBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getConfigSourceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder getConfigSourceOrBuilder() {
        if (configSourceBuilder_ != null) {
          return configSourceBuilder_.getMessageOrBuilder();
        } else {
          return configSource_ == null ?
              io.kubernetes.client.proto.V1.NodeConfigSource.getDefaultInstance() : configSource_;
        }
      }
      /**
       * <pre>
       * Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigSource configSource = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder> 
          getConfigSourceFieldBuilder() {
        if (configSourceBuilder_ == null) {
          configSourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeConfigSource, io.kubernetes.client.proto.V1.NodeConfigSource.Builder, io.kubernetes.client.proto.V1.NodeConfigSourceOrBuilder>(
                  getConfigSource(),
                  getParentForChildren(),
                  isClean());
          configSource_ = null;
        }
        return configSourceBuilder_;
      }

      private java.lang.Object externalID_ = "";
      /**
       * <pre>
       * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
       * see: https://issues.k8s.io/61966
       * +optional
       * </pre>
       *
       * <code>optional string externalID = 2;</code>
       * @return Whether the externalID field is set.
       */
      public boolean hasExternalID() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
       * see: https://issues.k8s.io/61966
       * +optional
       * </pre>
       *
       * <code>optional string externalID = 2;</code>
       * @return The externalID.
       */
      public java.lang.String getExternalID() {
        java.lang.Object ref = externalID_;
        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()) {
            externalID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
       * see: https://issues.k8s.io/61966
       * +optional
       * </pre>
       *
       * <code>optional string externalID = 2;</code>
       * @return The bytes for externalID.
       */
      public com.google.protobuf.ByteString
          getExternalIDBytes() {
        java.lang.Object ref = externalID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          externalID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
       * see: https://issues.k8s.io/61966
       * +optional
       * </pre>
       *
       * <code>optional string externalID = 2;</code>
       * @param value The externalID to set.
       * @return This builder for chaining.
       */
      public Builder setExternalID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        externalID_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
       * see: https://issues.k8s.io/61966
       * +optional
       * </pre>
       *
       * <code>optional string externalID = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearExternalID() {
        externalID_ = getDefaultInstance().getExternalID();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. Not all kubelets will set this field. Remove field after 1.13.
       * see: https://issues.k8s.io/61966
       * +optional
       * </pre>
       *
       * <code>optional string externalID = 2;</code>
       * @param value The bytes for externalID to set.
       * @return This builder for chaining.
       */
      public Builder setExternalIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        externalID_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeSpec)
    private static final io.kubernetes.client.proto.V1.NodeSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeSpec();
    }

    public static io.kubernetes.client.proto.V1.NodeSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeSpec>
        PARSER = new com.google.protobuf.AbstractParser<NodeSpec>() {
      @java.lang.Override
      public NodeSpec 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<NodeSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Capacity represents the total resources of a node.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    int getCapacityCount();
    /**
     * <pre>
     * Capacity represents the total resources of a node.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    boolean containsCapacity(
        java.lang.String key);
    /**
     * Use {@link #getCapacityMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getCapacity();
    /**
     * <pre>
     * Capacity represents the total resources of a node.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getCapacityMap();
    /**
     * <pre>
     * Capacity represents the total resources of a node.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getCapacityOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Capacity represents the total resources of a node.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getCapacityOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Allocatable represents the resources of a node that are available for scheduling.
     * Defaults to Capacity.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
     */
    int getAllocatableCount();
    /**
     * <pre>
     * Allocatable represents the resources of a node that are available for scheduling.
     * Defaults to Capacity.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
     */
    boolean containsAllocatable(
        java.lang.String key);
    /**
     * Use {@link #getAllocatableMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getAllocatable();
    /**
     * <pre>
     * Allocatable represents the resources of a node that are available for scheduling.
     * Defaults to Capacity.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getAllocatableMap();
    /**
     * <pre>
     * Allocatable represents the resources of a node that are available for scheduling.
     * Defaults to Capacity.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getAllocatableOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Allocatable represents the resources of a node that are available for scheduling.
     * Defaults to Capacity.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getAllocatableOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * NodePhase is the recently observed lifecycle phase of the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
     * The field is never populated, and now is deprecated.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 3;</code>
     * @return Whether the phase field is set.
     */
    boolean hasPhase();
    /**
     * <pre>
     * NodePhase is the recently observed lifecycle phase of the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
     * The field is never populated, and now is deprecated.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 3;</code>
     * @return The phase.
     */
    java.lang.String getPhase();
    /**
     * <pre>
     * NodePhase is the recently observed lifecycle phase of the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
     * The field is never populated, and now is deprecated.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 3;</code>
     * @return The bytes for phase.
     */
    com.google.protobuf.ByteString
        getPhaseBytes();

    /**
     * <pre>
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.NodeCondition> 
        getConditionsList();
    /**
     * <pre>
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
     */
    io.kubernetes.client.proto.V1.NodeCondition getConditions(int index);
    /**
     * <pre>
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
     */
    int getConditionsCount();
    /**
     * <pre>
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.NodeConditionOrBuilder> 
        getConditionsOrBuilderList();
    /**
     * <pre>
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
     */
    io.kubernetes.client.proto.V1.NodeConditionOrBuilder getConditionsOrBuilder(
        int index);

    /**
     * <pre>
     * List of addresses reachable to the node.
     * Queried from cloud provider, if available.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
     * Note: This field is declared as mergeable, but the merge key is not sufficiently
     * unique, which can cause data corruption when it is merged. Callers should instead
     * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
     * Consumers should assume that addresses can change during the
     * lifetime of a Node. However, there are some exceptions where this may not
     * be possible, such as Pods that inherit a Node's address in its own status or
     * consumers of the downward API (status.hostIP).
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.NodeAddress> 
        getAddressesList();
    /**
     * <pre>
     * List of addresses reachable to the node.
     * Queried from cloud provider, if available.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
     * Note: This field is declared as mergeable, but the merge key is not sufficiently
     * unique, which can cause data corruption when it is merged. Callers should instead
     * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
     * Consumers should assume that addresses can change during the
     * lifetime of a Node. However, there are some exceptions where this may not
     * be possible, such as Pods that inherit a Node's address in its own status or
     * consumers of the downward API (status.hostIP).
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
     */
    io.kubernetes.client.proto.V1.NodeAddress getAddresses(int index);
    /**
     * <pre>
     * List of addresses reachable to the node.
     * Queried from cloud provider, if available.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
     * Note: This field is declared as mergeable, but the merge key is not sufficiently
     * unique, which can cause data corruption when it is merged. Callers should instead
     * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
     * Consumers should assume that addresses can change during the
     * lifetime of a Node. However, there are some exceptions where this may not
     * be possible, such as Pods that inherit a Node's address in its own status or
     * consumers of the downward API (status.hostIP).
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
     */
    int getAddressesCount();
    /**
     * <pre>
     * List of addresses reachable to the node.
     * Queried from cloud provider, if available.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
     * Note: This field is declared as mergeable, but the merge key is not sufficiently
     * unique, which can cause data corruption when it is merged. Callers should instead
     * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
     * Consumers should assume that addresses can change during the
     * lifetime of a Node. However, there are some exceptions where this may not
     * be possible, such as Pods that inherit a Node's address in its own status or
     * consumers of the downward API (status.hostIP).
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.NodeAddressOrBuilder> 
        getAddressesOrBuilderList();
    /**
     * <pre>
     * List of addresses reachable to the node.
     * Queried from cloud provider, if available.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
     * Note: This field is declared as mergeable, but the merge key is not sufficiently
     * unique, which can cause data corruption when it is merged. Callers should instead
     * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
     * Consumers should assume that addresses can change during the
     * lifetime of a Node. However, there are some exceptions where this may not
     * be possible, such as Pods that inherit a Node's address in its own status or
     * consumers of the downward API (status.hostIP).
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
     */
    io.kubernetes.client.proto.V1.NodeAddressOrBuilder getAddressesOrBuilder(
        int index);

    /**
     * <pre>
     * Endpoints of daemons running on the Node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
     * @return Whether the daemonEndpoints field is set.
     */
    boolean hasDaemonEndpoints();
    /**
     * <pre>
     * Endpoints of daemons running on the Node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
     * @return The daemonEndpoints.
     */
    io.kubernetes.client.proto.V1.NodeDaemonEndpoints getDaemonEndpoints();
    /**
     * <pre>
     * Endpoints of daemons running on the Node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
     */
    io.kubernetes.client.proto.V1.NodeDaemonEndpointsOrBuilder getDaemonEndpointsOrBuilder();

    /**
     * <pre>
     * Set of ids/uuids to uniquely identify the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
     * @return Whether the nodeInfo field is set.
     */
    boolean hasNodeInfo();
    /**
     * <pre>
     * Set of ids/uuids to uniquely identify the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
     * @return The nodeInfo.
     */
    io.kubernetes.client.proto.V1.NodeSystemInfo getNodeInfo();
    /**
     * <pre>
     * Set of ids/uuids to uniquely identify the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
     */
    io.kubernetes.client.proto.V1.NodeSystemInfoOrBuilder getNodeInfoOrBuilder();

    /**
     * <pre>
     * List of container images on this node
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ContainerImage> 
        getImagesList();
    /**
     * <pre>
     * List of container images on this node
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
     */
    io.kubernetes.client.proto.V1.ContainerImage getImages(int index);
    /**
     * <pre>
     * List of container images on this node
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
     */
    int getImagesCount();
    /**
     * <pre>
     * List of container images on this node
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ContainerImageOrBuilder> 
        getImagesOrBuilderList();
    /**
     * <pre>
     * List of container images on this node
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
     */
    io.kubernetes.client.proto.V1.ContainerImageOrBuilder getImagesOrBuilder(
        int index);

    /**
     * <pre>
     * List of attachable volumes in use (mounted) by the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string volumesInUse = 9;</code>
     * @return A list containing the volumesInUse.
     */
    java.util.List<java.lang.String>
        getVolumesInUseList();
    /**
     * <pre>
     * List of attachable volumes in use (mounted) by the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string volumesInUse = 9;</code>
     * @return The count of volumesInUse.
     */
    int getVolumesInUseCount();
    /**
     * <pre>
     * List of attachable volumes in use (mounted) by the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string volumesInUse = 9;</code>
     * @param index The index of the element to return.
     * @return The volumesInUse at the given index.
     */
    java.lang.String getVolumesInUse(int index);
    /**
     * <pre>
     * List of attachable volumes in use (mounted) by the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string volumesInUse = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the volumesInUse at the given index.
     */
    com.google.protobuf.ByteString
        getVolumesInUseBytes(int index);

    /**
     * <pre>
     * List of volumes that are attached to the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.AttachedVolume> 
        getVolumesAttachedList();
    /**
     * <pre>
     * List of volumes that are attached to the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
     */
    io.kubernetes.client.proto.V1.AttachedVolume getVolumesAttached(int index);
    /**
     * <pre>
     * List of volumes that are attached to the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
     */
    int getVolumesAttachedCount();
    /**
     * <pre>
     * List of volumes that are attached to the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.AttachedVolumeOrBuilder> 
        getVolumesAttachedOrBuilderList();
    /**
     * <pre>
     * List of volumes that are attached to the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
     */
    io.kubernetes.client.proto.V1.AttachedVolumeOrBuilder getVolumesAttachedOrBuilder(
        int index);

    /**
     * <pre>
     * Status of the config assigned to the node via the dynamic Kubelet config feature.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
     * @return Whether the config field is set.
     */
    boolean hasConfig();
    /**
     * <pre>
     * Status of the config assigned to the node via the dynamic Kubelet config feature.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
     * @return The config.
     */
    io.kubernetes.client.proto.V1.NodeConfigStatus getConfig();
    /**
     * <pre>
     * Status of the config assigned to the node via the dynamic Kubelet config feature.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
     */
    io.kubernetes.client.proto.V1.NodeConfigStatusOrBuilder getConfigOrBuilder();

    /**
     * <pre>
     * The available runtime handlers.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.NodeRuntimeHandler> 
        getRuntimeHandlersList();
    /**
     * <pre>
     * The available runtime handlers.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
     */
    io.kubernetes.client.proto.V1.NodeRuntimeHandler getRuntimeHandlers(int index);
    /**
     * <pre>
     * The available runtime handlers.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
     */
    int getRuntimeHandlersCount();
    /**
     * <pre>
     * The available runtime handlers.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.NodeRuntimeHandlerOrBuilder> 
        getRuntimeHandlersOrBuilderList();
    /**
     * <pre>
     * The available runtime handlers.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
     */
    io.kubernetes.client.proto.V1.NodeRuntimeHandlerOrBuilder getRuntimeHandlersOrBuilder(
        int index);
  }
  /**
   * <pre>
   * NodeStatus is information about the current status of a node.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeStatus}
   */
  public static final class NodeStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeStatus)
      NodeStatusOrBuilder {
  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= */ "",
        NodeStatus.class.getName());
    }
    // Use NodeStatus.newBuilder() to construct.
    private NodeStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeStatus() {
      phase_ = "";
      conditions_ = java.util.Collections.emptyList();
      addresses_ = java.util.Collections.emptyList();
      images_ = java.util.Collections.emptyList();
      volumesInUse_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      volumesAttached_ = java.util.Collections.emptyList();
      runtimeHandlers_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeStatus_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 1:
          return internalGetCapacity();
        case 2:
          return internalGetAllocatable();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeStatus.class, io.kubernetes.client.proto.V1.NodeStatus.Builder.class);
    }

    private int bitField0_;
    public static final int CAPACITY_FIELD_NUMBER = 1;
    private static final class CapacityDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeStatus_CapacityEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> capacity_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetCapacity() {
      if (capacity_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            CapacityDefaultEntryHolder.defaultEntry);
      }
      return capacity_;
    }
    public int getCapacityCount() {
      return internalGetCapacity().getMap().size();
    }
    /**
     * <pre>
     * Capacity represents the total resources of a node.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    @java.lang.Override
    public boolean containsCapacity(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetCapacity().getMap().containsKey(key);
    }
    /**
     * Use {@link #getCapacityMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacity() {
      return getCapacityMap();
    }
    /**
     * <pre>
     * Capacity represents the total resources of a node.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacityMap() {
      return internalGetCapacity().getMap();
    }
    /**
     * <pre>
     * Capacity represents the total resources of a node.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getCapacityOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetCapacity().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Capacity represents the total resources of a node.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getCapacityOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetCapacity().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int ALLOCATABLE_FIELD_NUMBER = 2;
    private static final class AllocatableDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeStatus_AllocatableEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> allocatable_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetAllocatable() {
      if (allocatable_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            AllocatableDefaultEntryHolder.defaultEntry);
      }
      return allocatable_;
    }
    public int getAllocatableCount() {
      return internalGetAllocatable().getMap().size();
    }
    /**
     * <pre>
     * Allocatable represents the resources of a node that are available for scheduling.
     * Defaults to Capacity.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
     */
    @java.lang.Override
    public boolean containsAllocatable(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetAllocatable().getMap().containsKey(key);
    }
    /**
     * Use {@link #getAllocatableMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatable() {
      return getAllocatableMap();
    }
    /**
     * <pre>
     * Allocatable represents the resources of a node that are available for scheduling.
     * Defaults to Capacity.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatableMap() {
      return internalGetAllocatable().getMap();
    }
    /**
     * <pre>
     * Allocatable represents the resources of a node that are available for scheduling.
     * Defaults to Capacity.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getAllocatableOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetAllocatable().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Allocatable represents the resources of a node that are available for scheduling.
     * Defaults to Capacity.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getAllocatableOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetAllocatable().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int PHASE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object phase_ = "";
    /**
     * <pre>
     * NodePhase is the recently observed lifecycle phase of the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
     * The field is never populated, and now is deprecated.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 3;</code>
     * @return Whether the phase field is set.
     */
    @java.lang.Override
    public boolean hasPhase() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * NodePhase is the recently observed lifecycle phase of the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
     * The field is never populated, and now is deprecated.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 3;</code>
     * @return The phase.
     */
    @java.lang.Override
    public java.lang.String getPhase() {
      java.lang.Object ref = phase_;
      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()) {
          phase_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * NodePhase is the recently observed lifecycle phase of the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
     * The field is never populated, and now is deprecated.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 3;</code>
     * @return The bytes for phase.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPhaseBytes() {
      java.lang.Object ref = phase_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        phase_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONDITIONS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.NodeCondition> conditions_;
    /**
     * <pre>
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.NodeCondition> getConditionsList() {
      return conditions_;
    }
    /**
     * <pre>
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.NodeConditionOrBuilder> 
        getConditionsOrBuilderList() {
      return conditions_;
    }
    /**
     * <pre>
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
     */
    @java.lang.Override
    public int getConditionsCount() {
      return conditions_.size();
    }
    /**
     * <pre>
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeCondition getConditions(int index) {
      return conditions_.get(index);
    }
    /**
     * <pre>
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConditionOrBuilder getConditionsOrBuilder(
        int index) {
      return conditions_.get(index);
    }

    public static final int ADDRESSES_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.NodeAddress> addresses_;
    /**
     * <pre>
     * List of addresses reachable to the node.
     * Queried from cloud provider, if available.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
     * Note: This field is declared as mergeable, but the merge key is not sufficiently
     * unique, which can cause data corruption when it is merged. Callers should instead
     * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
     * Consumers should assume that addresses can change during the
     * lifetime of a Node. However, there are some exceptions where this may not
     * be possible, such as Pods that inherit a Node's address in its own status or
     * consumers of the downward API (status.hostIP).
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.NodeAddress> getAddressesList() {
      return addresses_;
    }
    /**
     * <pre>
     * List of addresses reachable to the node.
     * Queried from cloud provider, if available.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
     * Note: This field is declared as mergeable, but the merge key is not sufficiently
     * unique, which can cause data corruption when it is merged. Callers should instead
     * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
     * Consumers should assume that addresses can change during the
     * lifetime of a Node. However, there are some exceptions where this may not
     * be possible, such as Pods that inherit a Node's address in its own status or
     * consumers of the downward API (status.hostIP).
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.NodeAddressOrBuilder> 
        getAddressesOrBuilderList() {
      return addresses_;
    }
    /**
     * <pre>
     * List of addresses reachable to the node.
     * Queried from cloud provider, if available.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
     * Note: This field is declared as mergeable, but the merge key is not sufficiently
     * unique, which can cause data corruption when it is merged. Callers should instead
     * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
     * Consumers should assume that addresses can change during the
     * lifetime of a Node. However, there are some exceptions where this may not
     * be possible, such as Pods that inherit a Node's address in its own status or
     * consumers of the downward API (status.hostIP).
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
     */
    @java.lang.Override
    public int getAddressesCount() {
      return addresses_.size();
    }
    /**
     * <pre>
     * List of addresses reachable to the node.
     * Queried from cloud provider, if available.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
     * Note: This field is declared as mergeable, but the merge key is not sufficiently
     * unique, which can cause data corruption when it is merged. Callers should instead
     * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
     * Consumers should assume that addresses can change during the
     * lifetime of a Node. However, there are some exceptions where this may not
     * be possible, such as Pods that inherit a Node's address in its own status or
     * consumers of the downward API (status.hostIP).
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeAddress getAddresses(int index) {
      return addresses_.get(index);
    }
    /**
     * <pre>
     * List of addresses reachable to the node.
     * Queried from cloud provider, if available.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
     * Note: This field is declared as mergeable, but the merge key is not sufficiently
     * unique, which can cause data corruption when it is merged. Callers should instead
     * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
     * Consumers should assume that addresses can change during the
     * lifetime of a Node. However, there are some exceptions where this may not
     * be possible, such as Pods that inherit a Node's address in its own status or
     * consumers of the downward API (status.hostIP).
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeAddressOrBuilder getAddressesOrBuilder(
        int index) {
      return addresses_.get(index);
    }

    public static final int DAEMONENDPOINTS_FIELD_NUMBER = 6;
    private io.kubernetes.client.proto.V1.NodeDaemonEndpoints daemonEndpoints_;
    /**
     * <pre>
     * Endpoints of daemons running on the Node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
     * @return Whether the daemonEndpoints field is set.
     */
    @java.lang.Override
    public boolean hasDaemonEndpoints() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Endpoints of daemons running on the Node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
     * @return The daemonEndpoints.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeDaemonEndpoints getDaemonEndpoints() {
      return daemonEndpoints_ == null ? io.kubernetes.client.proto.V1.NodeDaemonEndpoints.getDefaultInstance() : daemonEndpoints_;
    }
    /**
     * <pre>
     * Endpoints of daemons running on the Node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeDaemonEndpointsOrBuilder getDaemonEndpointsOrBuilder() {
      return daemonEndpoints_ == null ? io.kubernetes.client.proto.V1.NodeDaemonEndpoints.getDefaultInstance() : daemonEndpoints_;
    }

    public static final int NODEINFO_FIELD_NUMBER = 7;
    private io.kubernetes.client.proto.V1.NodeSystemInfo nodeInfo_;
    /**
     * <pre>
     * Set of ids/uuids to uniquely identify the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
     * @return Whether the nodeInfo field is set.
     */
    @java.lang.Override
    public boolean hasNodeInfo() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Set of ids/uuids to uniquely identify the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
     * @return The nodeInfo.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSystemInfo getNodeInfo() {
      return nodeInfo_ == null ? io.kubernetes.client.proto.V1.NodeSystemInfo.getDefaultInstance() : nodeInfo_;
    }
    /**
     * <pre>
     * Set of ids/uuids to uniquely identify the node.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSystemInfoOrBuilder getNodeInfoOrBuilder() {
      return nodeInfo_ == null ? io.kubernetes.client.proto.V1.NodeSystemInfo.getDefaultInstance() : nodeInfo_;
    }

    public static final int IMAGES_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ContainerImage> images_;
    /**
     * <pre>
     * List of container images on this node
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ContainerImage> getImagesList() {
      return images_;
    }
    /**
     * <pre>
     * List of container images on this node
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerImageOrBuilder> 
        getImagesOrBuilderList() {
      return images_;
    }
    /**
     * <pre>
     * List of container images on this node
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
     */
    @java.lang.Override
    public int getImagesCount() {
      return images_.size();
    }
    /**
     * <pre>
     * List of container images on this node
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerImage getImages(int index) {
      return images_.get(index);
    }
    /**
     * <pre>
     * List of container images on this node
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerImageOrBuilder getImagesOrBuilder(
        int index) {
      return images_.get(index);
    }

    public static final int VOLUMESINUSE_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList volumesInUse_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * List of attachable volumes in use (mounted) by the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string volumesInUse = 9;</code>
     * @return A list containing the volumesInUse.
     */
    public com.google.protobuf.ProtocolStringList
        getVolumesInUseList() {
      return volumesInUse_;
    }
    /**
     * <pre>
     * List of attachable volumes in use (mounted) by the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string volumesInUse = 9;</code>
     * @return The count of volumesInUse.
     */
    public int getVolumesInUseCount() {
      return volumesInUse_.size();
    }
    /**
     * <pre>
     * List of attachable volumes in use (mounted) by the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string volumesInUse = 9;</code>
     * @param index The index of the element to return.
     * @return The volumesInUse at the given index.
     */
    public java.lang.String getVolumesInUse(int index) {
      return volumesInUse_.get(index);
    }
    /**
     * <pre>
     * List of attachable volumes in use (mounted) by the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string volumesInUse = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the volumesInUse at the given index.
     */
    public com.google.protobuf.ByteString
        getVolumesInUseBytes(int index) {
      return volumesInUse_.getByteString(index);
    }

    public static final int VOLUMESATTACHED_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.AttachedVolume> volumesAttached_;
    /**
     * <pre>
     * List of volumes that are attached to the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.AttachedVolume> getVolumesAttachedList() {
      return volumesAttached_;
    }
    /**
     * <pre>
     * List of volumes that are attached to the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.AttachedVolumeOrBuilder> 
        getVolumesAttachedOrBuilderList() {
      return volumesAttached_;
    }
    /**
     * <pre>
     * List of volumes that are attached to the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
     */
    @java.lang.Override
    public int getVolumesAttachedCount() {
      return volumesAttached_.size();
    }
    /**
     * <pre>
     * List of volumes that are attached to the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AttachedVolume getVolumesAttached(int index) {
      return volumesAttached_.get(index);
    }
    /**
     * <pre>
     * List of volumes that are attached to the node.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AttachedVolumeOrBuilder getVolumesAttachedOrBuilder(
        int index) {
      return volumesAttached_.get(index);
    }

    public static final int CONFIG_FIELD_NUMBER = 11;
    private io.kubernetes.client.proto.V1.NodeConfigStatus config_;
    /**
     * <pre>
     * Status of the config assigned to the node via the dynamic Kubelet config feature.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
     * @return Whether the config field is set.
     */
    @java.lang.Override
    public boolean hasConfig() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Status of the config assigned to the node via the dynamic Kubelet config feature.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
     * @return The config.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigStatus getConfig() {
      return config_ == null ? io.kubernetes.client.proto.V1.NodeConfigStatus.getDefaultInstance() : config_;
    }
    /**
     * <pre>
     * Status of the config assigned to the node via the dynamic Kubelet config feature.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeConfigStatusOrBuilder getConfigOrBuilder() {
      return config_ == null ? io.kubernetes.client.proto.V1.NodeConfigStatus.getDefaultInstance() : config_;
    }

    public static final int RUNTIMEHANDLERS_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.NodeRuntimeHandler> runtimeHandlers_;
    /**
     * <pre>
     * The available runtime handlers.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.NodeRuntimeHandler> getRuntimeHandlersList() {
      return runtimeHandlers_;
    }
    /**
     * <pre>
     * The available runtime handlers.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.NodeRuntimeHandlerOrBuilder> 
        getRuntimeHandlersOrBuilderList() {
      return runtimeHandlers_;
    }
    /**
     * <pre>
     * The available runtime handlers.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
     */
    @java.lang.Override
    public int getRuntimeHandlersCount() {
      return runtimeHandlers_.size();
    }
    /**
     * <pre>
     * The available runtime handlers.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeRuntimeHandler getRuntimeHandlers(int index) {
      return runtimeHandlers_.get(index);
    }
    /**
     * <pre>
     * The available runtime handlers.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeRuntimeHandlerOrBuilder getRuntimeHandlersOrBuilder(
        int index) {
      return runtimeHandlers_.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 {
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetCapacity(),
          CapacityDefaultEntryHolder.defaultEntry,
          1);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetAllocatable(),
          AllocatableDefaultEntryHolder.defaultEntry,
          2);
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, phase_);
      }
      for (int i = 0; i < conditions_.size(); i++) {
        output.writeMessage(4, conditions_.get(i));
      }
      for (int i = 0; i < addresses_.size(); i++) {
        output.writeMessage(5, addresses_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(6, getDaemonEndpoints());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(7, getNodeInfo());
      }
      for (int i = 0; i < images_.size(); i++) {
        output.writeMessage(8, images_.get(i));
      }
      for (int i = 0; i < volumesInUse_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, volumesInUse_.getRaw(i));
      }
      for (int i = 0; i < volumesAttached_.size(); i++) {
        output.writeMessage(10, volumesAttached_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(11, getConfig());
      }
      for (int i = 0; i < runtimeHandlers_.size(); i++) {
        output.writeMessage(12, runtimeHandlers_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetCapacity().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        capacity__ = CapacityDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, capacity__);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetAllocatable().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        allocatable__ = AllocatableDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, allocatable__);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, phase_);
      }
      for (int i = 0; i < conditions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, conditions_.get(i));
      }
      for (int i = 0; i < addresses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, addresses_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getDaemonEndpoints());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getNodeInfo());
      }
      for (int i = 0; i < images_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, images_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < volumesInUse_.size(); i++) {
          dataSize += computeStringSizeNoTag(volumesInUse_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getVolumesInUseList().size();
      }
      for (int i = 0; i < volumesAttached_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, volumesAttached_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getConfig());
      }
      for (int i = 0; i < runtimeHandlers_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, runtimeHandlers_.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.V1.NodeStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeStatus other = (io.kubernetes.client.proto.V1.NodeStatus) obj;

      if (!internalGetCapacity().equals(
          other.internalGetCapacity())) return false;
      if (!internalGetAllocatable().equals(
          other.internalGetAllocatable())) return false;
      if (hasPhase() != other.hasPhase()) return false;
      if (hasPhase()) {
        if (!getPhase()
            .equals(other.getPhase())) return false;
      }
      if (!getConditionsList()
          .equals(other.getConditionsList())) return false;
      if (!getAddressesList()
          .equals(other.getAddressesList())) return false;
      if (hasDaemonEndpoints() != other.hasDaemonEndpoints()) return false;
      if (hasDaemonEndpoints()) {
        if (!getDaemonEndpoints()
            .equals(other.getDaemonEndpoints())) return false;
      }
      if (hasNodeInfo() != other.hasNodeInfo()) return false;
      if (hasNodeInfo()) {
        if (!getNodeInfo()
            .equals(other.getNodeInfo())) return false;
      }
      if (!getImagesList()
          .equals(other.getImagesList())) return false;
      if (!getVolumesInUseList()
          .equals(other.getVolumesInUseList())) return false;
      if (!getVolumesAttachedList()
          .equals(other.getVolumesAttachedList())) return false;
      if (hasConfig() != other.hasConfig()) return false;
      if (hasConfig()) {
        if (!getConfig()
            .equals(other.getConfig())) return false;
      }
      if (!getRuntimeHandlersList()
          .equals(other.getRuntimeHandlersList())) 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 (!internalGetCapacity().getMap().isEmpty()) {
        hash = (37 * hash) + CAPACITY_FIELD_NUMBER;
        hash = (53 * hash) + internalGetCapacity().hashCode();
      }
      if (!internalGetAllocatable().getMap().isEmpty()) {
        hash = (37 * hash) + ALLOCATABLE_FIELD_NUMBER;
        hash = (53 * hash) + internalGetAllocatable().hashCode();
      }
      if (hasPhase()) {
        hash = (37 * hash) + PHASE_FIELD_NUMBER;
        hash = (53 * hash) + getPhase().hashCode();
      }
      if (getConditionsCount() > 0) {
        hash = (37 * hash) + CONDITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConditionsList().hashCode();
      }
      if (getAddressesCount() > 0) {
        hash = (37 * hash) + ADDRESSES_FIELD_NUMBER;
        hash = (53 * hash) + getAddressesList().hashCode();
      }
      if (hasDaemonEndpoints()) {
        hash = (37 * hash) + DAEMONENDPOINTS_FIELD_NUMBER;
        hash = (53 * hash) + getDaemonEndpoints().hashCode();
      }
      if (hasNodeInfo()) {
        hash = (37 * hash) + NODEINFO_FIELD_NUMBER;
        hash = (53 * hash) + getNodeInfo().hashCode();
      }
      if (getImagesCount() > 0) {
        hash = (37 * hash) + IMAGES_FIELD_NUMBER;
        hash = (53 * hash) + getImagesList().hashCode();
      }
      if (getVolumesInUseCount() > 0) {
        hash = (37 * hash) + VOLUMESINUSE_FIELD_NUMBER;
        hash = (53 * hash) + getVolumesInUseList().hashCode();
      }
      if (getVolumesAttachedCount() > 0) {
        hash = (37 * hash) + VOLUMESATTACHED_FIELD_NUMBER;
        hash = (53 * hash) + getVolumesAttachedList().hashCode();
      }
      if (hasConfig()) {
        hash = (37 * hash) + CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getConfig().hashCode();
      }
      if (getRuntimeHandlersCount() > 0) {
        hash = (37 * hash) + RUNTIMEHANDLERS_FIELD_NUMBER;
        hash = (53 * hash) + getRuntimeHandlersList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeStatus 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.V1.NodeStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeStatus 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.V1.NodeStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeStatus 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.V1.NodeStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeStatus 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.V1.NodeStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeStatus 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.V1.NodeStatus 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>
     * NodeStatus is information about the current status of a node.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeStatus)
        io.kubernetes.client.proto.V1.NodeStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeStatus_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetCapacity();
          case 2:
            return internalGetAllocatable();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableCapacity();
          case 2:
            return internalGetMutableAllocatable();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeStatus.class, io.kubernetes.client.proto.V1.NodeStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeStatus.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();
          getAddressesFieldBuilder();
          getDaemonEndpointsFieldBuilder();
          getNodeInfoFieldBuilder();
          getImagesFieldBuilder();
          getVolumesAttachedFieldBuilder();
          getConfigFieldBuilder();
          getRuntimeHandlersFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableCapacity().clear();
        internalGetMutableAllocatable().clear();
        phase_ = "";
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
        } else {
          conditions_ = null;
          conditionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (addressesBuilder_ == null) {
          addresses_ = java.util.Collections.emptyList();
        } else {
          addresses_ = null;
          addressesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        daemonEndpoints_ = null;
        if (daemonEndpointsBuilder_ != null) {
          daemonEndpointsBuilder_.dispose();
          daemonEndpointsBuilder_ = null;
        }
        nodeInfo_ = null;
        if (nodeInfoBuilder_ != null) {
          nodeInfoBuilder_.dispose();
          nodeInfoBuilder_ = null;
        }
        if (imagesBuilder_ == null) {
          images_ = java.util.Collections.emptyList();
        } else {
          images_ = null;
          imagesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        volumesInUse_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        if (volumesAttachedBuilder_ == null) {
          volumesAttached_ = java.util.Collections.emptyList();
        } else {
          volumesAttached_ = null;
          volumesAttachedBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        config_ = null;
        if (configBuilder_ != null) {
          configBuilder_.dispose();
          configBuilder_ = null;
        }
        if (runtimeHandlersBuilder_ == null) {
          runtimeHandlers_ = java.util.Collections.emptyList();
        } else {
          runtimeHandlers_ = null;
          runtimeHandlersBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeStatus build() {
        io.kubernetes.client.proto.V1.NodeStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeStatus buildPartial() {
        io.kubernetes.client.proto.V1.NodeStatus result = new io.kubernetes.client.proto.V1.NodeStatus(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.NodeStatus result) {
        if (conditionsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            conditions_ = java.util.Collections.unmodifiableList(conditions_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.conditions_ = conditions_;
        } else {
          result.conditions_ = conditionsBuilder_.build();
        }
        if (addressesBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            addresses_ = java.util.Collections.unmodifiableList(addresses_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.addresses_ = addresses_;
        } else {
          result.addresses_ = addressesBuilder_.build();
        }
        if (imagesBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            images_ = java.util.Collections.unmodifiableList(images_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.images_ = images_;
        } else {
          result.images_ = imagesBuilder_.build();
        }
        if (volumesAttachedBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0)) {
            volumesAttached_ = java.util.Collections.unmodifiableList(volumesAttached_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.volumesAttached_ = volumesAttached_;
        } else {
          result.volumesAttached_ = volumesAttachedBuilder_.build();
        }
        if (runtimeHandlersBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0)) {
            runtimeHandlers_ = java.util.Collections.unmodifiableList(runtimeHandlers_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.runtimeHandlers_ = runtimeHandlers_;
        } else {
          result.runtimeHandlers_ = runtimeHandlersBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeStatus result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.capacity_ = internalGetCapacity().build(CapacityDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.allocatable_ = internalGetAllocatable().build(AllocatableDefaultEntryHolder.defaultEntry);
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.phase_ = phase_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.daemonEndpoints_ = daemonEndpointsBuilder_ == null
              ? daemonEndpoints_
              : daemonEndpointsBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.nodeInfo_ = nodeInfoBuilder_ == null
              ? nodeInfo_
              : nodeInfoBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          volumesInUse_.makeImmutable();
          result.volumesInUse_ = volumesInUse_;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.config_ = configBuilder_ == null
              ? config_
              : configBuilder_.build();
          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.V1.NodeStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeStatus other) {
        if (other == io.kubernetes.client.proto.V1.NodeStatus.getDefaultInstance()) return this;
        internalGetMutableCapacity().mergeFrom(
            other.internalGetCapacity());
        bitField0_ |= 0x00000001;
        internalGetMutableAllocatable().mergeFrom(
            other.internalGetAllocatable());
        bitField0_ |= 0x00000002;
        if (other.hasPhase()) {
          phase_ = other.phase_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (conditionsBuilder_ == null) {
          if (!other.conditions_.isEmpty()) {
            if (conditions_.isEmpty()) {
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureConditionsIsMutable();
              conditions_.addAll(other.conditions_);
            }
            onChanged();
          }
        } else {
          if (!other.conditions_.isEmpty()) {
            if (conditionsBuilder_.isEmpty()) {
              conditionsBuilder_.dispose();
              conditionsBuilder_ = null;
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000008);
              conditionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getConditionsFieldBuilder() : null;
            } else {
              conditionsBuilder_.addAllMessages(other.conditions_);
            }
          }
        }
        if (addressesBuilder_ == null) {
          if (!other.addresses_.isEmpty()) {
            if (addresses_.isEmpty()) {
              addresses_ = other.addresses_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureAddressesIsMutable();
              addresses_.addAll(other.addresses_);
            }
            onChanged();
          }
        } else {
          if (!other.addresses_.isEmpty()) {
            if (addressesBuilder_.isEmpty()) {
              addressesBuilder_.dispose();
              addressesBuilder_ = null;
              addresses_ = other.addresses_;
              bitField0_ = (bitField0_ & ~0x00000010);
              addressesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAddressesFieldBuilder() : null;
            } else {
              addressesBuilder_.addAllMessages(other.addresses_);
            }
          }
        }
        if (other.hasDaemonEndpoints()) {
          mergeDaemonEndpoints(other.getDaemonEndpoints());
        }
        if (other.hasNodeInfo()) {
          mergeNodeInfo(other.getNodeInfo());
        }
        if (imagesBuilder_ == null) {
          if (!other.images_.isEmpty()) {
            if (images_.isEmpty()) {
              images_ = other.images_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureImagesIsMutable();
              images_.addAll(other.images_);
            }
            onChanged();
          }
        } else {
          if (!other.images_.isEmpty()) {
            if (imagesBuilder_.isEmpty()) {
              imagesBuilder_.dispose();
              imagesBuilder_ = null;
              images_ = other.images_;
              bitField0_ = (bitField0_ & ~0x00000080);
              imagesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getImagesFieldBuilder() : null;
            } else {
              imagesBuilder_.addAllMessages(other.images_);
            }
          }
        }
        if (!other.volumesInUse_.isEmpty()) {
          if (volumesInUse_.isEmpty()) {
            volumesInUse_ = other.volumesInUse_;
            bitField0_ |= 0x00000100;
          } else {
            ensureVolumesInUseIsMutable();
            volumesInUse_.addAll(other.volumesInUse_);
          }
          onChanged();
        }
        if (volumesAttachedBuilder_ == null) {
          if (!other.volumesAttached_.isEmpty()) {
            if (volumesAttached_.isEmpty()) {
              volumesAttached_ = other.volumesAttached_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureVolumesAttachedIsMutable();
              volumesAttached_.addAll(other.volumesAttached_);
            }
            onChanged();
          }
        } else {
          if (!other.volumesAttached_.isEmpty()) {
            if (volumesAttachedBuilder_.isEmpty()) {
              volumesAttachedBuilder_.dispose();
              volumesAttachedBuilder_ = null;
              volumesAttached_ = other.volumesAttached_;
              bitField0_ = (bitField0_ & ~0x00000200);
              volumesAttachedBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVolumesAttachedFieldBuilder() : null;
            } else {
              volumesAttachedBuilder_.addAllMessages(other.volumesAttached_);
            }
          }
        }
        if (other.hasConfig()) {
          mergeConfig(other.getConfig());
        }
        if (runtimeHandlersBuilder_ == null) {
          if (!other.runtimeHandlers_.isEmpty()) {
            if (runtimeHandlers_.isEmpty()) {
              runtimeHandlers_ = other.runtimeHandlers_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureRuntimeHandlersIsMutable();
              runtimeHandlers_.addAll(other.runtimeHandlers_);
            }
            onChanged();
          }
        } else {
          if (!other.runtimeHandlers_.isEmpty()) {
            if (runtimeHandlersBuilder_.isEmpty()) {
              runtimeHandlersBuilder_.dispose();
              runtimeHandlersBuilder_ = null;
              runtimeHandlers_ = other.runtimeHandlers_;
              bitField0_ = (bitField0_ & ~0x00000800);
              runtimeHandlersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getRuntimeHandlersFieldBuilder() : null;
            } else {
              runtimeHandlersBuilder_.addAllMessages(other.runtimeHandlers_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                capacity__ = input.readMessage(
                    CapacityDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableCapacity().ensureBuilderMap().put(
                    capacity__.getKey(), capacity__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                allocatable__ = input.readMessage(
                    AllocatableDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableAllocatable().ensureBuilderMap().put(
                    allocatable__.getKey(), allocatable__.getValue());
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                phase_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                io.kubernetes.client.proto.V1.NodeCondition m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.NodeCondition.parser(),
                        extensionRegistry);
                if (conditionsBuilder_ == null) {
                  ensureConditionsIsMutable();
                  conditions_.add(m);
                } else {
                  conditionsBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 42: {
                io.kubernetes.client.proto.V1.NodeAddress m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.NodeAddress.parser(),
                        extensionRegistry);
                if (addressesBuilder_ == null) {
                  ensureAddressesIsMutable();
                  addresses_.add(m);
                } else {
                  addressesBuilder_.addMessage(m);
                }
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getDaemonEndpointsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getNodeInfoFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                io.kubernetes.client.proto.V1.ContainerImage m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ContainerImage.parser(),
                        extensionRegistry);
                if (imagesBuilder_ == null) {
                  ensureImagesIsMutable();
                  images_.add(m);
                } else {
                  imagesBuilder_.addMessage(m);
                }
                break;
              } // case 66
              case 74: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureVolumesInUseIsMutable();
                volumesInUse_.add(bs);
                break;
              } // case 74
              case 82: {
                io.kubernetes.client.proto.V1.AttachedVolume m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.AttachedVolume.parser(),
                        extensionRegistry);
                if (volumesAttachedBuilder_ == null) {
                  ensureVolumesAttachedIsMutable();
                  volumesAttached_.add(m);
                } else {
                  volumesAttachedBuilder_.addMessage(m);
                }
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getConfigFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              case 98: {
                io.kubernetes.client.proto.V1.NodeRuntimeHandler m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.NodeRuntimeHandler.parser(),
                        extensionRegistry);
                if (runtimeHandlersBuilder_ == null) {
                  ensureRuntimeHandlersIsMutable();
                  runtimeHandlers_.add(m);
                } else {
                  runtimeHandlersBuilder_.addMessage(m);
                }
                break;
              } // case 98
              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 static final class CapacityConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return CapacityDefaultEntryHolder.defaultEntry;
        }
      };
      private static final CapacityConverter capacityConverter = new CapacityConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> capacity_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetCapacity() {
        if (capacity_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(capacityConverter);
        }
        return capacity_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableCapacity() {
        if (capacity_ == null) {
          capacity_ = new com.google.protobuf.MapFieldBuilder<>(capacityConverter);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return capacity_;
      }
      public int getCapacityCount() {
        return internalGetCapacity().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Capacity represents the total resources of a node.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      @java.lang.Override
      public boolean containsCapacity(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetCapacity().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getCapacityMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacity() {
        return getCapacityMap();
      }
      /**
       * <pre>
       * Capacity represents the total resources of a node.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacityMap() {
        return internalGetCapacity().getImmutableMap();
      }
      /**
       * <pre>
       * Capacity represents the total resources of a node.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getCapacityOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableCapacity().ensureBuilderMap();
        return map.containsKey(key) ? capacityConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Capacity represents the total resources of a node.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getCapacityOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableCapacity().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return capacityConverter.build(map.get(key));
      }
      public Builder clearCapacity() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableCapacity().clear();
        return this;
      }
      /**
       * <pre>
       * Capacity represents the total resources of a node.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      public Builder removeCapacity(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableCapacity().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableCapacity() {
        bitField0_ |= 0x00000001;
        return internalGetMutableCapacity().ensureMessageMap();
      }
      /**
       * <pre>
       * Capacity represents the total resources of a node.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      public Builder putCapacity(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableCapacity().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Capacity represents the total resources of a node.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      public Builder putAllCapacity(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableCapacity().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Capacity represents the total resources of a node.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putCapacityBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableCapacity().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private static final class AllocatableConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return AllocatableDefaultEntryHolder.defaultEntry;
        }
      };
      private static final AllocatableConverter allocatableConverter = new AllocatableConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> allocatable_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetAllocatable() {
        if (allocatable_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(allocatableConverter);
        }
        return allocatable_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableAllocatable() {
        if (allocatable_ == null) {
          allocatable_ = new com.google.protobuf.MapFieldBuilder<>(allocatableConverter);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return allocatable_;
      }
      public int getAllocatableCount() {
        return internalGetAllocatable().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Allocatable represents the resources of a node that are available for scheduling.
       * Defaults to Capacity.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
       */
      @java.lang.Override
      public boolean containsAllocatable(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetAllocatable().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getAllocatableMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatable() {
        return getAllocatableMap();
      }
      /**
       * <pre>
       * Allocatable represents the resources of a node that are available for scheduling.
       * Defaults to Capacity.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatableMap() {
        return internalGetAllocatable().getImmutableMap();
      }
      /**
       * <pre>
       * Allocatable represents the resources of a node that are available for scheduling.
       * Defaults to Capacity.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getAllocatableOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableAllocatable().ensureBuilderMap();
        return map.containsKey(key) ? allocatableConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Allocatable represents the resources of a node that are available for scheduling.
       * Defaults to Capacity.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getAllocatableOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableAllocatable().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return allocatableConverter.build(map.get(key));
      }
      public Builder clearAllocatable() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableAllocatable().clear();
        return this;
      }
      /**
       * <pre>
       * Allocatable represents the resources of a node that are available for scheduling.
       * Defaults to Capacity.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
       */
      public Builder removeAllocatable(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableAllocatable().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableAllocatable() {
        bitField0_ |= 0x00000002;
        return internalGetMutableAllocatable().ensureMessageMap();
      }
      /**
       * <pre>
       * Allocatable represents the resources of a node that are available for scheduling.
       * Defaults to Capacity.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
       */
      public Builder putAllocatable(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableAllocatable().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Allocatable represents the resources of a node that are available for scheduling.
       * Defaults to Capacity.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
       */
      public Builder putAllAllocatable(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableAllocatable().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Allocatable represents the resources of a node that are available for scheduling.
       * Defaults to Capacity.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatable = 2;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putAllocatableBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableAllocatable().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private java.lang.Object phase_ = "";
      /**
       * <pre>
       * NodePhase is the recently observed lifecycle phase of the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
       * The field is never populated, and now is deprecated.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 3;</code>
       * @return Whether the phase field is set.
       */
      public boolean hasPhase() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * NodePhase is the recently observed lifecycle phase of the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
       * The field is never populated, and now is deprecated.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 3;</code>
       * @return The phase.
       */
      public java.lang.String getPhase() {
        java.lang.Object ref = phase_;
        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()) {
            phase_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * NodePhase is the recently observed lifecycle phase of the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
       * The field is never populated, and now is deprecated.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 3;</code>
       * @return The bytes for phase.
       */
      public com.google.protobuf.ByteString
          getPhaseBytes() {
        java.lang.Object ref = phase_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          phase_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * NodePhase is the recently observed lifecycle phase of the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
       * The field is never populated, and now is deprecated.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 3;</code>
       * @param value The phase to set.
       * @return This builder for chaining.
       */
      public Builder setPhase(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        phase_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NodePhase is the recently observed lifecycle phase of the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
       * The field is never populated, and now is deprecated.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPhase() {
        phase_ = getDefaultInstance().getPhase();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NodePhase is the recently observed lifecycle phase of the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
       * The field is never populated, and now is deprecated.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 3;</code>
       * @param value The bytes for phase to set.
       * @return This builder for chaining.
       */
      public Builder setPhaseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        phase_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.NodeCondition> conditions_ =
        java.util.Collections.emptyList();
      private void ensureConditionsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          conditions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.NodeCondition>(conditions_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeCondition, io.kubernetes.client.proto.V1.NodeCondition.Builder, io.kubernetes.client.proto.V1.NodeConditionOrBuilder> conditionsBuilder_;

      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeCondition> getConditionsList() {
        if (conditionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(conditions_);
        } else {
          return conditionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public int getConditionsCount() {
        if (conditionsBuilder_ == null) {
          return conditions_.size();
        } else {
          return conditionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public io.kubernetes.client.proto.V1.NodeCondition getConditions(int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);
        } else {
          return conditionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.NodeCondition 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 is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.NodeCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.set(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public Builder addConditions(io.kubernetes.client.proto.V1.NodeCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.NodeCondition 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 is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public Builder addConditions(
          io.kubernetes.client.proto.V1.NodeCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.NodeCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public Builder addAllConditions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.NodeCondition> values) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, conditions_);
          onChanged();
        } else {
          conditionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public Builder clearConditions() {
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          conditionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public Builder removeConditions(int index) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.remove(index);
          onChanged();
        } else {
          conditionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public io.kubernetes.client.proto.V1.NodeCondition.Builder getConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConditionOrBuilder getConditionsOrBuilder(
          int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);  } else {
          return conditionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.NodeConditionOrBuilder> 
           getConditionsOrBuilderList() {
        if (conditionsBuilder_ != null) {
          return conditionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(conditions_);
        }
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public io.kubernetes.client.proto.V1.NodeCondition.Builder addConditionsBuilder() {
        return getConditionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.NodeCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public io.kubernetes.client.proto.V1.NodeCondition.Builder addConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.NodeCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * Conditions is an array of current observed node conditions.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeCondition conditions = 4;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeCondition.Builder> 
           getConditionsBuilderList() {
        return getConditionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeCondition, io.kubernetes.client.proto.V1.NodeCondition.Builder, io.kubernetes.client.proto.V1.NodeConditionOrBuilder> 
          getConditionsFieldBuilder() {
        if (conditionsBuilder_ == null) {
          conditionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.NodeCondition, io.kubernetes.client.proto.V1.NodeCondition.Builder, io.kubernetes.client.proto.V1.NodeConditionOrBuilder>(
                  conditions_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          conditions_ = null;
        }
        return conditionsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.NodeAddress> addresses_ =
        java.util.Collections.emptyList();
      private void ensureAddressesIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          addresses_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.NodeAddress>(addresses_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeAddress, io.kubernetes.client.proto.V1.NodeAddress.Builder, io.kubernetes.client.proto.V1.NodeAddressOrBuilder> addressesBuilder_;

      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeAddress> getAddressesList() {
        if (addressesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(addresses_);
        } else {
          return addressesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public int getAddressesCount() {
        if (addressesBuilder_ == null) {
          return addresses_.size();
        } else {
          return addressesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public io.kubernetes.client.proto.V1.NodeAddress getAddresses(int index) {
        if (addressesBuilder_ == null) {
          return addresses_.get(index);
        } else {
          return addressesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public Builder setAddresses(
          int index, io.kubernetes.client.proto.V1.NodeAddress value) {
        if (addressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddressesIsMutable();
          addresses_.set(index, value);
          onChanged();
        } else {
          addressesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public Builder setAddresses(
          int index, io.kubernetes.client.proto.V1.NodeAddress.Builder builderForValue) {
        if (addressesBuilder_ == null) {
          ensureAddressesIsMutable();
          addresses_.set(index, builderForValue.build());
          onChanged();
        } else {
          addressesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public Builder addAddresses(io.kubernetes.client.proto.V1.NodeAddress value) {
        if (addressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddressesIsMutable();
          addresses_.add(value);
          onChanged();
        } else {
          addressesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public Builder addAddresses(
          int index, io.kubernetes.client.proto.V1.NodeAddress value) {
        if (addressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAddressesIsMutable();
          addresses_.add(index, value);
          onChanged();
        } else {
          addressesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public Builder addAddresses(
          io.kubernetes.client.proto.V1.NodeAddress.Builder builderForValue) {
        if (addressesBuilder_ == null) {
          ensureAddressesIsMutable();
          addresses_.add(builderForValue.build());
          onChanged();
        } else {
          addressesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public Builder addAddresses(
          int index, io.kubernetes.client.proto.V1.NodeAddress.Builder builderForValue) {
        if (addressesBuilder_ == null) {
          ensureAddressesIsMutable();
          addresses_.add(index, builderForValue.build());
          onChanged();
        } else {
          addressesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public Builder addAllAddresses(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.NodeAddress> values) {
        if (addressesBuilder_ == null) {
          ensureAddressesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, addresses_);
          onChanged();
        } else {
          addressesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public Builder clearAddresses() {
        if (addressesBuilder_ == null) {
          addresses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          addressesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public Builder removeAddresses(int index) {
        if (addressesBuilder_ == null) {
          ensureAddressesIsMutable();
          addresses_.remove(index);
          onChanged();
        } else {
          addressesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public io.kubernetes.client.proto.V1.NodeAddress.Builder getAddressesBuilder(
          int index) {
        return getAddressesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public io.kubernetes.client.proto.V1.NodeAddressOrBuilder getAddressesOrBuilder(
          int index) {
        if (addressesBuilder_ == null) {
          return addresses_.get(index);  } else {
          return addressesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.NodeAddressOrBuilder> 
           getAddressesOrBuilderList() {
        if (addressesBuilder_ != null) {
          return addressesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(addresses_);
        }
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public io.kubernetes.client.proto.V1.NodeAddress.Builder addAddressesBuilder() {
        return getAddressesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.NodeAddress.getDefaultInstance());
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public io.kubernetes.client.proto.V1.NodeAddress.Builder addAddressesBuilder(
          int index) {
        return getAddressesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.NodeAddress.getDefaultInstance());
      }
      /**
       * <pre>
       * List of addresses reachable to the node.
       * Queried from cloud provider, if available.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
       * Note: This field is declared as mergeable, but the merge key is not sufficiently
       * unique, which can cause data corruption when it is merged. Callers should instead
       * use a full-replacement patch. See https://pr.k8s.io/79391 for an example.
       * Consumers should assume that addresses can change during the
       * lifetime of a Node. However, there are some exceptions where this may not
       * be possible, such as Pods that inherit a Node's address in its own status or
       * consumers of the downward API (status.hostIP).
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeAddress addresses = 5;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeAddress.Builder> 
           getAddressesBuilderList() {
        return getAddressesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeAddress, io.kubernetes.client.proto.V1.NodeAddress.Builder, io.kubernetes.client.proto.V1.NodeAddressOrBuilder> 
          getAddressesFieldBuilder() {
        if (addressesBuilder_ == null) {
          addressesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.NodeAddress, io.kubernetes.client.proto.V1.NodeAddress.Builder, io.kubernetes.client.proto.V1.NodeAddressOrBuilder>(
                  addresses_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          addresses_ = null;
        }
        return addressesBuilder_;
      }

      private io.kubernetes.client.proto.V1.NodeDaemonEndpoints daemonEndpoints_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeDaemonEndpoints, io.kubernetes.client.proto.V1.NodeDaemonEndpoints.Builder, io.kubernetes.client.proto.V1.NodeDaemonEndpointsOrBuilder> daemonEndpointsBuilder_;
      /**
       * <pre>
       * Endpoints of daemons running on the Node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
       * @return Whether the daemonEndpoints field is set.
       */
      public boolean hasDaemonEndpoints() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Endpoints of daemons running on the Node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
       * @return The daemonEndpoints.
       */
      public io.kubernetes.client.proto.V1.NodeDaemonEndpoints getDaemonEndpoints() {
        if (daemonEndpointsBuilder_ == null) {
          return daemonEndpoints_ == null ? io.kubernetes.client.proto.V1.NodeDaemonEndpoints.getDefaultInstance() : daemonEndpoints_;
        } else {
          return daemonEndpointsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Endpoints of daemons running on the Node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
       */
      public Builder setDaemonEndpoints(io.kubernetes.client.proto.V1.NodeDaemonEndpoints value) {
        if (daemonEndpointsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          daemonEndpoints_ = value;
        } else {
          daemonEndpointsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Endpoints of daemons running on the Node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
       */
      public Builder setDaemonEndpoints(
          io.kubernetes.client.proto.V1.NodeDaemonEndpoints.Builder builderForValue) {
        if (daemonEndpointsBuilder_ == null) {
          daemonEndpoints_ = builderForValue.build();
        } else {
          daemonEndpointsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Endpoints of daemons running on the Node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
       */
      public Builder mergeDaemonEndpoints(io.kubernetes.client.proto.V1.NodeDaemonEndpoints value) {
        if (daemonEndpointsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            daemonEndpoints_ != null &&
            daemonEndpoints_ != io.kubernetes.client.proto.V1.NodeDaemonEndpoints.getDefaultInstance()) {
            getDaemonEndpointsBuilder().mergeFrom(value);
          } else {
            daemonEndpoints_ = value;
          }
        } else {
          daemonEndpointsBuilder_.mergeFrom(value);
        }
        if (daemonEndpoints_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Endpoints of daemons running on the Node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
       */
      public Builder clearDaemonEndpoints() {
        bitField0_ = (bitField0_ & ~0x00000020);
        daemonEndpoints_ = null;
        if (daemonEndpointsBuilder_ != null) {
          daemonEndpointsBuilder_.dispose();
          daemonEndpointsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Endpoints of daemons running on the Node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
       */
      public io.kubernetes.client.proto.V1.NodeDaemonEndpoints.Builder getDaemonEndpointsBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getDaemonEndpointsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Endpoints of daemons running on the Node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
       */
      public io.kubernetes.client.proto.V1.NodeDaemonEndpointsOrBuilder getDaemonEndpointsOrBuilder() {
        if (daemonEndpointsBuilder_ != null) {
          return daemonEndpointsBuilder_.getMessageOrBuilder();
        } else {
          return daemonEndpoints_ == null ?
              io.kubernetes.client.proto.V1.NodeDaemonEndpoints.getDefaultInstance() : daemonEndpoints_;
        }
      }
      /**
       * <pre>
       * Endpoints of daemons running on the Node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeDaemonEndpoints daemonEndpoints = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeDaemonEndpoints, io.kubernetes.client.proto.V1.NodeDaemonEndpoints.Builder, io.kubernetes.client.proto.V1.NodeDaemonEndpointsOrBuilder> 
          getDaemonEndpointsFieldBuilder() {
        if (daemonEndpointsBuilder_ == null) {
          daemonEndpointsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeDaemonEndpoints, io.kubernetes.client.proto.V1.NodeDaemonEndpoints.Builder, io.kubernetes.client.proto.V1.NodeDaemonEndpointsOrBuilder>(
                  getDaemonEndpoints(),
                  getParentForChildren(),
                  isClean());
          daemonEndpoints_ = null;
        }
        return daemonEndpointsBuilder_;
      }

      private io.kubernetes.client.proto.V1.NodeSystemInfo nodeInfo_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSystemInfo, io.kubernetes.client.proto.V1.NodeSystemInfo.Builder, io.kubernetes.client.proto.V1.NodeSystemInfoOrBuilder> nodeInfoBuilder_;
      /**
       * <pre>
       * Set of ids/uuids to uniquely identify the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
       * @return Whether the nodeInfo field is set.
       */
      public boolean hasNodeInfo() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Set of ids/uuids to uniquely identify the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
       * @return The nodeInfo.
       */
      public io.kubernetes.client.proto.V1.NodeSystemInfo getNodeInfo() {
        if (nodeInfoBuilder_ == null) {
          return nodeInfo_ == null ? io.kubernetes.client.proto.V1.NodeSystemInfo.getDefaultInstance() : nodeInfo_;
        } else {
          return nodeInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Set of ids/uuids to uniquely identify the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
       */
      public Builder setNodeInfo(io.kubernetes.client.proto.V1.NodeSystemInfo value) {
        if (nodeInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nodeInfo_ = value;
        } else {
          nodeInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Set of ids/uuids to uniquely identify the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
       */
      public Builder setNodeInfo(
          io.kubernetes.client.proto.V1.NodeSystemInfo.Builder builderForValue) {
        if (nodeInfoBuilder_ == null) {
          nodeInfo_ = builderForValue.build();
        } else {
          nodeInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Set of ids/uuids to uniquely identify the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
       */
      public Builder mergeNodeInfo(io.kubernetes.client.proto.V1.NodeSystemInfo value) {
        if (nodeInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            nodeInfo_ != null &&
            nodeInfo_ != io.kubernetes.client.proto.V1.NodeSystemInfo.getDefaultInstance()) {
            getNodeInfoBuilder().mergeFrom(value);
          } else {
            nodeInfo_ = value;
          }
        } else {
          nodeInfoBuilder_.mergeFrom(value);
        }
        if (nodeInfo_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Set of ids/uuids to uniquely identify the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
       */
      public Builder clearNodeInfo() {
        bitField0_ = (bitField0_ & ~0x00000040);
        nodeInfo_ = null;
        if (nodeInfoBuilder_ != null) {
          nodeInfoBuilder_.dispose();
          nodeInfoBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Set of ids/uuids to uniquely identify the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSystemInfo.Builder getNodeInfoBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getNodeInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Set of ids/uuids to uniquely identify the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSystemInfoOrBuilder getNodeInfoOrBuilder() {
        if (nodeInfoBuilder_ != null) {
          return nodeInfoBuilder_.getMessageOrBuilder();
        } else {
          return nodeInfo_ == null ?
              io.kubernetes.client.proto.V1.NodeSystemInfo.getDefaultInstance() : nodeInfo_;
        }
      }
      /**
       * <pre>
       * Set of ids/uuids to uniquely identify the node.
       * More info: https://kubernetes.io/docs/concepts/nodes/node/#info
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSystemInfo nodeInfo = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSystemInfo, io.kubernetes.client.proto.V1.NodeSystemInfo.Builder, io.kubernetes.client.proto.V1.NodeSystemInfoOrBuilder> 
          getNodeInfoFieldBuilder() {
        if (nodeInfoBuilder_ == null) {
          nodeInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeSystemInfo, io.kubernetes.client.proto.V1.NodeSystemInfo.Builder, io.kubernetes.client.proto.V1.NodeSystemInfoOrBuilder>(
                  getNodeInfo(),
                  getParentForChildren(),
                  isClean());
          nodeInfo_ = null;
        }
        return nodeInfoBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.ContainerImage> images_ =
        java.util.Collections.emptyList();
      private void ensureImagesIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          images_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ContainerImage>(images_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerImage, io.kubernetes.client.proto.V1.ContainerImage.Builder, io.kubernetes.client.proto.V1.ContainerImageOrBuilder> imagesBuilder_;

      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerImage> getImagesList() {
        if (imagesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(images_);
        } else {
          return imagesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public int getImagesCount() {
        if (imagesBuilder_ == null) {
          return images_.size();
        } else {
          return imagesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerImage getImages(int index) {
        if (imagesBuilder_ == null) {
          return images_.get(index);
        } else {
          return imagesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public Builder setImages(
          int index, io.kubernetes.client.proto.V1.ContainerImage value) {
        if (imagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImagesIsMutable();
          images_.set(index, value);
          onChanged();
        } else {
          imagesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public Builder setImages(
          int index, io.kubernetes.client.proto.V1.ContainerImage.Builder builderForValue) {
        if (imagesBuilder_ == null) {
          ensureImagesIsMutable();
          images_.set(index, builderForValue.build());
          onChanged();
        } else {
          imagesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public Builder addImages(io.kubernetes.client.proto.V1.ContainerImage value) {
        if (imagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImagesIsMutable();
          images_.add(value);
          onChanged();
        } else {
          imagesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public Builder addImages(
          int index, io.kubernetes.client.proto.V1.ContainerImage value) {
        if (imagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImagesIsMutable();
          images_.add(index, value);
          onChanged();
        } else {
          imagesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public Builder addImages(
          io.kubernetes.client.proto.V1.ContainerImage.Builder builderForValue) {
        if (imagesBuilder_ == null) {
          ensureImagesIsMutable();
          images_.add(builderForValue.build());
          onChanged();
        } else {
          imagesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public Builder addImages(
          int index, io.kubernetes.client.proto.V1.ContainerImage.Builder builderForValue) {
        if (imagesBuilder_ == null) {
          ensureImagesIsMutable();
          images_.add(index, builderForValue.build());
          onChanged();
        } else {
          imagesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public Builder addAllImages(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ContainerImage> values) {
        if (imagesBuilder_ == null) {
          ensureImagesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, images_);
          onChanged();
        } else {
          imagesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public Builder clearImages() {
        if (imagesBuilder_ == null) {
          images_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          imagesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public Builder removeImages(int index) {
        if (imagesBuilder_ == null) {
          ensureImagesIsMutable();
          images_.remove(index);
          onChanged();
        } else {
          imagesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerImage.Builder getImagesBuilder(
          int index) {
        return getImagesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerImageOrBuilder getImagesOrBuilder(
          int index) {
        if (imagesBuilder_ == null) {
          return images_.get(index);  } else {
          return imagesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerImageOrBuilder> 
           getImagesOrBuilderList() {
        if (imagesBuilder_ != null) {
          return imagesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(images_);
        }
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerImage.Builder addImagesBuilder() {
        return getImagesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ContainerImage.getDefaultInstance());
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerImage.Builder addImagesBuilder(
          int index) {
        return getImagesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ContainerImage.getDefaultInstance());
      }
      /**
       * <pre>
       * List of container images on this node
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerImage images = 8;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerImage.Builder> 
           getImagesBuilderList() {
        return getImagesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerImage, io.kubernetes.client.proto.V1.ContainerImage.Builder, io.kubernetes.client.proto.V1.ContainerImageOrBuilder> 
          getImagesFieldBuilder() {
        if (imagesBuilder_ == null) {
          imagesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerImage, io.kubernetes.client.proto.V1.ContainerImage.Builder, io.kubernetes.client.proto.V1.ContainerImageOrBuilder>(
                  images_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          images_ = null;
        }
        return imagesBuilder_;
      }

      private com.google.protobuf.LazyStringArrayList volumesInUse_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureVolumesInUseIsMutable() {
        if (!volumesInUse_.isModifiable()) {
          volumesInUse_ = new com.google.protobuf.LazyStringArrayList(volumesInUse_);
        }
        bitField0_ |= 0x00000100;
      }
      /**
       * <pre>
       * List of attachable volumes in use (mounted) by the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string volumesInUse = 9;</code>
       * @return A list containing the volumesInUse.
       */
      public com.google.protobuf.ProtocolStringList
          getVolumesInUseList() {
        volumesInUse_.makeImmutable();
        return volumesInUse_;
      }
      /**
       * <pre>
       * List of attachable volumes in use (mounted) by the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string volumesInUse = 9;</code>
       * @return The count of volumesInUse.
       */
      public int getVolumesInUseCount() {
        return volumesInUse_.size();
      }
      /**
       * <pre>
       * List of attachable volumes in use (mounted) by the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string volumesInUse = 9;</code>
       * @param index The index of the element to return.
       * @return The volumesInUse at the given index.
       */
      public java.lang.String getVolumesInUse(int index) {
        return volumesInUse_.get(index);
      }
      /**
       * <pre>
       * List of attachable volumes in use (mounted) by the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string volumesInUse = 9;</code>
       * @param index The index of the value to return.
       * @return The bytes of the volumesInUse at the given index.
       */
      public com.google.protobuf.ByteString
          getVolumesInUseBytes(int index) {
        return volumesInUse_.getByteString(index);
      }
      /**
       * <pre>
       * List of attachable volumes in use (mounted) by the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string volumesInUse = 9;</code>
       * @param index The index to set the value at.
       * @param value The volumesInUse to set.
       * @return This builder for chaining.
       */
      public Builder setVolumesInUse(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureVolumesInUseIsMutable();
        volumesInUse_.set(index, value);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of attachable volumes in use (mounted) by the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string volumesInUse = 9;</code>
       * @param value The volumesInUse to add.
       * @return This builder for chaining.
       */
      public Builder addVolumesInUse(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureVolumesInUseIsMutable();
        volumesInUse_.add(value);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of attachable volumes in use (mounted) by the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string volumesInUse = 9;</code>
       * @param values The volumesInUse to add.
       * @return This builder for chaining.
       */
      public Builder addAllVolumesInUse(
          java.lang.Iterable<java.lang.String> values) {
        ensureVolumesInUseIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, volumesInUse_);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of attachable volumes in use (mounted) by the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string volumesInUse = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumesInUse() {
        volumesInUse_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of attachable volumes in use (mounted) by the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string volumesInUse = 9;</code>
       * @param value The bytes of the volumesInUse to add.
       * @return This builder for chaining.
       */
      public Builder addVolumesInUseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureVolumesInUseIsMutable();
        volumesInUse_.add(value);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.AttachedVolume> volumesAttached_ =
        java.util.Collections.emptyList();
      private void ensureVolumesAttachedIsMutable() {
        if (!((bitField0_ & 0x00000200) != 0)) {
          volumesAttached_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.AttachedVolume>(volumesAttached_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.AttachedVolume, io.kubernetes.client.proto.V1.AttachedVolume.Builder, io.kubernetes.client.proto.V1.AttachedVolumeOrBuilder> volumesAttachedBuilder_;

      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.AttachedVolume> getVolumesAttachedList() {
        if (volumesAttachedBuilder_ == null) {
          return java.util.Collections.unmodifiableList(volumesAttached_);
        } else {
          return volumesAttachedBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public int getVolumesAttachedCount() {
        if (volumesAttachedBuilder_ == null) {
          return volumesAttached_.size();
        } else {
          return volumesAttachedBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public io.kubernetes.client.proto.V1.AttachedVolume getVolumesAttached(int index) {
        if (volumesAttachedBuilder_ == null) {
          return volumesAttached_.get(index);
        } else {
          return volumesAttachedBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public Builder setVolumesAttached(
          int index, io.kubernetes.client.proto.V1.AttachedVolume value) {
        if (volumesAttachedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumesAttachedIsMutable();
          volumesAttached_.set(index, value);
          onChanged();
        } else {
          volumesAttachedBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public Builder setVolumesAttached(
          int index, io.kubernetes.client.proto.V1.AttachedVolume.Builder builderForValue) {
        if (volumesAttachedBuilder_ == null) {
          ensureVolumesAttachedIsMutable();
          volumesAttached_.set(index, builderForValue.build());
          onChanged();
        } else {
          volumesAttachedBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public Builder addVolumesAttached(io.kubernetes.client.proto.V1.AttachedVolume value) {
        if (volumesAttachedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumesAttachedIsMutable();
          volumesAttached_.add(value);
          onChanged();
        } else {
          volumesAttachedBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public Builder addVolumesAttached(
          int index, io.kubernetes.client.proto.V1.AttachedVolume value) {
        if (volumesAttachedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumesAttachedIsMutable();
          volumesAttached_.add(index, value);
          onChanged();
        } else {
          volumesAttachedBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public Builder addVolumesAttached(
          io.kubernetes.client.proto.V1.AttachedVolume.Builder builderForValue) {
        if (volumesAttachedBuilder_ == null) {
          ensureVolumesAttachedIsMutable();
          volumesAttached_.add(builderForValue.build());
          onChanged();
        } else {
          volumesAttachedBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public Builder addVolumesAttached(
          int index, io.kubernetes.client.proto.V1.AttachedVolume.Builder builderForValue) {
        if (volumesAttachedBuilder_ == null) {
          ensureVolumesAttachedIsMutable();
          volumesAttached_.add(index, builderForValue.build());
          onChanged();
        } else {
          volumesAttachedBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public Builder addAllVolumesAttached(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.AttachedVolume> values) {
        if (volumesAttachedBuilder_ == null) {
          ensureVolumesAttachedIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, volumesAttached_);
          onChanged();
        } else {
          volumesAttachedBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public Builder clearVolumesAttached() {
        if (volumesAttachedBuilder_ == null) {
          volumesAttached_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          volumesAttachedBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public Builder removeVolumesAttached(int index) {
        if (volumesAttachedBuilder_ == null) {
          ensureVolumesAttachedIsMutable();
          volumesAttached_.remove(index);
          onChanged();
        } else {
          volumesAttachedBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public io.kubernetes.client.proto.V1.AttachedVolume.Builder getVolumesAttachedBuilder(
          int index) {
        return getVolumesAttachedFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public io.kubernetes.client.proto.V1.AttachedVolumeOrBuilder getVolumesAttachedOrBuilder(
          int index) {
        if (volumesAttachedBuilder_ == null) {
          return volumesAttached_.get(index);  } else {
          return volumesAttachedBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.AttachedVolumeOrBuilder> 
           getVolumesAttachedOrBuilderList() {
        if (volumesAttachedBuilder_ != null) {
          return volumesAttachedBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(volumesAttached_);
        }
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public io.kubernetes.client.proto.V1.AttachedVolume.Builder addVolumesAttachedBuilder() {
        return getVolumesAttachedFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.AttachedVolume.getDefaultInstance());
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public io.kubernetes.client.proto.V1.AttachedVolume.Builder addVolumesAttachedBuilder(
          int index) {
        return getVolumesAttachedFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.AttachedVolume.getDefaultInstance());
      }
      /**
       * <pre>
       * List of volumes that are attached to the node.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.AttachedVolume volumesAttached = 10;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.AttachedVolume.Builder> 
           getVolumesAttachedBuilderList() {
        return getVolumesAttachedFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.AttachedVolume, io.kubernetes.client.proto.V1.AttachedVolume.Builder, io.kubernetes.client.proto.V1.AttachedVolumeOrBuilder> 
          getVolumesAttachedFieldBuilder() {
        if (volumesAttachedBuilder_ == null) {
          volumesAttachedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.AttachedVolume, io.kubernetes.client.proto.V1.AttachedVolume.Builder, io.kubernetes.client.proto.V1.AttachedVolumeOrBuilder>(
                  volumesAttached_,
                  ((bitField0_ & 0x00000200) != 0),
                  getParentForChildren(),
                  isClean());
          volumesAttached_ = null;
        }
        return volumesAttachedBuilder_;
      }

      private io.kubernetes.client.proto.V1.NodeConfigStatus config_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeConfigStatus, io.kubernetes.client.proto.V1.NodeConfigStatus.Builder, io.kubernetes.client.proto.V1.NodeConfigStatusOrBuilder> configBuilder_;
      /**
       * <pre>
       * Status of the config assigned to the node via the dynamic Kubelet config feature.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
       * @return Whether the config field is set.
       */
      public boolean hasConfig() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * Status of the config assigned to the node via the dynamic Kubelet config feature.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
       * @return The config.
       */
      public io.kubernetes.client.proto.V1.NodeConfigStatus getConfig() {
        if (configBuilder_ == null) {
          return config_ == null ? io.kubernetes.client.proto.V1.NodeConfigStatus.getDefaultInstance() : config_;
        } else {
          return configBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Status of the config assigned to the node via the dynamic Kubelet config feature.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
       */
      public Builder setConfig(io.kubernetes.client.proto.V1.NodeConfigStatus value) {
        if (configBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          config_ = value;
        } else {
          configBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the config assigned to the node via the dynamic Kubelet config feature.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
       */
      public Builder setConfig(
          io.kubernetes.client.proto.V1.NodeConfigStatus.Builder builderForValue) {
        if (configBuilder_ == null) {
          config_ = builderForValue.build();
        } else {
          configBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the config assigned to the node via the dynamic Kubelet config feature.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
       */
      public Builder mergeConfig(io.kubernetes.client.proto.V1.NodeConfigStatus value) {
        if (configBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            config_ != null &&
            config_ != io.kubernetes.client.proto.V1.NodeConfigStatus.getDefaultInstance()) {
            getConfigBuilder().mergeFrom(value);
          } else {
            config_ = value;
          }
        } else {
          configBuilder_.mergeFrom(value);
        }
        if (config_ != null) {
          bitField0_ |= 0x00000400;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Status of the config assigned to the node via the dynamic Kubelet config feature.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
       */
      public Builder clearConfig() {
        bitField0_ = (bitField0_ & ~0x00000400);
        config_ = null;
        if (configBuilder_ != null) {
          configBuilder_.dispose();
          configBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the config assigned to the node via the dynamic Kubelet config feature.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConfigStatus.Builder getConfigBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getConfigFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Status of the config assigned to the node via the dynamic Kubelet config feature.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
       */
      public io.kubernetes.client.proto.V1.NodeConfigStatusOrBuilder getConfigOrBuilder() {
        if (configBuilder_ != null) {
          return configBuilder_.getMessageOrBuilder();
        } else {
          return config_ == null ?
              io.kubernetes.client.proto.V1.NodeConfigStatus.getDefaultInstance() : config_;
        }
      }
      /**
       * <pre>
       * Status of the config assigned to the node via the dynamic Kubelet config feature.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeConfigStatus config = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeConfigStatus, io.kubernetes.client.proto.V1.NodeConfigStatus.Builder, io.kubernetes.client.proto.V1.NodeConfigStatusOrBuilder> 
          getConfigFieldBuilder() {
        if (configBuilder_ == null) {
          configBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeConfigStatus, io.kubernetes.client.proto.V1.NodeConfigStatus.Builder, io.kubernetes.client.proto.V1.NodeConfigStatusOrBuilder>(
                  getConfig(),
                  getParentForChildren(),
                  isClean());
          config_ = null;
        }
        return configBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.NodeRuntimeHandler> runtimeHandlers_ =
        java.util.Collections.emptyList();
      private void ensureRuntimeHandlersIsMutable() {
        if (!((bitField0_ & 0x00000800) != 0)) {
          runtimeHandlers_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.NodeRuntimeHandler>(runtimeHandlers_);
          bitField0_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeRuntimeHandler, io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder, io.kubernetes.client.proto.V1.NodeRuntimeHandlerOrBuilder> runtimeHandlersBuilder_;

      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeRuntimeHandler> getRuntimeHandlersList() {
        if (runtimeHandlersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(runtimeHandlers_);
        } else {
          return runtimeHandlersBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public int getRuntimeHandlersCount() {
        if (runtimeHandlersBuilder_ == null) {
          return runtimeHandlers_.size();
        } else {
          return runtimeHandlersBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public io.kubernetes.client.proto.V1.NodeRuntimeHandler getRuntimeHandlers(int index) {
        if (runtimeHandlersBuilder_ == null) {
          return runtimeHandlers_.get(index);
        } else {
          return runtimeHandlersBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public Builder setRuntimeHandlers(
          int index, io.kubernetes.client.proto.V1.NodeRuntimeHandler value) {
        if (runtimeHandlersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRuntimeHandlersIsMutable();
          runtimeHandlers_.set(index, value);
          onChanged();
        } else {
          runtimeHandlersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public Builder setRuntimeHandlers(
          int index, io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder builderForValue) {
        if (runtimeHandlersBuilder_ == null) {
          ensureRuntimeHandlersIsMutable();
          runtimeHandlers_.set(index, builderForValue.build());
          onChanged();
        } else {
          runtimeHandlersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public Builder addRuntimeHandlers(io.kubernetes.client.proto.V1.NodeRuntimeHandler value) {
        if (runtimeHandlersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRuntimeHandlersIsMutable();
          runtimeHandlers_.add(value);
          onChanged();
        } else {
          runtimeHandlersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public Builder addRuntimeHandlers(
          int index, io.kubernetes.client.proto.V1.NodeRuntimeHandler value) {
        if (runtimeHandlersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRuntimeHandlersIsMutable();
          runtimeHandlers_.add(index, value);
          onChanged();
        } else {
          runtimeHandlersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public Builder addRuntimeHandlers(
          io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder builderForValue) {
        if (runtimeHandlersBuilder_ == null) {
          ensureRuntimeHandlersIsMutable();
          runtimeHandlers_.add(builderForValue.build());
          onChanged();
        } else {
          runtimeHandlersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public Builder addRuntimeHandlers(
          int index, io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder builderForValue) {
        if (runtimeHandlersBuilder_ == null) {
          ensureRuntimeHandlersIsMutable();
          runtimeHandlers_.add(index, builderForValue.build());
          onChanged();
        } else {
          runtimeHandlersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public Builder addAllRuntimeHandlers(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.NodeRuntimeHandler> values) {
        if (runtimeHandlersBuilder_ == null) {
          ensureRuntimeHandlersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, runtimeHandlers_);
          onChanged();
        } else {
          runtimeHandlersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public Builder clearRuntimeHandlers() {
        if (runtimeHandlersBuilder_ == null) {
          runtimeHandlers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          runtimeHandlersBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public Builder removeRuntimeHandlers(int index) {
        if (runtimeHandlersBuilder_ == null) {
          ensureRuntimeHandlersIsMutable();
          runtimeHandlers_.remove(index);
          onChanged();
        } else {
          runtimeHandlersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder getRuntimeHandlersBuilder(
          int index) {
        return getRuntimeHandlersFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public io.kubernetes.client.proto.V1.NodeRuntimeHandlerOrBuilder getRuntimeHandlersOrBuilder(
          int index) {
        if (runtimeHandlersBuilder_ == null) {
          return runtimeHandlers_.get(index);  } else {
          return runtimeHandlersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.NodeRuntimeHandlerOrBuilder> 
           getRuntimeHandlersOrBuilderList() {
        if (runtimeHandlersBuilder_ != null) {
          return runtimeHandlersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(runtimeHandlers_);
        }
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder addRuntimeHandlersBuilder() {
        return getRuntimeHandlersFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.NodeRuntimeHandler.getDefaultInstance());
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder addRuntimeHandlersBuilder(
          int index) {
        return getRuntimeHandlersFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.NodeRuntimeHandler.getDefaultInstance());
      }
      /**
       * <pre>
       * The available runtime handlers.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.NodeRuntimeHandler runtimeHandlers = 12;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder> 
           getRuntimeHandlersBuilderList() {
        return getRuntimeHandlersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.NodeRuntimeHandler, io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder, io.kubernetes.client.proto.V1.NodeRuntimeHandlerOrBuilder> 
          getRuntimeHandlersFieldBuilder() {
        if (runtimeHandlersBuilder_ == null) {
          runtimeHandlersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.NodeRuntimeHandler, io.kubernetes.client.proto.V1.NodeRuntimeHandler.Builder, io.kubernetes.client.proto.V1.NodeRuntimeHandlerOrBuilder>(
                  runtimeHandlers_,
                  ((bitField0_ & 0x00000800) != 0),
                  getParentForChildren(),
                  isClean());
          runtimeHandlers_ = null;
        }
        return runtimeHandlersBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeStatus)
    private static final io.kubernetes.client.proto.V1.NodeStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeStatus();
    }

    public static io.kubernetes.client.proto.V1.NodeStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeStatus>
        PARSER = new com.google.protobuf.AbstractParser<NodeStatus>() {
      @java.lang.Override
      public NodeStatus 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<NodeStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeSystemInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.NodeSystemInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * MachineID reported by the node. For unique machine identification
     * in the cluster this field is preferred. Learn more from man(5)
     * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
     * </pre>
     *
     * <code>optional string machineID = 1;</code>
     * @return Whether the machineID field is set.
     */
    boolean hasMachineID();
    /**
     * <pre>
     * MachineID reported by the node. For unique machine identification
     * in the cluster this field is preferred. Learn more from man(5)
     * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
     * </pre>
     *
     * <code>optional string machineID = 1;</code>
     * @return The machineID.
     */
    java.lang.String getMachineID();
    /**
     * <pre>
     * MachineID reported by the node. For unique machine identification
     * in the cluster this field is preferred. Learn more from man(5)
     * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
     * </pre>
     *
     * <code>optional string machineID = 1;</code>
     * @return The bytes for machineID.
     */
    com.google.protobuf.ByteString
        getMachineIDBytes();

    /**
     * <pre>
     * SystemUUID reported by the node. For unique machine identification
     * MachineID is preferred. This field is specific to Red Hat hosts
     * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
     * </pre>
     *
     * <code>optional string systemUUID = 2;</code>
     * @return Whether the systemUUID field is set.
     */
    boolean hasSystemUUID();
    /**
     * <pre>
     * SystemUUID reported by the node. For unique machine identification
     * MachineID is preferred. This field is specific to Red Hat hosts
     * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
     * </pre>
     *
     * <code>optional string systemUUID = 2;</code>
     * @return The systemUUID.
     */
    java.lang.String getSystemUUID();
    /**
     * <pre>
     * SystemUUID reported by the node. For unique machine identification
     * MachineID is preferred. This field is specific to Red Hat hosts
     * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
     * </pre>
     *
     * <code>optional string systemUUID = 2;</code>
     * @return The bytes for systemUUID.
     */
    com.google.protobuf.ByteString
        getSystemUUIDBytes();

    /**
     * <pre>
     * Boot ID reported by the node.
     * </pre>
     *
     * <code>optional string bootID = 3;</code>
     * @return Whether the bootID field is set.
     */
    boolean hasBootID();
    /**
     * <pre>
     * Boot ID reported by the node.
     * </pre>
     *
     * <code>optional string bootID = 3;</code>
     * @return The bootID.
     */
    java.lang.String getBootID();
    /**
     * <pre>
     * Boot ID reported by the node.
     * </pre>
     *
     * <code>optional string bootID = 3;</code>
     * @return The bytes for bootID.
     */
    com.google.protobuf.ByteString
        getBootIDBytes();

    /**
     * <pre>
     * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
     * </pre>
     *
     * <code>optional string kernelVersion = 4;</code>
     * @return Whether the kernelVersion field is set.
     */
    boolean hasKernelVersion();
    /**
     * <pre>
     * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
     * </pre>
     *
     * <code>optional string kernelVersion = 4;</code>
     * @return The kernelVersion.
     */
    java.lang.String getKernelVersion();
    /**
     * <pre>
     * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
     * </pre>
     *
     * <code>optional string kernelVersion = 4;</code>
     * @return The bytes for kernelVersion.
     */
    com.google.protobuf.ByteString
        getKernelVersionBytes();

    /**
     * <pre>
     * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
     * </pre>
     *
     * <code>optional string osImage = 5;</code>
     * @return Whether the osImage field is set.
     */
    boolean hasOsImage();
    /**
     * <pre>
     * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
     * </pre>
     *
     * <code>optional string osImage = 5;</code>
     * @return The osImage.
     */
    java.lang.String getOsImage();
    /**
     * <pre>
     * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
     * </pre>
     *
     * <code>optional string osImage = 5;</code>
     * @return The bytes for osImage.
     */
    com.google.protobuf.ByteString
        getOsImageBytes();

    /**
     * <pre>
     * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
     * </pre>
     *
     * <code>optional string containerRuntimeVersion = 6;</code>
     * @return Whether the containerRuntimeVersion field is set.
     */
    boolean hasContainerRuntimeVersion();
    /**
     * <pre>
     * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
     * </pre>
     *
     * <code>optional string containerRuntimeVersion = 6;</code>
     * @return The containerRuntimeVersion.
     */
    java.lang.String getContainerRuntimeVersion();
    /**
     * <pre>
     * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
     * </pre>
     *
     * <code>optional string containerRuntimeVersion = 6;</code>
     * @return The bytes for containerRuntimeVersion.
     */
    com.google.protobuf.ByteString
        getContainerRuntimeVersionBytes();

    /**
     * <pre>
     * Kubelet Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeletVersion = 7;</code>
     * @return Whether the kubeletVersion field is set.
     */
    boolean hasKubeletVersion();
    /**
     * <pre>
     * Kubelet Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeletVersion = 7;</code>
     * @return The kubeletVersion.
     */
    java.lang.String getKubeletVersion();
    /**
     * <pre>
     * Kubelet Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeletVersion = 7;</code>
     * @return The bytes for kubeletVersion.
     */
    com.google.protobuf.ByteString
        getKubeletVersionBytes();

    /**
     * <pre>
     * KubeProxy Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeProxyVersion = 8;</code>
     * @return Whether the kubeProxyVersion field is set.
     */
    boolean hasKubeProxyVersion();
    /**
     * <pre>
     * KubeProxy Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeProxyVersion = 8;</code>
     * @return The kubeProxyVersion.
     */
    java.lang.String getKubeProxyVersion();
    /**
     * <pre>
     * KubeProxy Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeProxyVersion = 8;</code>
     * @return The bytes for kubeProxyVersion.
     */
    com.google.protobuf.ByteString
        getKubeProxyVersionBytes();

    /**
     * <pre>
     * The Operating System reported by the node
     * </pre>
     *
     * <code>optional string operatingSystem = 9;</code>
     * @return Whether the operatingSystem field is set.
     */
    boolean hasOperatingSystem();
    /**
     * <pre>
     * The Operating System reported by the node
     * </pre>
     *
     * <code>optional string operatingSystem = 9;</code>
     * @return The operatingSystem.
     */
    java.lang.String getOperatingSystem();
    /**
     * <pre>
     * The Operating System reported by the node
     * </pre>
     *
     * <code>optional string operatingSystem = 9;</code>
     * @return The bytes for operatingSystem.
     */
    com.google.protobuf.ByteString
        getOperatingSystemBytes();

    /**
     * <pre>
     * The Architecture reported by the node
     * </pre>
     *
     * <code>optional string architecture = 10;</code>
     * @return Whether the architecture field is set.
     */
    boolean hasArchitecture();
    /**
     * <pre>
     * The Architecture reported by the node
     * </pre>
     *
     * <code>optional string architecture = 10;</code>
     * @return The architecture.
     */
    java.lang.String getArchitecture();
    /**
     * <pre>
     * The Architecture reported by the node
     * </pre>
     *
     * <code>optional string architecture = 10;</code>
     * @return The bytes for architecture.
     */
    com.google.protobuf.ByteString
        getArchitectureBytes();
  }
  /**
   * <pre>
   * NodeSystemInfo is a set of ids/uuids to uniquely identify the node.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.NodeSystemInfo}
   */
  public static final class NodeSystemInfo extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.NodeSystemInfo)
      NodeSystemInfoOrBuilder {
  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= */ "",
        NodeSystemInfo.class.getName());
    }
    // Use NodeSystemInfo.newBuilder() to construct.
    private NodeSystemInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private NodeSystemInfo() {
      machineID_ = "";
      systemUUID_ = "";
      bootID_ = "";
      kernelVersion_ = "";
      osImage_ = "";
      containerRuntimeVersion_ = "";
      kubeletVersion_ = "";
      kubeProxyVersion_ = "";
      operatingSystem_ = "";
      architecture_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSystemInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSystemInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.NodeSystemInfo.class, io.kubernetes.client.proto.V1.NodeSystemInfo.Builder.class);
    }

    private int bitField0_;
    public static final int MACHINEID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object machineID_ = "";
    /**
     * <pre>
     * MachineID reported by the node. For unique machine identification
     * in the cluster this field is preferred. Learn more from man(5)
     * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
     * </pre>
     *
     * <code>optional string machineID = 1;</code>
     * @return Whether the machineID field is set.
     */
    @java.lang.Override
    public boolean hasMachineID() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * MachineID reported by the node. For unique machine identification
     * in the cluster this field is preferred. Learn more from man(5)
     * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
     * </pre>
     *
     * <code>optional string machineID = 1;</code>
     * @return The machineID.
     */
    @java.lang.Override
    public java.lang.String getMachineID() {
      java.lang.Object ref = machineID_;
      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()) {
          machineID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * MachineID reported by the node. For unique machine identification
     * in the cluster this field is preferred. Learn more from man(5)
     * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
     * </pre>
     *
     * <code>optional string machineID = 1;</code>
     * @return The bytes for machineID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMachineIDBytes() {
      java.lang.Object ref = machineID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        machineID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SYSTEMUUID_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object systemUUID_ = "";
    /**
     * <pre>
     * SystemUUID reported by the node. For unique machine identification
     * MachineID is preferred. This field is specific to Red Hat hosts
     * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
     * </pre>
     *
     * <code>optional string systemUUID = 2;</code>
     * @return Whether the systemUUID field is set.
     */
    @java.lang.Override
    public boolean hasSystemUUID() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * SystemUUID reported by the node. For unique machine identification
     * MachineID is preferred. This field is specific to Red Hat hosts
     * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
     * </pre>
     *
     * <code>optional string systemUUID = 2;</code>
     * @return The systemUUID.
     */
    @java.lang.Override
    public java.lang.String getSystemUUID() {
      java.lang.Object ref = systemUUID_;
      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()) {
          systemUUID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * SystemUUID reported by the node. For unique machine identification
     * MachineID is preferred. This field is specific to Red Hat hosts
     * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
     * </pre>
     *
     * <code>optional string systemUUID = 2;</code>
     * @return The bytes for systemUUID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSystemUUIDBytes() {
      java.lang.Object ref = systemUUID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        systemUUID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BOOTID_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object bootID_ = "";
    /**
     * <pre>
     * Boot ID reported by the node.
     * </pre>
     *
     * <code>optional string bootID = 3;</code>
     * @return Whether the bootID field is set.
     */
    @java.lang.Override
    public boolean hasBootID() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Boot ID reported by the node.
     * </pre>
     *
     * <code>optional string bootID = 3;</code>
     * @return The bootID.
     */
    @java.lang.Override
    public java.lang.String getBootID() {
      java.lang.Object ref = bootID_;
      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()) {
          bootID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Boot ID reported by the node.
     * </pre>
     *
     * <code>optional string bootID = 3;</code>
     * @return The bytes for bootID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBootIDBytes() {
      java.lang.Object ref = bootID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bootID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KERNELVERSION_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object kernelVersion_ = "";
    /**
     * <pre>
     * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
     * </pre>
     *
     * <code>optional string kernelVersion = 4;</code>
     * @return Whether the kernelVersion field is set.
     */
    @java.lang.Override
    public boolean hasKernelVersion() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
     * </pre>
     *
     * <code>optional string kernelVersion = 4;</code>
     * @return The kernelVersion.
     */
    @java.lang.Override
    public java.lang.String getKernelVersion() {
      java.lang.Object ref = kernelVersion_;
      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()) {
          kernelVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
     * </pre>
     *
     * <code>optional string kernelVersion = 4;</code>
     * @return The bytes for kernelVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKernelVersionBytes() {
      java.lang.Object ref = kernelVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        kernelVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OSIMAGE_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object osImage_ = "";
    /**
     * <pre>
     * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
     * </pre>
     *
     * <code>optional string osImage = 5;</code>
     * @return Whether the osImage field is set.
     */
    @java.lang.Override
    public boolean hasOsImage() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
     * </pre>
     *
     * <code>optional string osImage = 5;</code>
     * @return The osImage.
     */
    @java.lang.Override
    public java.lang.String getOsImage() {
      java.lang.Object ref = osImage_;
      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()) {
          osImage_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
     * </pre>
     *
     * <code>optional string osImage = 5;</code>
     * @return The bytes for osImage.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOsImageBytes() {
      java.lang.Object ref = osImage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        osImage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTAINERRUNTIMEVERSION_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object containerRuntimeVersion_ = "";
    /**
     * <pre>
     * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
     * </pre>
     *
     * <code>optional string containerRuntimeVersion = 6;</code>
     * @return Whether the containerRuntimeVersion field is set.
     */
    @java.lang.Override
    public boolean hasContainerRuntimeVersion() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
     * </pre>
     *
     * <code>optional string containerRuntimeVersion = 6;</code>
     * @return The containerRuntimeVersion.
     */
    @java.lang.Override
    public java.lang.String getContainerRuntimeVersion() {
      java.lang.Object ref = containerRuntimeVersion_;
      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()) {
          containerRuntimeVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
     * </pre>
     *
     * <code>optional string containerRuntimeVersion = 6;</code>
     * @return The bytes for containerRuntimeVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getContainerRuntimeVersionBytes() {
      java.lang.Object ref = containerRuntimeVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        containerRuntimeVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KUBELETVERSION_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object kubeletVersion_ = "";
    /**
     * <pre>
     * Kubelet Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeletVersion = 7;</code>
     * @return Whether the kubeletVersion field is set.
     */
    @java.lang.Override
    public boolean hasKubeletVersion() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Kubelet Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeletVersion = 7;</code>
     * @return The kubeletVersion.
     */
    @java.lang.Override
    public java.lang.String getKubeletVersion() {
      java.lang.Object ref = kubeletVersion_;
      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()) {
          kubeletVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Kubelet Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeletVersion = 7;</code>
     * @return The bytes for kubeletVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKubeletVersionBytes() {
      java.lang.Object ref = kubeletVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        kubeletVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KUBEPROXYVERSION_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object kubeProxyVersion_ = "";
    /**
     * <pre>
     * KubeProxy Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeProxyVersion = 8;</code>
     * @return Whether the kubeProxyVersion field is set.
     */
    @java.lang.Override
    public boolean hasKubeProxyVersion() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * KubeProxy Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeProxyVersion = 8;</code>
     * @return The kubeProxyVersion.
     */
    @java.lang.Override
    public java.lang.String getKubeProxyVersion() {
      java.lang.Object ref = kubeProxyVersion_;
      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()) {
          kubeProxyVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * KubeProxy Version reported by the node.
     * </pre>
     *
     * <code>optional string kubeProxyVersion = 8;</code>
     * @return The bytes for kubeProxyVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKubeProxyVersionBytes() {
      java.lang.Object ref = kubeProxyVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        kubeProxyVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPERATINGSYSTEM_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object operatingSystem_ = "";
    /**
     * <pre>
     * The Operating System reported by the node
     * </pre>
     *
     * <code>optional string operatingSystem = 9;</code>
     * @return Whether the operatingSystem field is set.
     */
    @java.lang.Override
    public boolean hasOperatingSystem() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * The Operating System reported by the node
     * </pre>
     *
     * <code>optional string operatingSystem = 9;</code>
     * @return The operatingSystem.
     */
    @java.lang.Override
    public java.lang.String getOperatingSystem() {
      java.lang.Object ref = operatingSystem_;
      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()) {
          operatingSystem_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The Operating System reported by the node
     * </pre>
     *
     * <code>optional string operatingSystem = 9;</code>
     * @return The bytes for operatingSystem.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOperatingSystemBytes() {
      java.lang.Object ref = operatingSystem_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        operatingSystem_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARCHITECTURE_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private volatile java.lang.Object architecture_ = "";
    /**
     * <pre>
     * The Architecture reported by the node
     * </pre>
     *
     * <code>optional string architecture = 10;</code>
     * @return Whether the architecture field is set.
     */
    @java.lang.Override
    public boolean hasArchitecture() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * The Architecture reported by the node
     * </pre>
     *
     * <code>optional string architecture = 10;</code>
     * @return The architecture.
     */
    @java.lang.Override
    public java.lang.String getArchitecture() {
      java.lang.Object ref = architecture_;
      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()) {
          architecture_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The Architecture reported by the node
     * </pre>
     *
     * <code>optional string architecture = 10;</code>
     * @return The bytes for architecture.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getArchitectureBytes() {
      java.lang.Object ref = architecture_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        architecture_ = 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, machineID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, systemUUID_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, bootID_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, kernelVersion_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, osImage_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, containerRuntimeVersion_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, kubeletVersion_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, kubeProxyVersion_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, operatingSystem_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 10, architecture_);
      }
      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, machineID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, systemUUID_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, bootID_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, kernelVersion_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, osImage_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, containerRuntimeVersion_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, kubeletVersion_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(8, kubeProxyVersion_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, operatingSystem_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(10, architecture_);
      }
      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.V1.NodeSystemInfo)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.NodeSystemInfo other = (io.kubernetes.client.proto.V1.NodeSystemInfo) obj;

      if (hasMachineID() != other.hasMachineID()) return false;
      if (hasMachineID()) {
        if (!getMachineID()
            .equals(other.getMachineID())) return false;
      }
      if (hasSystemUUID() != other.hasSystemUUID()) return false;
      if (hasSystemUUID()) {
        if (!getSystemUUID()
            .equals(other.getSystemUUID())) return false;
      }
      if (hasBootID() != other.hasBootID()) return false;
      if (hasBootID()) {
        if (!getBootID()
            .equals(other.getBootID())) return false;
      }
      if (hasKernelVersion() != other.hasKernelVersion()) return false;
      if (hasKernelVersion()) {
        if (!getKernelVersion()
            .equals(other.getKernelVersion())) return false;
      }
      if (hasOsImage() != other.hasOsImage()) return false;
      if (hasOsImage()) {
        if (!getOsImage()
            .equals(other.getOsImage())) return false;
      }
      if (hasContainerRuntimeVersion() != other.hasContainerRuntimeVersion()) return false;
      if (hasContainerRuntimeVersion()) {
        if (!getContainerRuntimeVersion()
            .equals(other.getContainerRuntimeVersion())) return false;
      }
      if (hasKubeletVersion() != other.hasKubeletVersion()) return false;
      if (hasKubeletVersion()) {
        if (!getKubeletVersion()
            .equals(other.getKubeletVersion())) return false;
      }
      if (hasKubeProxyVersion() != other.hasKubeProxyVersion()) return false;
      if (hasKubeProxyVersion()) {
        if (!getKubeProxyVersion()
            .equals(other.getKubeProxyVersion())) return false;
      }
      if (hasOperatingSystem() != other.hasOperatingSystem()) return false;
      if (hasOperatingSystem()) {
        if (!getOperatingSystem()
            .equals(other.getOperatingSystem())) return false;
      }
      if (hasArchitecture() != other.hasArchitecture()) return false;
      if (hasArchitecture()) {
        if (!getArchitecture()
            .equals(other.getArchitecture())) 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 (hasMachineID()) {
        hash = (37 * hash) + MACHINEID_FIELD_NUMBER;
        hash = (53 * hash) + getMachineID().hashCode();
      }
      if (hasSystemUUID()) {
        hash = (37 * hash) + SYSTEMUUID_FIELD_NUMBER;
        hash = (53 * hash) + getSystemUUID().hashCode();
      }
      if (hasBootID()) {
        hash = (37 * hash) + BOOTID_FIELD_NUMBER;
        hash = (53 * hash) + getBootID().hashCode();
      }
      if (hasKernelVersion()) {
        hash = (37 * hash) + KERNELVERSION_FIELD_NUMBER;
        hash = (53 * hash) + getKernelVersion().hashCode();
      }
      if (hasOsImage()) {
        hash = (37 * hash) + OSIMAGE_FIELD_NUMBER;
        hash = (53 * hash) + getOsImage().hashCode();
      }
      if (hasContainerRuntimeVersion()) {
        hash = (37 * hash) + CONTAINERRUNTIMEVERSION_FIELD_NUMBER;
        hash = (53 * hash) + getContainerRuntimeVersion().hashCode();
      }
      if (hasKubeletVersion()) {
        hash = (37 * hash) + KUBELETVERSION_FIELD_NUMBER;
        hash = (53 * hash) + getKubeletVersion().hashCode();
      }
      if (hasKubeProxyVersion()) {
        hash = (37 * hash) + KUBEPROXYVERSION_FIELD_NUMBER;
        hash = (53 * hash) + getKubeProxyVersion().hashCode();
      }
      if (hasOperatingSystem()) {
        hash = (37 * hash) + OPERATINGSYSTEM_FIELD_NUMBER;
        hash = (53 * hash) + getOperatingSystem().hashCode();
      }
      if (hasArchitecture()) {
        hash = (37 * hash) + ARCHITECTURE_FIELD_NUMBER;
        hash = (53 * hash) + getArchitecture().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.NodeSystemInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSystemInfo 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.V1.NodeSystemInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSystemInfo 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.V1.NodeSystemInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.NodeSystemInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.NodeSystemInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeSystemInfo 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.V1.NodeSystemInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.NodeSystemInfo 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.V1.NodeSystemInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.NodeSystemInfo 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.V1.NodeSystemInfo 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>
     * NodeSystemInfo is a set of ids/uuids to uniquely identify the node.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.NodeSystemInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.NodeSystemInfo)
        io.kubernetes.client.proto.V1.NodeSystemInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSystemInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSystemInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.NodeSystemInfo.class, io.kubernetes.client.proto.V1.NodeSystemInfo.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.NodeSystemInfo.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        machineID_ = "";
        systemUUID_ = "";
        bootID_ = "";
        kernelVersion_ = "";
        osImage_ = "";
        containerRuntimeVersion_ = "";
        kubeletVersion_ = "";
        kubeProxyVersion_ = "";
        operatingSystem_ = "";
        architecture_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_NodeSystemInfo_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSystemInfo getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.NodeSystemInfo.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSystemInfo build() {
        io.kubernetes.client.proto.V1.NodeSystemInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.NodeSystemInfo buildPartial() {
        io.kubernetes.client.proto.V1.NodeSystemInfo result = new io.kubernetes.client.proto.V1.NodeSystemInfo(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.NodeSystemInfo result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.machineID_ = machineID_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.systemUUID_ = systemUUID_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.bootID_ = bootID_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.kernelVersion_ = kernelVersion_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.osImage_ = osImage_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.containerRuntimeVersion_ = containerRuntimeVersion_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.kubeletVersion_ = kubeletVersion_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.kubeProxyVersion_ = kubeProxyVersion_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.operatingSystem_ = operatingSystem_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.architecture_ = architecture_;
          to_bitField0_ |= 0x00000200;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.NodeSystemInfo) {
          return mergeFrom((io.kubernetes.client.proto.V1.NodeSystemInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.NodeSystemInfo other) {
        if (other == io.kubernetes.client.proto.V1.NodeSystemInfo.getDefaultInstance()) return this;
        if (other.hasMachineID()) {
          machineID_ = other.machineID_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasSystemUUID()) {
          systemUUID_ = other.systemUUID_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasBootID()) {
          bootID_ = other.bootID_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasKernelVersion()) {
          kernelVersion_ = other.kernelVersion_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasOsImage()) {
          osImage_ = other.osImage_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasContainerRuntimeVersion()) {
          containerRuntimeVersion_ = other.containerRuntimeVersion_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasKubeletVersion()) {
          kubeletVersion_ = other.kubeletVersion_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasKubeProxyVersion()) {
          kubeProxyVersion_ = other.kubeProxyVersion_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (other.hasOperatingSystem()) {
          operatingSystem_ = other.operatingSystem_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        if (other.hasArchitecture()) {
          architecture_ = other.architecture_;
          bitField0_ |= 0x00000200;
          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: {
                machineID_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                systemUUID_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                bootID_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                kernelVersion_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                osImage_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                containerRuntimeVersion_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                kubeletVersion_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                kubeProxyVersion_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                operatingSystem_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                architecture_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              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 machineID_ = "";
      /**
       * <pre>
       * MachineID reported by the node. For unique machine identification
       * in the cluster this field is preferred. Learn more from man(5)
       * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
       * </pre>
       *
       * <code>optional string machineID = 1;</code>
       * @return Whether the machineID field is set.
       */
      public boolean hasMachineID() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * MachineID reported by the node. For unique machine identification
       * in the cluster this field is preferred. Learn more from man(5)
       * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
       * </pre>
       *
       * <code>optional string machineID = 1;</code>
       * @return The machineID.
       */
      public java.lang.String getMachineID() {
        java.lang.Object ref = machineID_;
        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()) {
            machineID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * MachineID reported by the node. For unique machine identification
       * in the cluster this field is preferred. Learn more from man(5)
       * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
       * </pre>
       *
       * <code>optional string machineID = 1;</code>
       * @return The bytes for machineID.
       */
      public com.google.protobuf.ByteString
          getMachineIDBytes() {
        java.lang.Object ref = machineID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          machineID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * MachineID reported by the node. For unique machine identification
       * in the cluster this field is preferred. Learn more from man(5)
       * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
       * </pre>
       *
       * <code>optional string machineID = 1;</code>
       * @param value The machineID to set.
       * @return This builder for chaining.
       */
      public Builder setMachineID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        machineID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MachineID reported by the node. For unique machine identification
       * in the cluster this field is preferred. Learn more from man(5)
       * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
       * </pre>
       *
       * <code>optional string machineID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMachineID() {
        machineID_ = getDefaultInstance().getMachineID();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MachineID reported by the node. For unique machine identification
       * in the cluster this field is preferred. Learn more from man(5)
       * machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
       * </pre>
       *
       * <code>optional string machineID = 1;</code>
       * @param value The bytes for machineID to set.
       * @return This builder for chaining.
       */
      public Builder setMachineIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        machineID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object systemUUID_ = "";
      /**
       * <pre>
       * SystemUUID reported by the node. For unique machine identification
       * MachineID is preferred. This field is specific to Red Hat hosts
       * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
       * </pre>
       *
       * <code>optional string systemUUID = 2;</code>
       * @return Whether the systemUUID field is set.
       */
      public boolean hasSystemUUID() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * SystemUUID reported by the node. For unique machine identification
       * MachineID is preferred. This field is specific to Red Hat hosts
       * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
       * </pre>
       *
       * <code>optional string systemUUID = 2;</code>
       * @return The systemUUID.
       */
      public java.lang.String getSystemUUID() {
        java.lang.Object ref = systemUUID_;
        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()) {
            systemUUID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * SystemUUID reported by the node. For unique machine identification
       * MachineID is preferred. This field is specific to Red Hat hosts
       * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
       * </pre>
       *
       * <code>optional string systemUUID = 2;</code>
       * @return The bytes for systemUUID.
       */
      public com.google.protobuf.ByteString
          getSystemUUIDBytes() {
        java.lang.Object ref = systemUUID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          systemUUID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * SystemUUID reported by the node. For unique machine identification
       * MachineID is preferred. This field is specific to Red Hat hosts
       * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
       * </pre>
       *
       * <code>optional string systemUUID = 2;</code>
       * @param value The systemUUID to set.
       * @return This builder for chaining.
       */
      public Builder setSystemUUID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        systemUUID_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SystemUUID reported by the node. For unique machine identification
       * MachineID is preferred. This field is specific to Red Hat hosts
       * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
       * </pre>
       *
       * <code>optional string systemUUID = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSystemUUID() {
        systemUUID_ = getDefaultInstance().getSystemUUID();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SystemUUID reported by the node. For unique machine identification
       * MachineID is preferred. This field is specific to Red Hat hosts
       * https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
       * </pre>
       *
       * <code>optional string systemUUID = 2;</code>
       * @param value The bytes for systemUUID to set.
       * @return This builder for chaining.
       */
      public Builder setSystemUUIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        systemUUID_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object bootID_ = "";
      /**
       * <pre>
       * Boot ID reported by the node.
       * </pre>
       *
       * <code>optional string bootID = 3;</code>
       * @return Whether the bootID field is set.
       */
      public boolean hasBootID() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Boot ID reported by the node.
       * </pre>
       *
       * <code>optional string bootID = 3;</code>
       * @return The bootID.
       */
      public java.lang.String getBootID() {
        java.lang.Object ref = bootID_;
        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()) {
            bootID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Boot ID reported by the node.
       * </pre>
       *
       * <code>optional string bootID = 3;</code>
       * @return The bytes for bootID.
       */
      public com.google.protobuf.ByteString
          getBootIDBytes() {
        java.lang.Object ref = bootID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bootID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Boot ID reported by the node.
       * </pre>
       *
       * <code>optional string bootID = 3;</code>
       * @param value The bootID to set.
       * @return This builder for chaining.
       */
      public Builder setBootID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        bootID_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Boot ID reported by the node.
       * </pre>
       *
       * <code>optional string bootID = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearBootID() {
        bootID_ = getDefaultInstance().getBootID();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Boot ID reported by the node.
       * </pre>
       *
       * <code>optional string bootID = 3;</code>
       * @param value The bytes for bootID to set.
       * @return This builder for chaining.
       */
      public Builder setBootIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        bootID_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object kernelVersion_ = "";
      /**
       * <pre>
       * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
       * </pre>
       *
       * <code>optional string kernelVersion = 4;</code>
       * @return Whether the kernelVersion field is set.
       */
      public boolean hasKernelVersion() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
       * </pre>
       *
       * <code>optional string kernelVersion = 4;</code>
       * @return The kernelVersion.
       */
      public java.lang.String getKernelVersion() {
        java.lang.Object ref = kernelVersion_;
        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()) {
            kernelVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
       * </pre>
       *
       * <code>optional string kernelVersion = 4;</code>
       * @return The bytes for kernelVersion.
       */
      public com.google.protobuf.ByteString
          getKernelVersionBytes() {
        java.lang.Object ref = kernelVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          kernelVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
       * </pre>
       *
       * <code>optional string kernelVersion = 4;</code>
       * @param value The kernelVersion to set.
       * @return This builder for chaining.
       */
      public Builder setKernelVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        kernelVersion_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
       * </pre>
       *
       * <code>optional string kernelVersion = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearKernelVersion() {
        kernelVersion_ = getDefaultInstance().getKernelVersion();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
       * </pre>
       *
       * <code>optional string kernelVersion = 4;</code>
       * @param value The bytes for kernelVersion to set.
       * @return This builder for chaining.
       */
      public Builder setKernelVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        kernelVersion_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object osImage_ = "";
      /**
       * <pre>
       * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
       * </pre>
       *
       * <code>optional string osImage = 5;</code>
       * @return Whether the osImage field is set.
       */
      public boolean hasOsImage() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
       * </pre>
       *
       * <code>optional string osImage = 5;</code>
       * @return The osImage.
       */
      public java.lang.String getOsImage() {
        java.lang.Object ref = osImage_;
        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()) {
            osImage_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
       * </pre>
       *
       * <code>optional string osImage = 5;</code>
       * @return The bytes for osImage.
       */
      public com.google.protobuf.ByteString
          getOsImageBytes() {
        java.lang.Object ref = osImage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          osImage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
       * </pre>
       *
       * <code>optional string osImage = 5;</code>
       * @param value The osImage to set.
       * @return This builder for chaining.
       */
      public Builder setOsImage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        osImage_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
       * </pre>
       *
       * <code>optional string osImage = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearOsImage() {
        osImage_ = getDefaultInstance().getOsImage();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
       * </pre>
       *
       * <code>optional string osImage = 5;</code>
       * @param value The bytes for osImage to set.
       * @return This builder for chaining.
       */
      public Builder setOsImageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        osImage_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object containerRuntimeVersion_ = "";
      /**
       * <pre>
       * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
       * </pre>
       *
       * <code>optional string containerRuntimeVersion = 6;</code>
       * @return Whether the containerRuntimeVersion field is set.
       */
      public boolean hasContainerRuntimeVersion() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
       * </pre>
       *
       * <code>optional string containerRuntimeVersion = 6;</code>
       * @return The containerRuntimeVersion.
       */
      public java.lang.String getContainerRuntimeVersion() {
        java.lang.Object ref = containerRuntimeVersion_;
        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()) {
            containerRuntimeVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
       * </pre>
       *
       * <code>optional string containerRuntimeVersion = 6;</code>
       * @return The bytes for containerRuntimeVersion.
       */
      public com.google.protobuf.ByteString
          getContainerRuntimeVersionBytes() {
        java.lang.Object ref = containerRuntimeVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          containerRuntimeVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
       * </pre>
       *
       * <code>optional string containerRuntimeVersion = 6;</code>
       * @param value The containerRuntimeVersion to set.
       * @return This builder for chaining.
       */
      public Builder setContainerRuntimeVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        containerRuntimeVersion_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
       * </pre>
       *
       * <code>optional string containerRuntimeVersion = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearContainerRuntimeVersion() {
        containerRuntimeVersion_ = getDefaultInstance().getContainerRuntimeVersion();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
       * </pre>
       *
       * <code>optional string containerRuntimeVersion = 6;</code>
       * @param value The bytes for containerRuntimeVersion to set.
       * @return This builder for chaining.
       */
      public Builder setContainerRuntimeVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        containerRuntimeVersion_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object kubeletVersion_ = "";
      /**
       * <pre>
       * Kubelet Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeletVersion = 7;</code>
       * @return Whether the kubeletVersion field is set.
       */
      public boolean hasKubeletVersion() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Kubelet Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeletVersion = 7;</code>
       * @return The kubeletVersion.
       */
      public java.lang.String getKubeletVersion() {
        java.lang.Object ref = kubeletVersion_;
        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()) {
            kubeletVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Kubelet Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeletVersion = 7;</code>
       * @return The bytes for kubeletVersion.
       */
      public com.google.protobuf.ByteString
          getKubeletVersionBytes() {
        java.lang.Object ref = kubeletVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          kubeletVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Kubelet Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeletVersion = 7;</code>
       * @param value The kubeletVersion to set.
       * @return This builder for chaining.
       */
      public Builder setKubeletVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        kubeletVersion_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kubelet Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeletVersion = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearKubeletVersion() {
        kubeletVersion_ = getDefaultInstance().getKubeletVersion();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kubelet Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeletVersion = 7;</code>
       * @param value The bytes for kubeletVersion to set.
       * @return This builder for chaining.
       */
      public Builder setKubeletVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        kubeletVersion_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object kubeProxyVersion_ = "";
      /**
       * <pre>
       * KubeProxy Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeProxyVersion = 8;</code>
       * @return Whether the kubeProxyVersion field is set.
       */
      public boolean hasKubeProxyVersion() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * KubeProxy Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeProxyVersion = 8;</code>
       * @return The kubeProxyVersion.
       */
      public java.lang.String getKubeProxyVersion() {
        java.lang.Object ref = kubeProxyVersion_;
        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()) {
            kubeProxyVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * KubeProxy Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeProxyVersion = 8;</code>
       * @return The bytes for kubeProxyVersion.
       */
      public com.google.protobuf.ByteString
          getKubeProxyVersionBytes() {
        java.lang.Object ref = kubeProxyVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          kubeProxyVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * KubeProxy Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeProxyVersion = 8;</code>
       * @param value The kubeProxyVersion to set.
       * @return This builder for chaining.
       */
      public Builder setKubeProxyVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        kubeProxyVersion_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * KubeProxy Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeProxyVersion = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearKubeProxyVersion() {
        kubeProxyVersion_ = getDefaultInstance().getKubeProxyVersion();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * KubeProxy Version reported by the node.
       * </pre>
       *
       * <code>optional string kubeProxyVersion = 8;</code>
       * @param value The bytes for kubeProxyVersion to set.
       * @return This builder for chaining.
       */
      public Builder setKubeProxyVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        kubeProxyVersion_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.lang.Object operatingSystem_ = "";
      /**
       * <pre>
       * The Operating System reported by the node
       * </pre>
       *
       * <code>optional string operatingSystem = 9;</code>
       * @return Whether the operatingSystem field is set.
       */
      public boolean hasOperatingSystem() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * The Operating System reported by the node
       * </pre>
       *
       * <code>optional string operatingSystem = 9;</code>
       * @return The operatingSystem.
       */
      public java.lang.String getOperatingSystem() {
        java.lang.Object ref = operatingSystem_;
        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()) {
            operatingSystem_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The Operating System reported by the node
       * </pre>
       *
       * <code>optional string operatingSystem = 9;</code>
       * @return The bytes for operatingSystem.
       */
      public com.google.protobuf.ByteString
          getOperatingSystemBytes() {
        java.lang.Object ref = operatingSystem_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          operatingSystem_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The Operating System reported by the node
       * </pre>
       *
       * <code>optional string operatingSystem = 9;</code>
       * @param value The operatingSystem to set.
       * @return This builder for chaining.
       */
      public Builder setOperatingSystem(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        operatingSystem_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Operating System reported by the node
       * </pre>
       *
       * <code>optional string operatingSystem = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearOperatingSystem() {
        operatingSystem_ = getDefaultInstance().getOperatingSystem();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Operating System reported by the node
       * </pre>
       *
       * <code>optional string operatingSystem = 9;</code>
       * @param value The bytes for operatingSystem to set.
       * @return This builder for chaining.
       */
      public Builder setOperatingSystemBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        operatingSystem_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      private java.lang.Object architecture_ = "";
      /**
       * <pre>
       * The Architecture reported by the node
       * </pre>
       *
       * <code>optional string architecture = 10;</code>
       * @return Whether the architecture field is set.
       */
      public boolean hasArchitecture() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * The Architecture reported by the node
       * </pre>
       *
       * <code>optional string architecture = 10;</code>
       * @return The architecture.
       */
      public java.lang.String getArchitecture() {
        java.lang.Object ref = architecture_;
        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()) {
            architecture_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The Architecture reported by the node
       * </pre>
       *
       * <code>optional string architecture = 10;</code>
       * @return The bytes for architecture.
       */
      public com.google.protobuf.ByteString
          getArchitectureBytes() {
        java.lang.Object ref = architecture_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          architecture_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The Architecture reported by the node
       * </pre>
       *
       * <code>optional string architecture = 10;</code>
       * @param value The architecture to set.
       * @return This builder for chaining.
       */
      public Builder setArchitecture(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        architecture_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Architecture reported by the node
       * </pre>
       *
       * <code>optional string architecture = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearArchitecture() {
        architecture_ = getDefaultInstance().getArchitecture();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Architecture reported by the node
       * </pre>
       *
       * <code>optional string architecture = 10;</code>
       * @param value The bytes for architecture to set.
       * @return This builder for chaining.
       */
      public Builder setArchitectureBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        architecture_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.NodeSystemInfo)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.NodeSystemInfo)
    private static final io.kubernetes.client.proto.V1.NodeSystemInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.NodeSystemInfo();
    }

    public static io.kubernetes.client.proto.V1.NodeSystemInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeSystemInfo>
        PARSER = new com.google.protobuf.AbstractParser<NodeSystemInfo>() {
      @java.lang.Override
      public NodeSystemInfo 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<NodeSystemInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeSystemInfo> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSystemInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ObjectFieldSelectorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ObjectFieldSelector)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Version of the schema the FieldPath is written in terms of, defaults to "v1".
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 1;</code>
     * @return Whether the apiVersion field is set.
     */
    boolean hasApiVersion();
    /**
     * <pre>
     * Version of the schema the FieldPath is written in terms of, defaults to "v1".
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 1;</code>
     * @return The apiVersion.
     */
    java.lang.String getApiVersion();
    /**
     * <pre>
     * Version of the schema the FieldPath is written in terms of, defaults to "v1".
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 1;</code>
     * @return The bytes for apiVersion.
     */
    com.google.protobuf.ByteString
        getApiVersionBytes();

    /**
     * <pre>
     * Path of the field to select in the specified API version.
     * </pre>
     *
     * <code>optional string fieldPath = 2;</code>
     * @return Whether the fieldPath field is set.
     */
    boolean hasFieldPath();
    /**
     * <pre>
     * Path of the field to select in the specified API version.
     * </pre>
     *
     * <code>optional string fieldPath = 2;</code>
     * @return The fieldPath.
     */
    java.lang.String getFieldPath();
    /**
     * <pre>
     * Path of the field to select in the specified API version.
     * </pre>
     *
     * <code>optional string fieldPath = 2;</code>
     * @return The bytes for fieldPath.
     */
    com.google.protobuf.ByteString
        getFieldPathBytes();
  }
  /**
   * <pre>
   * ObjectFieldSelector selects an APIVersioned field of an object.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ObjectFieldSelector}
   */
  public static final class ObjectFieldSelector extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ObjectFieldSelector)
      ObjectFieldSelectorOrBuilder {
  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= */ "",
        ObjectFieldSelector.class.getName());
    }
    // Use ObjectFieldSelector.newBuilder() to construct.
    private ObjectFieldSelector(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ObjectFieldSelector() {
      apiVersion_ = "";
      fieldPath_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ObjectFieldSelector_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ObjectFieldSelector_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ObjectFieldSelector.class, io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder.class);
    }

    private int bitField0_;
    public static final int APIVERSION_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object apiVersion_ = "";
    /**
     * <pre>
     * Version of the schema the FieldPath is written in terms of, defaults to "v1".
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 1;</code>
     * @return Whether the apiVersion field is set.
     */
    @java.lang.Override
    public boolean hasApiVersion() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Version of the schema the FieldPath is written in terms of, defaults to "v1".
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 1;</code>
     * @return The apiVersion.
     */
    @java.lang.Override
    public java.lang.String getApiVersion() {
      java.lang.Object ref = apiVersion_;
      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()) {
          apiVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Version of the schema the FieldPath is written in terms of, defaults to "v1".
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 1;</code>
     * @return The bytes for apiVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getApiVersionBytes() {
      java.lang.Object ref = apiVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        apiVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELDPATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fieldPath_ = "";
    /**
     * <pre>
     * Path of the field to select in the specified API version.
     * </pre>
     *
     * <code>optional string fieldPath = 2;</code>
     * @return Whether the fieldPath field is set.
     */
    @java.lang.Override
    public boolean hasFieldPath() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Path of the field to select in the specified API version.
     * </pre>
     *
     * <code>optional string fieldPath = 2;</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>
     * Path of the field to select in the specified API version.
     * </pre>
     *
     * <code>optional string fieldPath = 2;</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;
      }
    }

    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, apiVersion_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fieldPath_);
      }
      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, apiVersion_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fieldPath_);
      }
      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.V1.ObjectFieldSelector)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ObjectFieldSelector other = (io.kubernetes.client.proto.V1.ObjectFieldSelector) obj;

      if (hasApiVersion() != other.hasApiVersion()) return false;
      if (hasApiVersion()) {
        if (!getApiVersion()
            .equals(other.getApiVersion())) return false;
      }
      if (hasFieldPath() != other.hasFieldPath()) return false;
      if (hasFieldPath()) {
        if (!getFieldPath()
            .equals(other.getFieldPath())) 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 (hasApiVersion()) {
        hash = (37 * hash) + APIVERSION_FIELD_NUMBER;
        hash = (53 * hash) + getApiVersion().hashCode();
      }
      if (hasFieldPath()) {
        hash = (37 * hash) + FIELDPATH_FIELD_NUMBER;
        hash = (53 * hash) + getFieldPath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ObjectFieldSelector parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ObjectFieldSelector 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.V1.ObjectFieldSelector parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ObjectFieldSelector 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.V1.ObjectFieldSelector parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ObjectFieldSelector parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ObjectFieldSelector parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ObjectFieldSelector 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.V1.ObjectFieldSelector parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ObjectFieldSelector 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.V1.ObjectFieldSelector parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ObjectFieldSelector 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.V1.ObjectFieldSelector 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>
     * ObjectFieldSelector selects an APIVersioned field of an object.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ObjectFieldSelector}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ObjectFieldSelector)
        io.kubernetes.client.proto.V1.ObjectFieldSelectorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ObjectFieldSelector_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ObjectFieldSelector_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ObjectFieldSelector.class, io.kubernetes.client.proto.V1.ObjectFieldSelector.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ObjectFieldSelector.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        apiVersion_ = "";
        fieldPath_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ObjectFieldSelector_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ObjectFieldSelector getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ObjectFieldSelector build() {
        io.kubernetes.client.proto.V1.ObjectFieldSelector result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ObjectFieldSelector buildPartial() {
        io.kubernetes.client.proto.V1.ObjectFieldSelector result = new io.kubernetes.client.proto.V1.ObjectFieldSelector(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ObjectFieldSelector result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.apiVersion_ = apiVersion_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fieldPath_ = fieldPath_;
          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.V1.ObjectFieldSelector) {
          return mergeFrom((io.kubernetes.client.proto.V1.ObjectFieldSelector)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ObjectFieldSelector other) {
        if (other == io.kubernetes.client.proto.V1.ObjectFieldSelector.getDefaultInstance()) return this;
        if (other.hasApiVersion()) {
          apiVersion_ = other.apiVersion_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFieldPath()) {
          fieldPath_ = other.fieldPath_;
          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: {
                apiVersion_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fieldPath_ = 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 apiVersion_ = "";
      /**
       * <pre>
       * Version of the schema the FieldPath is written in terms of, defaults to "v1".
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 1;</code>
       * @return Whether the apiVersion field is set.
       */
      public boolean hasApiVersion() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Version of the schema the FieldPath is written in terms of, defaults to "v1".
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 1;</code>
       * @return The apiVersion.
       */
      public java.lang.String getApiVersion() {
        java.lang.Object ref = apiVersion_;
        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()) {
            apiVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Version of the schema the FieldPath is written in terms of, defaults to "v1".
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 1;</code>
       * @return The bytes for apiVersion.
       */
      public com.google.protobuf.ByteString
          getApiVersionBytes() {
        java.lang.Object ref = apiVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          apiVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Version of the schema the FieldPath is written in terms of, defaults to "v1".
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 1;</code>
       * @param value The apiVersion to set.
       * @return This builder for chaining.
       */
      public Builder setApiVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        apiVersion_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the schema the FieldPath is written in terms of, defaults to "v1".
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearApiVersion() {
        apiVersion_ = getDefaultInstance().getApiVersion();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the schema the FieldPath is written in terms of, defaults to "v1".
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 1;</code>
       * @param value The bytes for apiVersion to set.
       * @return This builder for chaining.
       */
      public Builder setApiVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        apiVersion_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fieldPath_ = "";
      /**
       * <pre>
       * Path of the field to select in the specified API version.
       * </pre>
       *
       * <code>optional string fieldPath = 2;</code>
       * @return Whether the fieldPath field is set.
       */
      public boolean hasFieldPath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Path of the field to select in the specified API version.
       * </pre>
       *
       * <code>optional string fieldPath = 2;</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>
       * Path of the field to select in the specified API version.
       * </pre>
       *
       * <code>optional string fieldPath = 2;</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>
       * Path of the field to select in the specified API version.
       * </pre>
       *
       * <code>optional string fieldPath = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path of the field to select in the specified API version.
       * </pre>
       *
       * <code>optional string fieldPath = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFieldPath() {
        fieldPath_ = getDefaultInstance().getFieldPath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path of the field to select in the specified API version.
       * </pre>
       *
       * <code>optional string fieldPath = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ObjectFieldSelector)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ObjectFieldSelector)
    private static final io.kubernetes.client.proto.V1.ObjectFieldSelector DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ObjectFieldSelector();
    }

    public static io.kubernetes.client.proto.V1.ObjectFieldSelector getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ObjectFieldSelector>
        PARSER = new com.google.protobuf.AbstractParser<ObjectFieldSelector>() {
      @java.lang.Override
      public ObjectFieldSelector 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<ObjectFieldSelector> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ObjectFieldSelector> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectFieldSelector getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ObjectReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ObjectReference)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Kind of the referent.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional string kind = 1;</code>
     * @return Whether the kind field is set.
     */
    boolean hasKind();
    /**
     * <pre>
     * Kind of the referent.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional string kind = 1;</code>
     * @return The kind.
     */
    java.lang.String getKind();
    /**
     * <pre>
     * Kind of the referent.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional string kind = 1;</code>
     * @return The bytes for kind.
     */
    com.google.protobuf.ByteString
        getKindBytes();

    /**
     * <pre>
     * Namespace of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</code>
     * @return Whether the namespace field is set.
     */
    boolean hasNamespace();
    /**
     * <pre>
     * Namespace of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</code>
     * @return The namespace.
     */
    java.lang.String getNamespace();
    /**
     * <pre>
     * Namespace of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</code>
     * @return The bytes for namespace.
     */
    com.google.protobuf.ByteString
        getNamespaceBytes();

    /**
     * <pre>
     * Name of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * +optional
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * +optional
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * +optional
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * UID of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
     * +optional
     * </pre>
     *
     * <code>optional string uid = 4;</code>
     * @return Whether the uid field is set.
     */
    boolean hasUid();
    /**
     * <pre>
     * UID of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
     * +optional
     * </pre>
     *
     * <code>optional string uid = 4;</code>
     * @return The uid.
     */
    java.lang.String getUid();
    /**
     * <pre>
     * UID of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
     * +optional
     * </pre>
     *
     * <code>optional string uid = 4;</code>
     * @return The bytes for uid.
     */
    com.google.protobuf.ByteString
        getUidBytes();

    /**
     * <pre>
     * API version of the referent.
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 5;</code>
     * @return Whether the apiVersion field is set.
     */
    boolean hasApiVersion();
    /**
     * <pre>
     * API version of the referent.
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 5;</code>
     * @return The apiVersion.
     */
    java.lang.String getApiVersion();
    /**
     * <pre>
     * API version of the referent.
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 5;</code>
     * @return The bytes for apiVersion.
     */
    com.google.protobuf.ByteString
        getApiVersionBytes();

    /**
     * <pre>
     * Specific resourceVersion to which this reference is made, if any.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 6;</code>
     * @return Whether the resourceVersion field is set.
     */
    boolean hasResourceVersion();
    /**
     * <pre>
     * Specific resourceVersion to which this reference is made, if any.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 6;</code>
     * @return The resourceVersion.
     */
    java.lang.String getResourceVersion();
    /**
     * <pre>
     * Specific resourceVersion to which this reference is made, if any.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 6;</code>
     * @return The bytes for resourceVersion.
     */
    com.google.protobuf.ByteString
        getResourceVersionBytes();

    /**
     * <pre>
     * If referring to a piece of an object instead of an entire object, this string
     * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
     * For example, if the object reference is to a container within a pod, this would take on a value like:
     * "spec.containers{name}" (where "name" refers to the name of the container that triggered
     * the event) or if no container name is specified "spec.containers[2]" (container with
     * index 2 in this pod). This syntax is chosen only to have some well-defined way of
     * referencing a part of an object.
     * TODO: this design is not final and this field is subject to change in the future.
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 7;</code>
     * @return Whether the fieldPath field is set.
     */
    boolean hasFieldPath();
    /**
     * <pre>
     * If referring to a piece of an object instead of an entire object, this string
     * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
     * For example, if the object reference is to a container within a pod, this would take on a value like:
     * "spec.containers{name}" (where "name" refers to the name of the container that triggered
     * the event) or if no container name is specified "spec.containers[2]" (container with
     * index 2 in this pod). This syntax is chosen only to have some well-defined way of
     * referencing a part of an object.
     * TODO: this design is not final and this field is subject to change in the future.
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 7;</code>
     * @return The fieldPath.
     */
    java.lang.String getFieldPath();
    /**
     * <pre>
     * If referring to a piece of an object instead of an entire object, this string
     * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
     * For example, if the object reference is to a container within a pod, this would take on a value like:
     * "spec.containers{name}" (where "name" refers to the name of the container that triggered
     * the event) or if no container name is specified "spec.containers[2]" (container with
     * index 2 in this pod). This syntax is chosen only to have some well-defined way of
     * referencing a part of an object.
     * TODO: this design is not final and this field is subject to change in the future.
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 7;</code>
     * @return The bytes for fieldPath.
     */
    com.google.protobuf.ByteString
        getFieldPathBytes();
  }
  /**
   * <pre>
   * ObjectReference contains enough information to let you inspect or modify the referred object.
   * ---
   * New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
   * 1. Ignored fields.  It includes many fields which are not generally honored.  For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.
   * 2. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
   * restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
   * Those cannot be well described when embedded.
   * 3. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
   * 4. The fields are both imprecise and overly precise.  Kind is not a precise mapping to a URL. This can produce ambiguity
   * during interpretation and require a REST mapping.  In most cases, the dependency is on the group,resource tuple
   * and the version of the actual struct is irrelevant.
   * 5. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
   * will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.
   *
   * Instead of using this type, create a locally provided and used type that is well-focused on your reference.
   * For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
   * +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ObjectReference}
   */
  public static final class ObjectReference extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ObjectReference)
      ObjectReferenceOrBuilder {
  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= */ "",
        ObjectReference.class.getName());
    }
    // Use ObjectReference.newBuilder() to construct.
    private ObjectReference(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ObjectReference() {
      kind_ = "";
      namespace_ = "";
      name_ = "";
      uid_ = "";
      apiVersion_ = "";
      resourceVersion_ = "";
      fieldPath_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ObjectReference_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ObjectReference_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ObjectReference.class, io.kubernetes.client.proto.V1.ObjectReference.Builder.class);
    }

    private int bitField0_;
    public static final int KIND_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object kind_ = "";
    /**
     * <pre>
     * Kind of the referent.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional string kind = 1;</code>
     * @return Whether the kind field is set.
     */
    @java.lang.Override
    public boolean hasKind() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Kind of the referent.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional string kind = 1;</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 of the referent.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional string kind = 1;</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 NAMESPACE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object namespace_ = "";
    /**
     * <pre>
     * Namespace of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</code>
     * @return Whether the namespace field is set.
     */
    @java.lang.Override
    public boolean hasNamespace() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Namespace of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</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 of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</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 = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * +optional
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Name of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * +optional
     * </pre>
     *
     * <code>optional string name = 3;</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 of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * +optional
     * </pre>
     *
     * <code>optional string name = 3;</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 UID_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object uid_ = "";
    /**
     * <pre>
     * UID of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
     * +optional
     * </pre>
     *
     * <code>optional string uid = 4;</code>
     * @return Whether the uid field is set.
     */
    @java.lang.Override
    public boolean hasUid() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * UID of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
     * +optional
     * </pre>
     *
     * <code>optional string uid = 4;</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 of the referent.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
     * +optional
     * </pre>
     *
     * <code>optional string uid = 4;</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 APIVERSION_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object apiVersion_ = "";
    /**
     * <pre>
     * API version of the referent.
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 5;</code>
     * @return Whether the apiVersion field is set.
     */
    @java.lang.Override
    public boolean hasApiVersion() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * API version of the referent.
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 5;</code>
     * @return The apiVersion.
     */
    @java.lang.Override
    public java.lang.String getApiVersion() {
      java.lang.Object ref = apiVersion_;
      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()) {
          apiVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * API version of the referent.
     * +optional
     * </pre>
     *
     * <code>optional string apiVersion = 5;</code>
     * @return The bytes for apiVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getApiVersionBytes() {
      java.lang.Object ref = apiVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        apiVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESOURCEVERSION_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object resourceVersion_ = "";
    /**
     * <pre>
     * Specific resourceVersion to which this reference is made, if any.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 6;</code>
     * @return Whether the resourceVersion field is set.
     */
    @java.lang.Override
    public boolean hasResourceVersion() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Specific resourceVersion to which this reference is made, if any.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 6;</code>
     * @return The resourceVersion.
     */
    @java.lang.Override
    public java.lang.String getResourceVersion() {
      java.lang.Object ref = resourceVersion_;
      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()) {
          resourceVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Specific resourceVersion to which this reference is made, if any.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
     * +optional
     * </pre>
     *
     * <code>optional string resourceVersion = 6;</code>
     * @return The bytes for resourceVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResourceVersionBytes() {
      java.lang.Object ref = resourceVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resourceVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELDPATH_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fieldPath_ = "";
    /**
     * <pre>
     * If referring to a piece of an object instead of an entire object, this string
     * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
     * For example, if the object reference is to a container within a pod, this would take on a value like:
     * "spec.containers{name}" (where "name" refers to the name of the container that triggered
     * the event) or if no container name is specified "spec.containers[2]" (container with
     * index 2 in this pod). This syntax is chosen only to have some well-defined way of
     * referencing a part of an object.
     * TODO: this design is not final and this field is subject to change in the future.
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 7;</code>
     * @return Whether the fieldPath field is set.
     */
    @java.lang.Override
    public boolean hasFieldPath() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * If referring to a piece of an object instead of an entire object, this string
     * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
     * For example, if the object reference is to a container within a pod, this would take on a value like:
     * "spec.containers{name}" (where "name" refers to the name of the container that triggered
     * the event) or if no container name is specified "spec.containers[2]" (container with
     * index 2 in this pod). This syntax is chosen only to have some well-defined way of
     * referencing a part of an object.
     * TODO: this design is not final and this field is subject to change in the future.
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 7;</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>
     * If referring to a piece of an object instead of an entire object, this string
     * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
     * For example, if the object reference is to a container within a pod, this would take on a value like:
     * "spec.containers{name}" (where "name" refers to the name of the container that triggered
     * the event) or if no container name is specified "spec.containers[2]" (container with
     * index 2 in this pod). This syntax is chosen only to have some well-defined way of
     * referencing a part of an object.
     * TODO: this design is not final and this field is subject to change in the future.
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 7;</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;
      }
    }

    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, kind_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, namespace_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, name_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, uid_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, apiVersion_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, resourceVersion_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, fieldPath_);
      }
      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, kind_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, namespace_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, name_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, uid_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, apiVersion_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, resourceVersion_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, fieldPath_);
      }
      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.V1.ObjectReference)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ObjectReference other = (io.kubernetes.client.proto.V1.ObjectReference) obj;

      if (hasKind() != other.hasKind()) return false;
      if (hasKind()) {
        if (!getKind()
            .equals(other.getKind())) return false;
      }
      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 (hasUid() != other.hasUid()) return false;
      if (hasUid()) {
        if (!getUid()
            .equals(other.getUid())) return false;
      }
      if (hasApiVersion() != other.hasApiVersion()) return false;
      if (hasApiVersion()) {
        if (!getApiVersion()
            .equals(other.getApiVersion())) return false;
      }
      if (hasResourceVersion() != other.hasResourceVersion()) return false;
      if (hasResourceVersion()) {
        if (!getResourceVersion()
            .equals(other.getResourceVersion())) return false;
      }
      if (hasFieldPath() != other.hasFieldPath()) return false;
      if (hasFieldPath()) {
        if (!getFieldPath()
            .equals(other.getFieldPath())) 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 (hasKind()) {
        hash = (37 * hash) + KIND_FIELD_NUMBER;
        hash = (53 * hash) + getKind().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 (hasUid()) {
        hash = (37 * hash) + UID_FIELD_NUMBER;
        hash = (53 * hash) + getUid().hashCode();
      }
      if (hasApiVersion()) {
        hash = (37 * hash) + APIVERSION_FIELD_NUMBER;
        hash = (53 * hash) + getApiVersion().hashCode();
      }
      if (hasResourceVersion()) {
        hash = (37 * hash) + RESOURCEVERSION_FIELD_NUMBER;
        hash = (53 * hash) + getResourceVersion().hashCode();
      }
      if (hasFieldPath()) {
        hash = (37 * hash) + FIELDPATH_FIELD_NUMBER;
        hash = (53 * hash) + getFieldPath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ObjectReference parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ObjectReference 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.V1.ObjectReference parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ObjectReference 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.V1.ObjectReference parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ObjectReference parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ObjectReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ObjectReference 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.V1.ObjectReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ObjectReference 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.V1.ObjectReference parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ObjectReference 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.V1.ObjectReference 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>
     * ObjectReference contains enough information to let you inspect or modify the referred object.
     * ---
     * New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
     * 1. Ignored fields.  It includes many fields which are not generally honored.  For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.
     * 2. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
     * restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
     * Those cannot be well described when embedded.
     * 3. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
     * 4. The fields are both imprecise and overly precise.  Kind is not a precise mapping to a URL. This can produce ambiguity
     * during interpretation and require a REST mapping.  In most cases, the dependency is on the group,resource tuple
     * and the version of the actual struct is irrelevant.
     * 5. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
     * will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.
     *
     * Instead of using this type, create a locally provided and used type that is well-focused on your reference.
     * For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
     * +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ObjectReference}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ObjectReference)
        io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ObjectReference_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ObjectReference_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ObjectReference.class, io.kubernetes.client.proto.V1.ObjectReference.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ObjectReference.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        kind_ = "";
        namespace_ = "";
        name_ = "";
        uid_ = "";
        apiVersion_ = "";
        resourceVersion_ = "";
        fieldPath_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ObjectReference_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ObjectReference getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ObjectReference build() {
        io.kubernetes.client.proto.V1.ObjectReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ObjectReference buildPartial() {
        io.kubernetes.client.proto.V1.ObjectReference result = new io.kubernetes.client.proto.V1.ObjectReference(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ObjectReference result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.kind_ = kind_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.namespace_ = namespace_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.uid_ = uid_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.apiVersion_ = apiVersion_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.resourceVersion_ = resourceVersion_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.fieldPath_ = fieldPath_;
          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.V1.ObjectReference) {
          return mergeFrom((io.kubernetes.client.proto.V1.ObjectReference)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ObjectReference other) {
        if (other == io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance()) return this;
        if (other.hasKind()) {
          kind_ = other.kind_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasNamespace()) {
          namespace_ = other.namespace_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasUid()) {
          uid_ = other.uid_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasApiVersion()) {
          apiVersion_ = other.apiVersion_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasResourceVersion()) {
          resourceVersion_ = other.resourceVersion_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasFieldPath()) {
          fieldPath_ = other.fieldPath_;
          bitField0_ |= 0x00000040;
          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: {
                kind_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                namespace_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                uid_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                apiVersion_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                resourceVersion_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                fieldPath_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object kind_ = "";
      /**
       * <pre>
       * Kind of the referent.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +optional
       * </pre>
       *
       * <code>optional string kind = 1;</code>
       * @return Whether the kind field is set.
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Kind of the referent.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +optional
       * </pre>
       *
       * <code>optional string kind = 1;</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 of the referent.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +optional
       * </pre>
       *
       * <code>optional string kind = 1;</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 of the referent.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +optional
       * </pre>
       *
       * <code>optional string kind = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind of the referent.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +optional
       * </pre>
       *
       * <code>optional string kind = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKind() {
        kind_ = getDefaultInstance().getKind();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind of the referent.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +optional
       * </pre>
       *
       * <code>optional string kind = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object namespace_ = "";
      /**
       * <pre>
       * Namespace of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</code>
       * @return Whether the namespace field is set.
       */
      public boolean hasNamespace() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Namespace of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</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 of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</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 of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Namespace of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNamespace() {
        namespace_ = getDefaultInstance().getNamespace();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Namespace of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * +optional
       * </pre>
       *
       * <code>optional string name = 3;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Name of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * +optional
       * </pre>
       *
       * <code>optional string name = 3;</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 of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * +optional
       * </pre>
       *
       * <code>optional string name = 3;</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 of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * +optional
       * </pre>
       *
       * <code>optional string name = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * +optional
       * </pre>
       *
       * <code>optional string name = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * +optional
       * </pre>
       *
       * <code>optional string name = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object uid_ = "";
      /**
       * <pre>
       * UID of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
       * +optional
       * </pre>
       *
       * <code>optional string uid = 4;</code>
       * @return Whether the uid field is set.
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * UID of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
       * +optional
       * </pre>
       *
       * <code>optional string uid = 4;</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 of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
       * +optional
       * </pre>
       *
       * <code>optional string uid = 4;</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 of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
       * +optional
       * </pre>
       *
       * <code>optional string uid = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UID of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
       * +optional
       * </pre>
       *
       * <code>optional string uid = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearUid() {
        uid_ = getDefaultInstance().getUid();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UID of the referent.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
       * +optional
       * </pre>
       *
       * <code>optional string uid = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object apiVersion_ = "";
      /**
       * <pre>
       * API version of the referent.
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 5;</code>
       * @return Whether the apiVersion field is set.
       */
      public boolean hasApiVersion() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * API version of the referent.
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 5;</code>
       * @return The apiVersion.
       */
      public java.lang.String getApiVersion() {
        java.lang.Object ref = apiVersion_;
        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()) {
            apiVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * API version of the referent.
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 5;</code>
       * @return The bytes for apiVersion.
       */
      public com.google.protobuf.ByteString
          getApiVersionBytes() {
        java.lang.Object ref = apiVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          apiVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * API version of the referent.
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 5;</code>
       * @param value The apiVersion to set.
       * @return This builder for chaining.
       */
      public Builder setApiVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        apiVersion_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * API version of the referent.
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearApiVersion() {
        apiVersion_ = getDefaultInstance().getApiVersion();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * API version of the referent.
       * +optional
       * </pre>
       *
       * <code>optional string apiVersion = 5;</code>
       * @param value The bytes for apiVersion to set.
       * @return This builder for chaining.
       */
      public Builder setApiVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        apiVersion_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object resourceVersion_ = "";
      /**
       * <pre>
       * Specific resourceVersion to which this reference is made, if any.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 6;</code>
       * @return Whether the resourceVersion field is set.
       */
      public boolean hasResourceVersion() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Specific resourceVersion to which this reference is made, if any.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 6;</code>
       * @return The resourceVersion.
       */
      public java.lang.String getResourceVersion() {
        java.lang.Object ref = resourceVersion_;
        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()) {
            resourceVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Specific resourceVersion to which this reference is made, if any.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 6;</code>
       * @return The bytes for resourceVersion.
       */
      public com.google.protobuf.ByteString
          getResourceVersionBytes() {
        java.lang.Object ref = resourceVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resourceVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Specific resourceVersion to which this reference is made, if any.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 6;</code>
       * @param value The resourceVersion to set.
       * @return This builder for chaining.
       */
      public Builder setResourceVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        resourceVersion_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specific resourceVersion to which this reference is made, if any.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearResourceVersion() {
        resourceVersion_ = getDefaultInstance().getResourceVersion();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specific resourceVersion to which this reference is made, if any.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
       * +optional
       * </pre>
       *
       * <code>optional string resourceVersion = 6;</code>
       * @param value The bytes for resourceVersion to set.
       * @return This builder for chaining.
       */
      public Builder setResourceVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        resourceVersion_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object fieldPath_ = "";
      /**
       * <pre>
       * If referring to a piece of an object instead of an entire object, this string
       * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
       * For example, if the object reference is to a container within a pod, this would take on a value like:
       * "spec.containers{name}" (where "name" refers to the name of the container that triggered
       * the event) or if no container name is specified "spec.containers[2]" (container with
       * index 2 in this pod). This syntax is chosen only to have some well-defined way of
       * referencing a part of an object.
       * TODO: this design is not final and this field is subject to change in the future.
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 7;</code>
       * @return Whether the fieldPath field is set.
       */
      public boolean hasFieldPath() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * If referring to a piece of an object instead of an entire object, this string
       * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
       * For example, if the object reference is to a container within a pod, this would take on a value like:
       * "spec.containers{name}" (where "name" refers to the name of the container that triggered
       * the event) or if no container name is specified "spec.containers[2]" (container with
       * index 2 in this pod). This syntax is chosen only to have some well-defined way of
       * referencing a part of an object.
       * TODO: this design is not final and this field is subject to change in the future.
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 7;</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>
       * If referring to a piece of an object instead of an entire object, this string
       * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
       * For example, if the object reference is to a container within a pod, this would take on a value like:
       * "spec.containers{name}" (where "name" refers to the name of the container that triggered
       * the event) or if no container name is specified "spec.containers[2]" (container with
       * index 2 in this pod). This syntax is chosen only to have some well-defined way of
       * referencing a part of an object.
       * TODO: this design is not final and this field is subject to change in the future.
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 7;</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>
       * If referring to a piece of an object instead of an entire object, this string
       * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
       * For example, if the object reference is to a container within a pod, this would take on a value like:
       * "spec.containers{name}" (where "name" refers to the name of the container that triggered
       * the event) or if no container name is specified "spec.containers[2]" (container with
       * index 2 in this pod). This syntax is chosen only to have some well-defined way of
       * referencing a part of an object.
       * TODO: this design is not final and this field is subject to change in the future.
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 7;</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_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If referring to a piece of an object instead of an entire object, this string
       * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
       * For example, if the object reference is to a container within a pod, this would take on a value like:
       * "spec.containers{name}" (where "name" refers to the name of the container that triggered
       * the event) or if no container name is specified "spec.containers[2]" (container with
       * index 2 in this pod). This syntax is chosen only to have some well-defined way of
       * referencing a part of an object.
       * TODO: this design is not final and this field is subject to change in the future.
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearFieldPath() {
        fieldPath_ = getDefaultInstance().getFieldPath();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If referring to a piece of an object instead of an entire object, this string
       * should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
       * For example, if the object reference is to a container within a pod, this would take on a value like:
       * "spec.containers{name}" (where "name" refers to the name of the container that triggered
       * the event) or if no container name is specified "spec.containers[2]" (container with
       * index 2 in this pod). This syntax is chosen only to have some well-defined way of
       * referencing a part of an object.
       * TODO: this design is not final and this field is subject to change in the future.
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 7;</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_ |= 0x00000040;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ObjectReference)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ObjectReference)
    private static final io.kubernetes.client.proto.V1.ObjectReference DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ObjectReference();
    }

    public static io.kubernetes.client.proto.V1.ObjectReference getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ObjectReference>
        PARSER = new com.google.protobuf.AbstractParser<ObjectReference>() {
      @java.lang.Override
      public ObjectReference 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<ObjectReference> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ObjectReference> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReference getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolume)
      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 defines a specification of a persistent volume owned by the cluster.
     * Provisioned by an administrator.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * spec defines a specification of a persistent volume owned by the cluster.
     * Provisioned by an administrator.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.PersistentVolumeSpec getSpec();
    /**
     * <pre>
     * spec defines a specification of a persistent volume owned by the cluster.
     * Provisioned by an administrator.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeSpecOrBuilder getSpecOrBuilder();

    /**
     * <pre>
     * status represents the current information/status for the persistent volume.
     * Populated by the system.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * status represents the current information/status for the persistent volume.
     * Populated by the system.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1.PersistentVolumeStatus getStatus();
    /**
     * <pre>
     * status represents the current information/status for the persistent volume.
     * Populated by the system.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * PersistentVolume (PV) is a storage resource provisioned by an administrator.
   * It is analogous to a node.
   * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolume}
   */
  public static final class PersistentVolume extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolume)
      PersistentVolumeOrBuilder {
  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= */ "",
        PersistentVolume.class.getName());
    }
    // Use PersistentVolume.newBuilder() to construct.
    private PersistentVolume(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolume() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolume_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolume_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolume.class, io.kubernetes.client.proto.V1.PersistentVolume.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.V1.PersistentVolumeSpec spec_;
    /**
     * <pre>
     * spec defines a specification of a persistent volume owned by the cluster.
     * Provisioned by an administrator.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * spec defines a specification of a persistent volume owned by the cluster.
     * Provisioned by an administrator.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * spec defines a specification of a persistent volume owned by the cluster.
     * Provisioned by an administrator.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeSpec.getDefaultInstance() : spec_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.PersistentVolumeStatus status_;
    /**
     * <pre>
     * status represents the current information/status for the persistent volume.
     * Populated by the system.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * status represents the current information/status for the persistent volume.
     * Populated by the system.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * status represents the current information/status for the persistent volume.
     * Populated by the system.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeStatus.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.V1.PersistentVolume)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolume other = (io.kubernetes.client.proto.V1.PersistentVolume) 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.V1.PersistentVolume parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolume 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.V1.PersistentVolume parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolume 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.V1.PersistentVolume parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolume parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolume parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolume 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.V1.PersistentVolume parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolume 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.V1.PersistentVolume parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolume 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.V1.PersistentVolume 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>
     * PersistentVolume (PV) is a storage resource provisioned by an administrator.
     * It is analogous to a node.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolume}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolume)
        io.kubernetes.client.proto.V1.PersistentVolumeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolume_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolume_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolume.class, io.kubernetes.client.proto.V1.PersistentVolume.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolume.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.V1.internal_static_k8s_io_api_core_v1_PersistentVolume_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolume getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolume.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolume build() {
        io.kubernetes.client.proto.V1.PersistentVolume result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolume buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolume result = new io.kubernetes.client.proto.V1.PersistentVolume(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PersistentVolume 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.V1.PersistentVolume) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolume)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolume other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolume.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.V1.PersistentVolumeSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeSpec, io.kubernetes.client.proto.V1.PersistentVolumeSpec.Builder, io.kubernetes.client.proto.V1.PersistentVolumeSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * spec defines a specification of a persistent volume owned by the cluster.
       * Provisioned by an administrator.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * spec defines a specification of a persistent volume owned by the cluster.
       * Provisioned by an administrator.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * spec defines a specification of a persistent volume owned by the cluster.
       * Provisioned by an administrator.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.PersistentVolumeSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * spec defines a specification of a persistent volume owned by the cluster.
       * Provisioned by an administrator.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.PersistentVolumeSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * spec defines a specification of a persistent volume owned by the cluster.
       * Provisioned by an administrator.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.PersistentVolumeSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.PersistentVolumeSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * spec defines a specification of a persistent volume owned by the cluster.
       * Provisioned by an administrator.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * spec defines a specification of a persistent volume owned by the cluster.
       * Provisioned by an administrator.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * spec defines a specification of a persistent volume owned by the cluster.
       * Provisioned by an administrator.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.PersistentVolumeSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * spec defines a specification of a persistent volume owned by the cluster.
       * Provisioned by an administrator.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeSpec, io.kubernetes.client.proto.V1.PersistentVolumeSpec.Builder, io.kubernetes.client.proto.V1.PersistentVolumeSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolumeSpec, io.kubernetes.client.proto.V1.PersistentVolumeSpec.Builder, io.kubernetes.client.proto.V1.PersistentVolumeSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      private io.kubernetes.client.proto.V1.PersistentVolumeStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeStatus, io.kubernetes.client.proto.V1.PersistentVolumeStatus.Builder, io.kubernetes.client.proto.V1.PersistentVolumeStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * status represents the current information/status for the persistent volume.
       * Populated by the system.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * status represents the current information/status for the persistent volume.
       * Populated by the system.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * status represents the current information/status for the persistent volume.
       * Populated by the system.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1.PersistentVolumeStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status represents the current information/status for the persistent volume.
       * Populated by the system.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1.PersistentVolumeStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status represents the current information/status for the persistent volume.
       * Populated by the system.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1.PersistentVolumeStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1.PersistentVolumeStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * status represents the current information/status for the persistent volume.
       * Populated by the system.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status represents the current information/status for the persistent volume.
       * Populated by the system.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * status represents the current information/status for the persistent volume.
       * Populated by the system.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1.PersistentVolumeStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * status represents the current information/status for the persistent volume.
       * Populated by the system.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeStatus status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeStatus, io.kubernetes.client.proto.V1.PersistentVolumeStatus.Builder, io.kubernetes.client.proto.V1.PersistentVolumeStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolumeStatus, io.kubernetes.client.proto.V1.PersistentVolumeStatus.Builder, io.kubernetes.client.proto.V1.PersistentVolumeStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolume)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolume)
    private static final io.kubernetes.client.proto.V1.PersistentVolume DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolume();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolume getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolume>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolume>() {
      @java.lang.Override
      public PersistentVolume 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<PersistentVolume> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolume> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolume getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeClaimOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeClaim)
      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 defines the desired characteristics of a volume requested by a pod author.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * spec defines the desired characteristics of a volume requested by a pod author.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec getSpec();
    /**
     * <pre>
     * spec defines the desired characteristics of a volume requested by a pod author.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder getSpecOrBuilder();

    /**
     * <pre>
     * status represents the current information/status of a persistent volume claim.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * status represents the current information/status of a persistent volume claim.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus getStatus();
    /**
     * <pre>
     * status represents the current information/status of a persistent volume claim.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * PersistentVolumeClaim is a user's request for and claim to a persistent volume
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaim}
   */
  public static final class PersistentVolumeClaim extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeClaim)
      PersistentVolumeClaimOrBuilder {
  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= */ "",
        PersistentVolumeClaim.class.getName());
    }
    // Use PersistentVolumeClaim.newBuilder() to construct.
    private PersistentVolumeClaim(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeClaim() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaim_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaim_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeClaim.class, io.kubernetes.client.proto.V1.PersistentVolumeClaim.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.V1.PersistentVolumeClaimSpec spec_;
    /**
     * <pre>
     * spec defines the desired characteristics of a volume requested by a pod author.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * spec defines the desired characteristics of a volume requested by a pod author.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * spec defines the desired characteristics of a volume requested by a pod author.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance() : spec_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus status_;
    /**
     * <pre>
     * status represents the current information/status of a persistent volume claim.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * status represents the current information/status of a persistent volume claim.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * status represents the current information/status of a persistent volume claim.
     * Read-only.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.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.V1.PersistentVolumeClaim)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeClaim other = (io.kubernetes.client.proto.V1.PersistentVolumeClaim) 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.V1.PersistentVolumeClaim parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaim 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.V1.PersistentVolumeClaim parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaim 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.V1.PersistentVolumeClaim parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaim parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaim parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaim 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.V1.PersistentVolumeClaim parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaim 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.V1.PersistentVolumeClaim parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaim 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.V1.PersistentVolumeClaim 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>
     * PersistentVolumeClaim is a user's request for and claim to a persistent volume
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaim}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeClaim)
        io.kubernetes.client.proto.V1.PersistentVolumeClaimOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaim_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaim_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeClaim.class, io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeClaim.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.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaim_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaim getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeClaim.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaim build() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaim result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaim buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaim result = new io.kubernetes.client.proto.V1.PersistentVolumeClaim(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PersistentVolumeClaim 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.V1.PersistentVolumeClaim) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeClaim)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeClaim other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeClaim.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.V1.PersistentVolumeClaimSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * spec defines the desired characteristics of a volume requested by a pod author.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * spec defines the desired characteristics of a volume requested by a pod author.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * spec defines the desired characteristics of a volume requested by a pod author.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * spec defines the desired characteristics of a volume requested by a pod author.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * spec defines the desired characteristics of a volume requested by a pod author.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * spec defines the desired characteristics of a volume requested by a pod author.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * spec defines the desired characteristics of a volume requested by a pod author.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * spec defines the desired characteristics of a volume requested by a pod author.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * spec defines the desired characteristics of a volume requested by a pod author.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      private io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus, io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * status represents the current information/status of a persistent volume claim.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * status represents the current information/status of a persistent volume claim.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * status represents the current information/status of a persistent volume claim.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status represents the current information/status of a persistent volume claim.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status represents the current information/status of a persistent volume claim.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * status represents the current information/status of a persistent volume claim.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status represents the current information/status of a persistent volume claim.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * status represents the current information/status of a persistent volume claim.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * status represents the current information/status of a persistent volume claim.
       * Read-only.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimStatus status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus, io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus, io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeClaim)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeClaim)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeClaim DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeClaim();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaim getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeClaim>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeClaim>() {
      @java.lang.Override
      public PersistentVolumeClaim 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<PersistentVolumeClaim> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeClaim> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaim getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeClaimConditionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeClaimCondition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <code>optional string status = 2;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <code>optional string status = 2;</code>
     * @return The status.
     */
    java.lang.String getStatus();
    /**
     * <code>optional string status = 2;</code>
     * @return The bytes for status.
     */
    com.google.protobuf.ByteString
        getStatusBytes();

    /**
     * <pre>
     * lastProbeTime is the time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     * @return Whether the lastProbeTime field is set.
     */
    boolean hasLastProbeTime();
    /**
     * <pre>
     * lastProbeTime is the time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     * @return The lastProbeTime.
     */
    io.kubernetes.client.proto.Meta.Time getLastProbeTime();
    /**
     * <pre>
     * lastProbeTime is the time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastProbeTimeOrBuilder();

    /**
     * <pre>
     * lastTransitionTime is the time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return Whether the lastTransitionTime field is set.
     */
    boolean hasLastTransitionTime();
    /**
     * <pre>
     * lastTransitionTime is the time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return The lastTransitionTime.
     */
    io.kubernetes.client.proto.Meta.Time getLastTransitionTime();
    /**
     * <pre>
     * lastTransitionTime is the time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastTransitionTimeOrBuilder();

    /**
     * <pre>
     * reason is a unique, this should be a short, machine understandable string that gives the reason
     * for condition's last transition. If it reports "Resizing" that means the underlying
     * persistent volume is being resized.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * reason is a unique, this should be a short, machine understandable string that gives the reason
     * for condition's last transition. If it reports "Resizing" that means the underlying
     * persistent volume is being resized.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * reason is a unique, this should be a short, machine understandable string that gives the reason
     * for condition's last transition. If it reports "Resizing" that means the underlying
     * persistent volume is being resized.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * message is the human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * message is the human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * message is the human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * <pre>
   * PersistentVolumeClaimCondition contains details about state of pvc
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimCondition}
   */
  public static final class PersistentVolumeClaimCondition extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeClaimCondition)
      PersistentVolumeClaimConditionOrBuilder {
  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= */ "",
        PersistentVolumeClaimCondition.class.getName());
    }
    // Use PersistentVolumeClaimCondition.newBuilder() to construct.
    private PersistentVolumeClaimCondition(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeClaimCondition() {
      type_ = "";
      status_ = "";
      reason_ = "";
      message_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimCondition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimCondition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <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;
      }
    }
    /**
     * <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_ = "";
    /**
     * <code>optional string status = 2;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <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;
      }
    }
    /**
     * <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 LASTPROBETIME_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.Meta.Time lastProbeTime_;
    /**
     * <pre>
     * lastProbeTime is the time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     * @return Whether the lastProbeTime field is set.
     */
    @java.lang.Override
    public boolean hasLastProbeTime() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * lastProbeTime is the time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     * @return The lastProbeTime.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getLastProbeTime() {
      return lastProbeTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastProbeTime_;
    }
    /**
     * <pre>
     * lastProbeTime is the time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastProbeTimeOrBuilder() {
      return lastProbeTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastProbeTime_;
    }

    public static final int LASTTRANSITIONTIME_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.Meta.Time lastTransitionTime_;
    /**
     * <pre>
     * lastTransitionTime is the time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return Whether the lastTransitionTime field is set.
     */
    @java.lang.Override
    public boolean hasLastTransitionTime() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * lastTransitionTime is the time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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 is the time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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 = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * reason is a unique, this should be a short, machine understandable string that gives the reason
     * for condition's last transition. If it reports "Resizing" that means the underlying
     * persistent volume is being resized.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * reason is a unique, this should be a short, machine understandable string that gives the reason
     * for condition's last transition. If it reports "Resizing" that means the underlying
     * persistent volume is being resized.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</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, this should be a short, machine understandable string that gives the reason
     * for condition's last transition. If it reports "Resizing" that means the underlying
     * persistent volume is being resized.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</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 = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * message is the human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * message is the human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</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 the human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</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, getLastProbeTime());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getLastTransitionTime());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, reason_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, 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, getLastProbeTime());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getLastTransitionTime());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, reason_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, 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.V1.PersistentVolumeClaimCondition)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition other = (io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition) 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 (hasLastProbeTime() != other.hasLastProbeTime()) return false;
      if (hasLastProbeTime()) {
        if (!getLastProbeTime()
            .equals(other.getLastProbeTime())) 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 (hasLastProbeTime()) {
        hash = (37 * hash) + LASTPROBETIME_FIELD_NUMBER;
        hash = (53 * hash) + getLastProbeTime().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.V1.PersistentVolumeClaimCondition parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition 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.V1.PersistentVolumeClaimCondition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition 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.V1.PersistentVolumeClaimCondition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition 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.V1.PersistentVolumeClaimCondition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition 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.V1.PersistentVolumeClaimCondition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition 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.V1.PersistentVolumeClaimCondition 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>
     * PersistentVolumeClaimCondition contains details about state of pvc
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimCondition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeClaimCondition)
        io.kubernetes.client.proto.V1.PersistentVolumeClaimConditionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimCondition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimCondition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLastProbeTimeFieldBuilder();
          getLastTransitionTimeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = "";
        status_ = "";
        lastProbeTime_ = null;
        if (lastProbeTimeBuilder_ != null) {
          lastProbeTimeBuilder_.dispose();
          lastProbeTimeBuilder_ = null;
        }
        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.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimCondition_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition build() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition result = new io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition 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.lastProbeTime_ = lastProbeTimeBuilder_ == null
              ? lastProbeTime_
              : lastProbeTimeBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.lastTransitionTime_ = lastTransitionTimeBuilder_ == null
              ? lastTransitionTime_
              : lastTransitionTimeBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.message_ = message_;
          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.V1.PersistentVolumeClaimCondition) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.getDefaultInstance()) return this;
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasStatus()) {
          status_ = other.status_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasLastProbeTime()) {
          mergeLastProbeTime(other.getLastProbeTime());
        }
        if (other.hasLastTransitionTime()) {
          mergeLastTransitionTime(other.getLastTransitionTime());
        }
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          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: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                status_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getLastProbeTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getLastTransitionTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                reason_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                message_ = 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 type_ = "";
      /**
       * <code>optional string type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <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;
        }
      }
      /**
       * <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;
        }
      }
      /**
       * <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;
      }
      /**
       * <code>optional string type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <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_ = "";
      /**
       * <code>optional string status = 2;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <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;
        }
      }
      /**
       * <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;
        }
      }
      /**
       * <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;
      }
      /**
       * <code>optional string status = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        status_ = getDefaultInstance().getStatus();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <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 lastProbeTime_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> lastProbeTimeBuilder_;
      /**
       * <pre>
       * lastProbeTime is the time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       * @return Whether the lastProbeTime field is set.
       */
      public boolean hasLastProbeTime() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * lastProbeTime is the time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       * @return The lastProbeTime.
       */
      public io.kubernetes.client.proto.Meta.Time getLastProbeTime() {
        if (lastProbeTimeBuilder_ == null) {
          return lastProbeTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastProbeTime_;
        } else {
          return lastProbeTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * lastProbeTime is the time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public Builder setLastProbeTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastProbeTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastProbeTime_ = value;
        } else {
          lastProbeTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastProbeTime is the time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public Builder setLastProbeTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (lastProbeTimeBuilder_ == null) {
          lastProbeTime_ = builderForValue.build();
        } else {
          lastProbeTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastProbeTime is the time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public Builder mergeLastProbeTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastProbeTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            lastProbeTime_ != null &&
            lastProbeTime_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getLastProbeTimeBuilder().mergeFrom(value);
          } else {
            lastProbeTime_ = value;
          }
        } else {
          lastProbeTimeBuilder_.mergeFrom(value);
        }
        if (lastProbeTime_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * lastProbeTime is the time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public Builder clearLastProbeTime() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lastProbeTime_ = null;
        if (lastProbeTimeBuilder_ != null) {
          lastProbeTimeBuilder_.dispose();
          lastProbeTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastProbeTime is the time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastProbeTimeBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getLastProbeTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * lastProbeTime is the time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastProbeTimeOrBuilder() {
        if (lastProbeTimeBuilder_ != null) {
          return lastProbeTimeBuilder_.getMessageOrBuilder();
        } else {
          return lastProbeTime_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastProbeTime_;
        }
      }
      /**
       * <pre>
       * lastProbeTime is the time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 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> 
          getLastProbeTimeFieldBuilder() {
        if (lastProbeTimeBuilder_ == null) {
          lastProbeTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getLastProbeTime(),
                  getParentForChildren(),
                  isClean());
          lastProbeTime_ = null;
        }
        return lastProbeTimeBuilder_;
      }

      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 is the time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       * @return Whether the lastTransitionTime field is set.
       */
      public boolean hasLastTransitionTime() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * lastTransitionTime is the time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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 is the time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastTransitionTime is the time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public Builder setLastTransitionTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (lastTransitionTimeBuilder_ == null) {
          lastTransitionTime_ = builderForValue.build();
        } else {
          lastTransitionTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastTransitionTime is the time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public Builder mergeLastTransitionTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastTransitionTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 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_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * lastTransitionTime is the time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public Builder clearLastTransitionTime() {
        bitField0_ = (bitField0_ & ~0x00000008);
        lastTransitionTime_ = null;
        if (lastTransitionTimeBuilder_ != null) {
          lastTransitionTimeBuilder_.dispose();
          lastTransitionTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastTransitionTime is the time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastTransitionTimeBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getLastTransitionTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * lastTransitionTime is the time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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 is the time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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, this should be a short, machine understandable string that gives the reason
       * for condition's last transition. If it reports "Resizing" that means the underlying
       * persistent volume is being resized.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * reason is a unique, this should be a short, machine understandable string that gives the reason
       * for condition's last transition. If it reports "Resizing" that means the underlying
       * persistent volume is being resized.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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, this should be a short, machine understandable string that gives the reason
       * for condition's last transition. If it reports "Resizing" that means the underlying
       * persistent volume is being resized.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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, this should be a short, machine understandable string that gives the reason
       * for condition's last transition. If it reports "Resizing" that means the underlying
       * persistent volume is being resized.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * reason is a unique, this should be a short, machine understandable string that gives the reason
       * for condition's last transition. If it reports "Resizing" that means the underlying
       * persistent volume is being resized.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * reason is a unique, this should be a short, machine understandable string that gives the reason
       * for condition's last transition. If it reports "Resizing" that means the underlying
       * persistent volume is being resized.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * message is the human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * message is the human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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 the human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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 the human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * message is the human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * message is the human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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_ |= 0x00000020;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeClaimCondition)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeClaimCondition)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeClaimCondition>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeClaimCondition>() {
      @java.lang.Override
      public PersistentVolumeClaimCondition 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<PersistentVolumeClaimCondition> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeClaimCondition> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeClaimListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeClaimList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * items is a list of persistent volume claims.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PersistentVolumeClaim> 
        getItemsList();
    /**
     * <pre>
     * items is a list of persistent volume claims.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaim getItems(int index);
    /**
     * <pre>
     * items is a list of persistent volume claims.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * items is a list of persistent volume claims.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PersistentVolumeClaimOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * items is a list of persistent volume claims.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * PersistentVolumeClaimList is a list of PersistentVolumeClaim items.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimList}
   */
  public static final class PersistentVolumeClaimList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeClaimList)
      PersistentVolumeClaimListOrBuilder {
  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= */ "",
        PersistentVolumeClaimList.class.getName());
    }
    // Use PersistentVolumeClaimList.newBuilder() to construct.
    private PersistentVolumeClaimList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeClaimList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeClaimList.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.PersistentVolumeClaim> items_;
    /**
     * <pre>
     * items is a list of persistent volume claims.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PersistentVolumeClaim> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * items is a list of persistent volume claims.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PersistentVolumeClaimOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * items is a list of persistent volume claims.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * items is a list of persistent volume claims.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaim getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * items is a list of persistent volume claims.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimOrBuilder 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.V1.PersistentVolumeClaimList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeClaimList other = (io.kubernetes.client.proto.V1.PersistentVolumeClaimList) 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.V1.PersistentVolumeClaimList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimList 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.V1.PersistentVolumeClaimList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimList 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.V1.PersistentVolumeClaimList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimList 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.V1.PersistentVolumeClaimList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimList 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.V1.PersistentVolumeClaimList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimList 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.V1.PersistentVolumeClaimList 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>
     * PersistentVolumeClaimList is a list of PersistentVolumeClaim items.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeClaimList)
        io.kubernetes.client.proto.V1.PersistentVolumeClaimListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeClaimList.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeClaimList.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.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeClaimList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimList build() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimList buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimList result = new io.kubernetes.client.proto.V1.PersistentVolumeClaimList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PersistentVolumeClaimList 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.V1.PersistentVolumeClaimList 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.V1.PersistentVolumeClaimList) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeClaimList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeClaimList other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeClaimList.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.V1.PersistentVolumeClaim m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PersistentVolumeClaim.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.PersistentVolumeClaim> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PersistentVolumeClaim>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaim, io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PersistentVolumeClaim> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaim getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.PersistentVolumeClaim value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.PersistentVolumeClaim value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.PersistentVolumeClaim value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PersistentVolumeClaim> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PersistentVolumeClaimOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PersistentVolumeClaim.getDefaultInstance());
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PersistentVolumeClaim.getDefaultInstance());
      }
      /**
       * <pre>
       * items is a list of persistent volume claims.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaim items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaim, io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolumeClaim, io.kubernetes.client.proto.V1.PersistentVolumeClaim.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeClaimList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeClaimList)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeClaimList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeClaimList();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeClaimList>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeClaimList>() {
      @java.lang.Override
      public PersistentVolumeClaimList 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<PersistentVolumeClaimList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeClaimList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeClaimSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeClaimSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * accessModes contains the desired access modes the volume should have.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 1;</code>
     * @return A list containing the accessModes.
     */
    java.util.List<java.lang.String>
        getAccessModesList();
    /**
     * <pre>
     * accessModes contains the desired access modes the volume should have.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 1;</code>
     * @return The count of accessModes.
     */
    int getAccessModesCount();
    /**
     * <pre>
     * accessModes contains the desired access modes the volume should have.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 1;</code>
     * @param index The index of the element to return.
     * @return The accessModes at the given index.
     */
    java.lang.String getAccessModes(int index);
    /**
     * <pre>
     * accessModes contains the desired access modes the volume should have.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the accessModes at the given index.
     */
    com.google.protobuf.ByteString
        getAccessModesBytes(int index);

    /**
     * <pre>
     * selector is a label query over volumes to consider for binding.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
     * @return Whether the selector field is set.
     */
    boolean hasSelector();
    /**
     * <pre>
     * selector is a label query over volumes to consider for binding.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
     * @return The selector.
     */
    io.kubernetes.client.proto.Meta.LabelSelector getSelector();
    /**
     * <pre>
     * selector is a label query over volumes to consider for binding.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
     */
    io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getSelectorOrBuilder();

    /**
     * <pre>
     * resources represents the minimum resources the volume should have.
     * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
     * that are lower than previous value but must still be higher than capacity recorded in the
     * status field of the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
     * @return Whether the resources field is set.
     */
    boolean hasResources();
    /**
     * <pre>
     * resources represents the minimum resources the volume should have.
     * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
     * that are lower than previous value but must still be higher than capacity recorded in the
     * status field of the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
     * @return The resources.
     */
    io.kubernetes.client.proto.V1.VolumeResourceRequirements getResources();
    /**
     * <pre>
     * resources represents the minimum resources the volume should have.
     * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
     * that are lower than previous value but must still be higher than capacity recorded in the
     * status field of the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
     */
    io.kubernetes.client.proto.V1.VolumeResourceRequirementsOrBuilder getResourcesOrBuilder();

    /**
     * <pre>
     * volumeName is the binding reference to the PersistentVolume backing this claim.
     * +optional
     * </pre>
     *
     * <code>optional string volumeName = 3;</code>
     * @return Whether the volumeName field is set.
     */
    boolean hasVolumeName();
    /**
     * <pre>
     * volumeName is the binding reference to the PersistentVolume backing this claim.
     * +optional
     * </pre>
     *
     * <code>optional string volumeName = 3;</code>
     * @return The volumeName.
     */
    java.lang.String getVolumeName();
    /**
     * <pre>
     * volumeName is the binding reference to the PersistentVolume backing this claim.
     * +optional
     * </pre>
     *
     * <code>optional string volumeName = 3;</code>
     * @return The bytes for volumeName.
     */
    com.google.protobuf.ByteString
        getVolumeNameBytes();

    /**
     * <pre>
     * storageClassName is the name of the StorageClass required by the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 5;</code>
     * @return Whether the storageClassName field is set.
     */
    boolean hasStorageClassName();
    /**
     * <pre>
     * storageClassName is the name of the StorageClass required by the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 5;</code>
     * @return The storageClassName.
     */
    java.lang.String getStorageClassName();
    /**
     * <pre>
     * storageClassName is the name of the StorageClass required by the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 5;</code>
     * @return The bytes for storageClassName.
     */
    com.google.protobuf.ByteString
        getStorageClassNameBytes();

    /**
     * <pre>
     * volumeMode defines what type of volume is required by the claim.
     * Value of Filesystem is implied when not included in claim spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 6;</code>
     * @return Whether the volumeMode field is set.
     */
    boolean hasVolumeMode();
    /**
     * <pre>
     * volumeMode defines what type of volume is required by the claim.
     * Value of Filesystem is implied when not included in claim spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 6;</code>
     * @return The volumeMode.
     */
    java.lang.String getVolumeMode();
    /**
     * <pre>
     * volumeMode defines what type of volume is required by the claim.
     * Value of Filesystem is implied when not included in claim spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 6;</code>
     * @return The bytes for volumeMode.
     */
    com.google.protobuf.ByteString
        getVolumeModeBytes();

    /**
     * <pre>
     * dataSource field can be used to specify either:
     * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
     * * An existing PVC (PersistentVolumeClaim)
     * If the provisioner or an external controller can support the specified data source,
     * it will create a new volume based on the contents of the specified data source.
     * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
     * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
     * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
     * @return Whether the dataSource field is set.
     */
    boolean hasDataSource();
    /**
     * <pre>
     * dataSource field can be used to specify either:
     * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
     * * An existing PVC (PersistentVolumeClaim)
     * If the provisioner or an external controller can support the specified data source,
     * it will create a new volume based on the contents of the specified data source.
     * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
     * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
     * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
     * @return The dataSource.
     */
    io.kubernetes.client.proto.V1.TypedLocalObjectReference getDataSource();
    /**
     * <pre>
     * dataSource field can be used to specify either:
     * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
     * * An existing PVC (PersistentVolumeClaim)
     * If the provisioner or an external controller can support the specified data source,
     * it will create a new volume based on the contents of the specified data source.
     * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
     * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
     * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
     */
    io.kubernetes.client.proto.V1.TypedLocalObjectReferenceOrBuilder getDataSourceOrBuilder();

    /**
     * <pre>
     * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
     * volume is desired. This may be any object from a non-empty API group (non
     * core object) or a PersistentVolumeClaim object.
     * When this field is specified, volume binding will only succeed if the type of
     * the specified object matches some installed volume populator or dynamic
     * provisioner.
     * This field will replace the functionality of the dataSource field and as such
     * if both fields are non-empty, they must have the same value. For backwards
     * compatibility, when namespace isn't specified in dataSourceRef,
     * both fields (dataSource and dataSourceRef) will be set to the same
     * value automatically if one of them is empty and the other is non-empty.
     * When namespace is specified in dataSourceRef,
     * dataSource isn't set to the same value and must be empty.
     * There are three important differences between dataSource and dataSourceRef:
     * * While dataSource only allows two specific types of objects, dataSourceRef
     * allows any non-core object, as well as PersistentVolumeClaim objects.
     * * While dataSource ignores disallowed values (dropping them), dataSourceRef
     * preserves all values, and generates an error if a disallowed value is
     * specified.
     * * While dataSource only allows local objects, dataSourceRef allows objects
     * in any namespaces.
     * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
     * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
     * @return Whether the dataSourceRef field is set.
     */
    boolean hasDataSourceRef();
    /**
     * <pre>
     * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
     * volume is desired. This may be any object from a non-empty API group (non
     * core object) or a PersistentVolumeClaim object.
     * When this field is specified, volume binding will only succeed if the type of
     * the specified object matches some installed volume populator or dynamic
     * provisioner.
     * This field will replace the functionality of the dataSource field and as such
     * if both fields are non-empty, they must have the same value. For backwards
     * compatibility, when namespace isn't specified in dataSourceRef,
     * both fields (dataSource and dataSourceRef) will be set to the same
     * value automatically if one of them is empty and the other is non-empty.
     * When namespace is specified in dataSourceRef,
     * dataSource isn't set to the same value and must be empty.
     * There are three important differences between dataSource and dataSourceRef:
     * * While dataSource only allows two specific types of objects, dataSourceRef
     * allows any non-core object, as well as PersistentVolumeClaim objects.
     * * While dataSource ignores disallowed values (dropping them), dataSourceRef
     * preserves all values, and generates an error if a disallowed value is
     * specified.
     * * While dataSource only allows local objects, dataSourceRef allows objects
     * in any namespaces.
     * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
     * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
     * @return The dataSourceRef.
     */
    io.kubernetes.client.proto.V1.TypedObjectReference getDataSourceRef();
    /**
     * <pre>
     * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
     * volume is desired. This may be any object from a non-empty API group (non
     * core object) or a PersistentVolumeClaim object.
     * When this field is specified, volume binding will only succeed if the type of
     * the specified object matches some installed volume populator or dynamic
     * provisioner.
     * This field will replace the functionality of the dataSource field and as such
     * if both fields are non-empty, they must have the same value. For backwards
     * compatibility, when namespace isn't specified in dataSourceRef,
     * both fields (dataSource and dataSourceRef) will be set to the same
     * value automatically if one of them is empty and the other is non-empty.
     * When namespace is specified in dataSourceRef,
     * dataSource isn't set to the same value and must be empty.
     * There are three important differences between dataSource and dataSourceRef:
     * * While dataSource only allows two specific types of objects, dataSourceRef
     * allows any non-core object, as well as PersistentVolumeClaim objects.
     * * While dataSource ignores disallowed values (dropping them), dataSourceRef
     * preserves all values, and generates an error if a disallowed value is
     * specified.
     * * While dataSource only allows local objects, dataSourceRef allows objects
     * in any namespaces.
     * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
     * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
     */
    io.kubernetes.client.proto.V1.TypedObjectReferenceOrBuilder getDataSourceRefOrBuilder();

    /**
     * <pre>
     * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
     * If specified, the CSI driver will create or update the volume with the attributes defined
     * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
     * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
     * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
     * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
     * will be set by the persistentvolume controller if it exists.
     * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
     * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
     * exists.
     * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
     * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 9;</code>
     * @return Whether the volumeAttributesClassName field is set.
     */
    boolean hasVolumeAttributesClassName();
    /**
     * <pre>
     * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
     * If specified, the CSI driver will create or update the volume with the attributes defined
     * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
     * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
     * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
     * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
     * will be set by the persistentvolume controller if it exists.
     * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
     * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
     * exists.
     * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
     * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 9;</code>
     * @return The volumeAttributesClassName.
     */
    java.lang.String getVolumeAttributesClassName();
    /**
     * <pre>
     * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
     * If specified, the CSI driver will create or update the volume with the attributes defined
     * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
     * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
     * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
     * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
     * will be set by the persistentvolume controller if it exists.
     * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
     * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
     * exists.
     * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
     * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 9;</code>
     * @return The bytes for volumeAttributesClassName.
     */
    com.google.protobuf.ByteString
        getVolumeAttributesClassNameBytes();
  }
  /**
   * <pre>
   * PersistentVolumeClaimSpec describes the common attributes of storage devices
   * and allows a Source for provider-specific attributes
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimSpec}
   */
  public static final class PersistentVolumeClaimSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeClaimSpec)
      PersistentVolumeClaimSpecOrBuilder {
  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= */ "",
        PersistentVolumeClaimSpec.class.getName());
    }
    // Use PersistentVolumeClaimSpec.newBuilder() to construct.
    private PersistentVolumeClaimSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeClaimSpec() {
      accessModes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      volumeName_ = "";
      storageClassName_ = "";
      volumeMode_ = "";
      volumeAttributesClassName_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimSpec_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder.class);
    }

    private int bitField0_;
    public static final int ACCESSMODES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList accessModes_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * accessModes contains the desired access modes the volume should have.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 1;</code>
     * @return A list containing the accessModes.
     */
    public com.google.protobuf.ProtocolStringList
        getAccessModesList() {
      return accessModes_;
    }
    /**
     * <pre>
     * accessModes contains the desired access modes the volume should have.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 1;</code>
     * @return The count of accessModes.
     */
    public int getAccessModesCount() {
      return accessModes_.size();
    }
    /**
     * <pre>
     * accessModes contains the desired access modes the volume should have.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 1;</code>
     * @param index The index of the element to return.
     * @return The accessModes at the given index.
     */
    public java.lang.String getAccessModes(int index) {
      return accessModes_.get(index);
    }
    /**
     * <pre>
     * accessModes contains the desired access modes the volume should have.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the accessModes at the given index.
     */
    public com.google.protobuf.ByteString
        getAccessModesBytes(int index) {
      return accessModes_.getByteString(index);
    }

    public static final int SELECTOR_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.Meta.LabelSelector selector_;
    /**
     * <pre>
     * selector is a label query over volumes to consider for binding.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
     * @return Whether the selector field is set.
     */
    @java.lang.Override
    public boolean hasSelector() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * selector is a label query over volumes to consider for binding.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
     * @return The selector.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.LabelSelector getSelector() {
      return selector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : selector_;
    }
    /**
     * <pre>
     * selector is a label query over volumes to consider for binding.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getSelectorOrBuilder() {
      return selector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : selector_;
    }

    public static final int RESOURCES_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.VolumeResourceRequirements resources_;
    /**
     * <pre>
     * resources represents the minimum resources the volume should have.
     * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
     * that are lower than previous value but must still be higher than capacity recorded in the
     * status field of the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
     * @return Whether the resources field is set.
     */
    @java.lang.Override
    public boolean hasResources() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * resources represents the minimum resources the volume should have.
     * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
     * that are lower than previous value but must still be higher than capacity recorded in the
     * status field of the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
     * @return The resources.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeResourceRequirements getResources() {
      return resources_ == null ? io.kubernetes.client.proto.V1.VolumeResourceRequirements.getDefaultInstance() : resources_;
    }
    /**
     * <pre>
     * resources represents the minimum resources the volume should have.
     * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
     * that are lower than previous value but must still be higher than capacity recorded in the
     * status field of the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeResourceRequirementsOrBuilder getResourcesOrBuilder() {
      return resources_ == null ? io.kubernetes.client.proto.V1.VolumeResourceRequirements.getDefaultInstance() : resources_;
    }

    public static final int VOLUMENAME_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeName_ = "";
    /**
     * <pre>
     * volumeName is the binding reference to the PersistentVolume backing this claim.
     * +optional
     * </pre>
     *
     * <code>optional string volumeName = 3;</code>
     * @return Whether the volumeName field is set.
     */
    @java.lang.Override
    public boolean hasVolumeName() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * volumeName is the binding reference to the PersistentVolume backing this claim.
     * +optional
     * </pre>
     *
     * <code>optional string volumeName = 3;</code>
     * @return The volumeName.
     */
    @java.lang.Override
    public java.lang.String getVolumeName() {
      java.lang.Object ref = volumeName_;
      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()) {
          volumeName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeName is the binding reference to the PersistentVolume backing this claim.
     * +optional
     * </pre>
     *
     * <code>optional string volumeName = 3;</code>
     * @return The bytes for volumeName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeNameBytes() {
      java.lang.Object ref = volumeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STORAGECLASSNAME_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object storageClassName_ = "";
    /**
     * <pre>
     * storageClassName is the name of the StorageClass required by the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 5;</code>
     * @return Whether the storageClassName field is set.
     */
    @java.lang.Override
    public boolean hasStorageClassName() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * storageClassName is the name of the StorageClass required by the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 5;</code>
     * @return The storageClassName.
     */
    @java.lang.Override
    public java.lang.String getStorageClassName() {
      java.lang.Object ref = storageClassName_;
      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()) {
          storageClassName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * storageClassName is the name of the StorageClass required by the claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 5;</code>
     * @return The bytes for storageClassName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStorageClassNameBytes() {
      java.lang.Object ref = storageClassName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storageClassName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUMEMODE_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeMode_ = "";
    /**
     * <pre>
     * volumeMode defines what type of volume is required by the claim.
     * Value of Filesystem is implied when not included in claim spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 6;</code>
     * @return Whether the volumeMode field is set.
     */
    @java.lang.Override
    public boolean hasVolumeMode() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * volumeMode defines what type of volume is required by the claim.
     * Value of Filesystem is implied when not included in claim spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 6;</code>
     * @return The volumeMode.
     */
    @java.lang.Override
    public java.lang.String getVolumeMode() {
      java.lang.Object ref = volumeMode_;
      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()) {
          volumeMode_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeMode defines what type of volume is required by the claim.
     * Value of Filesystem is implied when not included in claim spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 6;</code>
     * @return The bytes for volumeMode.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeModeBytes() {
      java.lang.Object ref = volumeMode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeMode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATASOURCE_FIELD_NUMBER = 7;
    private io.kubernetes.client.proto.V1.TypedLocalObjectReference dataSource_;
    /**
     * <pre>
     * dataSource field can be used to specify either:
     * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
     * * An existing PVC (PersistentVolumeClaim)
     * If the provisioner or an external controller can support the specified data source,
     * it will create a new volume based on the contents of the specified data source.
     * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
     * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
     * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
     * @return Whether the dataSource field is set.
     */
    @java.lang.Override
    public boolean hasDataSource() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * dataSource field can be used to specify either:
     * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
     * * An existing PVC (PersistentVolumeClaim)
     * If the provisioner or an external controller can support the specified data source,
     * it will create a new volume based on the contents of the specified data source.
     * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
     * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
     * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
     * @return The dataSource.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TypedLocalObjectReference getDataSource() {
      return dataSource_ == null ? io.kubernetes.client.proto.V1.TypedLocalObjectReference.getDefaultInstance() : dataSource_;
    }
    /**
     * <pre>
     * dataSource field can be used to specify either:
     * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
     * * An existing PVC (PersistentVolumeClaim)
     * If the provisioner or an external controller can support the specified data source,
     * it will create a new volume based on the contents of the specified data source.
     * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
     * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
     * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TypedLocalObjectReferenceOrBuilder getDataSourceOrBuilder() {
      return dataSource_ == null ? io.kubernetes.client.proto.V1.TypedLocalObjectReference.getDefaultInstance() : dataSource_;
    }

    public static final int DATASOURCEREF_FIELD_NUMBER = 8;
    private io.kubernetes.client.proto.V1.TypedObjectReference dataSourceRef_;
    /**
     * <pre>
     * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
     * volume is desired. This may be any object from a non-empty API group (non
     * core object) or a PersistentVolumeClaim object.
     * When this field is specified, volume binding will only succeed if the type of
     * the specified object matches some installed volume populator or dynamic
     * provisioner.
     * This field will replace the functionality of the dataSource field and as such
     * if both fields are non-empty, they must have the same value. For backwards
     * compatibility, when namespace isn't specified in dataSourceRef,
     * both fields (dataSource and dataSourceRef) will be set to the same
     * value automatically if one of them is empty and the other is non-empty.
     * When namespace is specified in dataSourceRef,
     * dataSource isn't set to the same value and must be empty.
     * There are three important differences between dataSource and dataSourceRef:
     * * While dataSource only allows two specific types of objects, dataSourceRef
     * allows any non-core object, as well as PersistentVolumeClaim objects.
     * * While dataSource ignores disallowed values (dropping them), dataSourceRef
     * preserves all values, and generates an error if a disallowed value is
     * specified.
     * * While dataSource only allows local objects, dataSourceRef allows objects
     * in any namespaces.
     * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
     * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
     * @return Whether the dataSourceRef field is set.
     */
    @java.lang.Override
    public boolean hasDataSourceRef() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
     * volume is desired. This may be any object from a non-empty API group (non
     * core object) or a PersistentVolumeClaim object.
     * When this field is specified, volume binding will only succeed if the type of
     * the specified object matches some installed volume populator or dynamic
     * provisioner.
     * This field will replace the functionality of the dataSource field and as such
     * if both fields are non-empty, they must have the same value. For backwards
     * compatibility, when namespace isn't specified in dataSourceRef,
     * both fields (dataSource and dataSourceRef) will be set to the same
     * value automatically if one of them is empty and the other is non-empty.
     * When namespace is specified in dataSourceRef,
     * dataSource isn't set to the same value and must be empty.
     * There are three important differences between dataSource and dataSourceRef:
     * * While dataSource only allows two specific types of objects, dataSourceRef
     * allows any non-core object, as well as PersistentVolumeClaim objects.
     * * While dataSource ignores disallowed values (dropping them), dataSourceRef
     * preserves all values, and generates an error if a disallowed value is
     * specified.
     * * While dataSource only allows local objects, dataSourceRef allows objects
     * in any namespaces.
     * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
     * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
     * @return The dataSourceRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TypedObjectReference getDataSourceRef() {
      return dataSourceRef_ == null ? io.kubernetes.client.proto.V1.TypedObjectReference.getDefaultInstance() : dataSourceRef_;
    }
    /**
     * <pre>
     * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
     * volume is desired. This may be any object from a non-empty API group (non
     * core object) or a PersistentVolumeClaim object.
     * When this field is specified, volume binding will only succeed if the type of
     * the specified object matches some installed volume populator or dynamic
     * provisioner.
     * This field will replace the functionality of the dataSource field and as such
     * if both fields are non-empty, they must have the same value. For backwards
     * compatibility, when namespace isn't specified in dataSourceRef,
     * both fields (dataSource and dataSourceRef) will be set to the same
     * value automatically if one of them is empty and the other is non-empty.
     * When namespace is specified in dataSourceRef,
     * dataSource isn't set to the same value and must be empty.
     * There are three important differences between dataSource and dataSourceRef:
     * * While dataSource only allows two specific types of objects, dataSourceRef
     * allows any non-core object, as well as PersistentVolumeClaim objects.
     * * While dataSource ignores disallowed values (dropping them), dataSourceRef
     * preserves all values, and generates an error if a disallowed value is
     * specified.
     * * While dataSource only allows local objects, dataSourceRef allows objects
     * in any namespaces.
     * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
     * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TypedObjectReferenceOrBuilder getDataSourceRefOrBuilder() {
      return dataSourceRef_ == null ? io.kubernetes.client.proto.V1.TypedObjectReference.getDefaultInstance() : dataSourceRef_;
    }

    public static final int VOLUMEATTRIBUTESCLASSNAME_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeAttributesClassName_ = "";
    /**
     * <pre>
     * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
     * If specified, the CSI driver will create or update the volume with the attributes defined
     * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
     * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
     * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
     * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
     * will be set by the persistentvolume controller if it exists.
     * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
     * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
     * exists.
     * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
     * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 9;</code>
     * @return Whether the volumeAttributesClassName field is set.
     */
    @java.lang.Override
    public boolean hasVolumeAttributesClassName() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
     * If specified, the CSI driver will create or update the volume with the attributes defined
     * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
     * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
     * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
     * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
     * will be set by the persistentvolume controller if it exists.
     * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
     * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
     * exists.
     * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
     * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 9;</code>
     * @return The volumeAttributesClassName.
     */
    @java.lang.Override
    public java.lang.String getVolumeAttributesClassName() {
      java.lang.Object ref = volumeAttributesClassName_;
      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()) {
          volumeAttributesClassName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
     * If specified, the CSI driver will create or update the volume with the attributes defined
     * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
     * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
     * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
     * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
     * will be set by the persistentvolume controller if it exists.
     * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
     * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
     * exists.
     * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
     * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 9;</code>
     * @return The bytes for volumeAttributesClassName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeAttributesClassNameBytes() {
      java.lang.Object ref = volumeAttributesClassName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeAttributesClassName_ = 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 {
      for (int i = 0; i < accessModes_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, accessModes_.getRaw(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getResources());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, volumeName_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(4, getSelector());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, storageClassName_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, volumeMode_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(7, getDataSource());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(8, getDataSourceRef());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, volumeAttributesClassName_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < accessModes_.size(); i++) {
          dataSize += computeStringSizeNoTag(accessModes_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAccessModesList().size();
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getResources());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, volumeName_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getSelector());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, storageClassName_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, volumeMode_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getDataSource());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getDataSourceRef());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, volumeAttributesClassName_);
      }
      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.V1.PersistentVolumeClaimSpec)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec other = (io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec) obj;

      if (!getAccessModesList()
          .equals(other.getAccessModesList())) return false;
      if (hasSelector() != other.hasSelector()) return false;
      if (hasSelector()) {
        if (!getSelector()
            .equals(other.getSelector())) return false;
      }
      if (hasResources() != other.hasResources()) return false;
      if (hasResources()) {
        if (!getResources()
            .equals(other.getResources())) return false;
      }
      if (hasVolumeName() != other.hasVolumeName()) return false;
      if (hasVolumeName()) {
        if (!getVolumeName()
            .equals(other.getVolumeName())) return false;
      }
      if (hasStorageClassName() != other.hasStorageClassName()) return false;
      if (hasStorageClassName()) {
        if (!getStorageClassName()
            .equals(other.getStorageClassName())) return false;
      }
      if (hasVolumeMode() != other.hasVolumeMode()) return false;
      if (hasVolumeMode()) {
        if (!getVolumeMode()
            .equals(other.getVolumeMode())) return false;
      }
      if (hasDataSource() != other.hasDataSource()) return false;
      if (hasDataSource()) {
        if (!getDataSource()
            .equals(other.getDataSource())) return false;
      }
      if (hasDataSourceRef() != other.hasDataSourceRef()) return false;
      if (hasDataSourceRef()) {
        if (!getDataSourceRef()
            .equals(other.getDataSourceRef())) return false;
      }
      if (hasVolumeAttributesClassName() != other.hasVolumeAttributesClassName()) return false;
      if (hasVolumeAttributesClassName()) {
        if (!getVolumeAttributesClassName()
            .equals(other.getVolumeAttributesClassName())) 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 (getAccessModesCount() > 0) {
        hash = (37 * hash) + ACCESSMODES_FIELD_NUMBER;
        hash = (53 * hash) + getAccessModesList().hashCode();
      }
      if (hasSelector()) {
        hash = (37 * hash) + SELECTOR_FIELD_NUMBER;
        hash = (53 * hash) + getSelector().hashCode();
      }
      if (hasResources()) {
        hash = (37 * hash) + RESOURCES_FIELD_NUMBER;
        hash = (53 * hash) + getResources().hashCode();
      }
      if (hasVolumeName()) {
        hash = (37 * hash) + VOLUMENAME_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeName().hashCode();
      }
      if (hasStorageClassName()) {
        hash = (37 * hash) + STORAGECLASSNAME_FIELD_NUMBER;
        hash = (53 * hash) + getStorageClassName().hashCode();
      }
      if (hasVolumeMode()) {
        hash = (37 * hash) + VOLUMEMODE_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeMode().hashCode();
      }
      if (hasDataSource()) {
        hash = (37 * hash) + DATASOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getDataSource().hashCode();
      }
      if (hasDataSourceRef()) {
        hash = (37 * hash) + DATASOURCEREF_FIELD_NUMBER;
        hash = (53 * hash) + getDataSourceRef().hashCode();
      }
      if (hasVolumeAttributesClassName()) {
        hash = (37 * hash) + VOLUMEATTRIBUTESCLASSNAME_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeAttributesClassName().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec 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.V1.PersistentVolumeClaimSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec 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.V1.PersistentVolumeClaimSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec 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.V1.PersistentVolumeClaimSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec 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.V1.PersistentVolumeClaimSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec 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.V1.PersistentVolumeClaimSpec 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>
     * PersistentVolumeClaimSpec describes the common attributes of storage devices
     * and allows a Source for provider-specific attributes
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeClaimSpec)
        io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimSpec_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSelectorFieldBuilder();
          getResourcesFieldBuilder();
          getDataSourceFieldBuilder();
          getDataSourceRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        accessModes_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        selector_ = null;
        if (selectorBuilder_ != null) {
          selectorBuilder_.dispose();
          selectorBuilder_ = null;
        }
        resources_ = null;
        if (resourcesBuilder_ != null) {
          resourcesBuilder_.dispose();
          resourcesBuilder_ = null;
        }
        volumeName_ = "";
        storageClassName_ = "";
        volumeMode_ = "";
        dataSource_ = null;
        if (dataSourceBuilder_ != null) {
          dataSourceBuilder_.dispose();
          dataSourceBuilder_ = null;
        }
        dataSourceRef_ = null;
        if (dataSourceRefBuilder_ != null) {
          dataSourceRefBuilder_.dispose();
          dataSourceRefBuilder_ = null;
        }
        volumeAttributesClassName_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec build() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec result = new io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          accessModes_.makeImmutable();
          result.accessModes_ = accessModes_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.selector_ = selectorBuilder_ == null
              ? selector_
              : selectorBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.resources_ = resourcesBuilder_ == null
              ? resources_
              : resourcesBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.volumeName_ = volumeName_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.storageClassName_ = storageClassName_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.volumeMode_ = volumeMode_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.dataSource_ = dataSourceBuilder_ == null
              ? dataSource_
              : dataSourceBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.dataSourceRef_ = dataSourceRefBuilder_ == null
              ? dataSourceRef_
              : dataSourceRefBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.volumeAttributesClassName_ = volumeAttributesClassName_;
          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.V1.PersistentVolumeClaimSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance()) return this;
        if (!other.accessModes_.isEmpty()) {
          if (accessModes_.isEmpty()) {
            accessModes_ = other.accessModes_;
            bitField0_ |= 0x00000001;
          } else {
            ensureAccessModesIsMutable();
            accessModes_.addAll(other.accessModes_);
          }
          onChanged();
        }
        if (other.hasSelector()) {
          mergeSelector(other.getSelector());
        }
        if (other.hasResources()) {
          mergeResources(other.getResources());
        }
        if (other.hasVolumeName()) {
          volumeName_ = other.volumeName_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasStorageClassName()) {
          storageClassName_ = other.storageClassName_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasVolumeMode()) {
          volumeMode_ = other.volumeMode_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasDataSource()) {
          mergeDataSource(other.getDataSource());
        }
        if (other.hasDataSourceRef()) {
          mergeDataSourceRef(other.getDataSourceRef());
        }
        if (other.hasVolumeAttributesClassName()) {
          volumeAttributesClassName_ = other.volumeAttributesClassName_;
          bitField0_ |= 0x00000100;
          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: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureAccessModesIsMutable();
                accessModes_.add(bs);
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getResourcesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 18
              case 26: {
                volumeName_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getSelectorFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 34
              case 42: {
                storageClassName_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                volumeMode_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getDataSourceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getDataSourceRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                volumeAttributesClassName_ = input.readBytes();
                bitField0_ |= 0x00000100;
                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 com.google.protobuf.LazyStringArrayList accessModes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureAccessModesIsMutable() {
        if (!accessModes_.isModifiable()) {
          accessModes_ = new com.google.protobuf.LazyStringArrayList(accessModes_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * accessModes contains the desired access modes the volume should have.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 1;</code>
       * @return A list containing the accessModes.
       */
      public com.google.protobuf.ProtocolStringList
          getAccessModesList() {
        accessModes_.makeImmutable();
        return accessModes_;
      }
      /**
       * <pre>
       * accessModes contains the desired access modes the volume should have.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 1;</code>
       * @return The count of accessModes.
       */
      public int getAccessModesCount() {
        return accessModes_.size();
      }
      /**
       * <pre>
       * accessModes contains the desired access modes the volume should have.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 1;</code>
       * @param index The index of the element to return.
       * @return The accessModes at the given index.
       */
      public java.lang.String getAccessModes(int index) {
        return accessModes_.get(index);
      }
      /**
       * <pre>
       * accessModes contains the desired access modes the volume should have.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the accessModes at the given index.
       */
      public com.google.protobuf.ByteString
          getAccessModesBytes(int index) {
        return accessModes_.getByteString(index);
      }
      /**
       * <pre>
       * accessModes contains the desired access modes the volume should have.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 1;</code>
       * @param index The index to set the value at.
       * @param value The accessModes to set.
       * @return This builder for chaining.
       */
      public Builder setAccessModes(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAccessModesIsMutable();
        accessModes_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains the desired access modes the volume should have.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 1;</code>
       * @param value The accessModes to add.
       * @return This builder for chaining.
       */
      public Builder addAccessModes(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAccessModesIsMutable();
        accessModes_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains the desired access modes the volume should have.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 1;</code>
       * @param values The accessModes to add.
       * @return This builder for chaining.
       */
      public Builder addAllAccessModes(
          java.lang.Iterable<java.lang.String> values) {
        ensureAccessModesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, accessModes_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains the desired access modes the volume should have.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccessModes() {
        accessModes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains the desired access modes the volume should have.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 1;</code>
       * @param value The bytes of the accessModes to add.
       * @return This builder for chaining.
       */
      public Builder addAccessModesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAccessModesIsMutable();
        accessModes_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.LabelSelector selector_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder> selectorBuilder_;
      /**
       * <pre>
       * selector is a label query over volumes to consider for binding.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
       * @return Whether the selector field is set.
       */
      public boolean hasSelector() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * selector is a label query over volumes to consider for binding.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
       * @return The selector.
       */
      public io.kubernetes.client.proto.Meta.LabelSelector getSelector() {
        if (selectorBuilder_ == null) {
          return selector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : selector_;
        } else {
          return selectorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * selector is a label query over volumes to consider for binding.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
       */
      public Builder setSelector(io.kubernetes.client.proto.Meta.LabelSelector value) {
        if (selectorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          selector_ = value;
        } else {
          selectorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * selector is a label query over volumes to consider for binding.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
       */
      public Builder setSelector(
          io.kubernetes.client.proto.Meta.LabelSelector.Builder builderForValue) {
        if (selectorBuilder_ == null) {
          selector_ = builderForValue.build();
        } else {
          selectorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * selector is a label query over volumes to consider for binding.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
       */
      public Builder mergeSelector(io.kubernetes.client.proto.Meta.LabelSelector value) {
        if (selectorBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            selector_ != null &&
            selector_ != io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance()) {
            getSelectorBuilder().mergeFrom(value);
          } else {
            selector_ = value;
          }
        } else {
          selectorBuilder_.mergeFrom(value);
        }
        if (selector_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * selector is a label query over volumes to consider for binding.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
       */
      public Builder clearSelector() {
        bitField0_ = (bitField0_ & ~0x00000002);
        selector_ = null;
        if (selectorBuilder_ != null) {
          selectorBuilder_.dispose();
          selectorBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * selector is a label query over volumes to consider for binding.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.LabelSelector.Builder getSelectorBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSelectorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * selector is a label query over volumes to consider for binding.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getSelectorOrBuilder() {
        if (selectorBuilder_ != null) {
          return selectorBuilder_.getMessageOrBuilder();
        } else {
          return selector_ == null ?
              io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : selector_;
        }
      }
      /**
       * <pre>
       * selector is a label query over volumes to consider for binding.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder> 
          getSelectorFieldBuilder() {
        if (selectorBuilder_ == null) {
          selectorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder>(
                  getSelector(),
                  getParentForChildren(),
                  isClean());
          selector_ = null;
        }
        return selectorBuilder_;
      }

      private io.kubernetes.client.proto.V1.VolumeResourceRequirements resources_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeResourceRequirements, io.kubernetes.client.proto.V1.VolumeResourceRequirements.Builder, io.kubernetes.client.proto.V1.VolumeResourceRequirementsOrBuilder> resourcesBuilder_;
      /**
       * <pre>
       * resources represents the minimum resources the volume should have.
       * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
       * that are lower than previous value but must still be higher than capacity recorded in the
       * status field of the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
       * @return Whether the resources field is set.
       */
      public boolean hasResources() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * resources represents the minimum resources the volume should have.
       * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
       * that are lower than previous value but must still be higher than capacity recorded in the
       * status field of the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
       * @return The resources.
       */
      public io.kubernetes.client.proto.V1.VolumeResourceRequirements getResources() {
        if (resourcesBuilder_ == null) {
          return resources_ == null ? io.kubernetes.client.proto.V1.VolumeResourceRequirements.getDefaultInstance() : resources_;
        } else {
          return resourcesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * resources represents the minimum resources the volume should have.
       * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
       * that are lower than previous value but must still be higher than capacity recorded in the
       * status field of the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
       */
      public Builder setResources(io.kubernetes.client.proto.V1.VolumeResourceRequirements value) {
        if (resourcesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resources_ = value;
        } else {
          resourcesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * resources represents the minimum resources the volume should have.
       * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
       * that are lower than previous value but must still be higher than capacity recorded in the
       * status field of the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
       */
      public Builder setResources(
          io.kubernetes.client.proto.V1.VolumeResourceRequirements.Builder builderForValue) {
        if (resourcesBuilder_ == null) {
          resources_ = builderForValue.build();
        } else {
          resourcesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * resources represents the minimum resources the volume should have.
       * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
       * that are lower than previous value but must still be higher than capacity recorded in the
       * status field of the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
       */
      public Builder mergeResources(io.kubernetes.client.proto.V1.VolumeResourceRequirements value) {
        if (resourcesBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            resources_ != null &&
            resources_ != io.kubernetes.client.proto.V1.VolumeResourceRequirements.getDefaultInstance()) {
            getResourcesBuilder().mergeFrom(value);
          } else {
            resources_ = value;
          }
        } else {
          resourcesBuilder_.mergeFrom(value);
        }
        if (resources_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * resources represents the minimum resources the volume should have.
       * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
       * that are lower than previous value but must still be higher than capacity recorded in the
       * status field of the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
       */
      public Builder clearResources() {
        bitField0_ = (bitField0_ & ~0x00000004);
        resources_ = null;
        if (resourcesBuilder_ != null) {
          resourcesBuilder_.dispose();
          resourcesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * resources represents the minimum resources the volume should have.
       * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
       * that are lower than previous value but must still be higher than capacity recorded in the
       * status field of the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeResourceRequirements.Builder getResourcesBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getResourcesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * resources represents the minimum resources the volume should have.
       * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
       * that are lower than previous value but must still be higher than capacity recorded in the
       * status field of the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeResourceRequirementsOrBuilder getResourcesOrBuilder() {
        if (resourcesBuilder_ != null) {
          return resourcesBuilder_.getMessageOrBuilder();
        } else {
          return resources_ == null ?
              io.kubernetes.client.proto.V1.VolumeResourceRequirements.getDefaultInstance() : resources_;
        }
      }
      /**
       * <pre>
       * resources represents the minimum resources the volume should have.
       * If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
       * that are lower than previous value but must still be higher than capacity recorded in the
       * status field of the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeResourceRequirements resources = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeResourceRequirements, io.kubernetes.client.proto.V1.VolumeResourceRequirements.Builder, io.kubernetes.client.proto.V1.VolumeResourceRequirementsOrBuilder> 
          getResourcesFieldBuilder() {
        if (resourcesBuilder_ == null) {
          resourcesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.VolumeResourceRequirements, io.kubernetes.client.proto.V1.VolumeResourceRequirements.Builder, io.kubernetes.client.proto.V1.VolumeResourceRequirementsOrBuilder>(
                  getResources(),
                  getParentForChildren(),
                  isClean());
          resources_ = null;
        }
        return resourcesBuilder_;
      }

      private java.lang.Object volumeName_ = "";
      /**
       * <pre>
       * volumeName is the binding reference to the PersistentVolume backing this claim.
       * +optional
       * </pre>
       *
       * <code>optional string volumeName = 3;</code>
       * @return Whether the volumeName field is set.
       */
      public boolean hasVolumeName() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * volumeName is the binding reference to the PersistentVolume backing this claim.
       * +optional
       * </pre>
       *
       * <code>optional string volumeName = 3;</code>
       * @return The volumeName.
       */
      public java.lang.String getVolumeName() {
        java.lang.Object ref = volumeName_;
        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()) {
            volumeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeName is the binding reference to the PersistentVolume backing this claim.
       * +optional
       * </pre>
       *
       * <code>optional string volumeName = 3;</code>
       * @return The bytes for volumeName.
       */
      public com.google.protobuf.ByteString
          getVolumeNameBytes() {
        java.lang.Object ref = volumeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeName is the binding reference to the PersistentVolume backing this claim.
       * +optional
       * </pre>
       *
       * <code>optional string volumeName = 3;</code>
       * @param value The volumeName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeName_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeName is the binding reference to the PersistentVolume backing this claim.
       * +optional
       * </pre>
       *
       * <code>optional string volumeName = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeName() {
        volumeName_ = getDefaultInstance().getVolumeName();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeName is the binding reference to the PersistentVolume backing this claim.
       * +optional
       * </pre>
       *
       * <code>optional string volumeName = 3;</code>
       * @param value The bytes for volumeName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeName_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object storageClassName_ = "";
      /**
       * <pre>
       * storageClassName is the name of the StorageClass required by the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 5;</code>
       * @return Whether the storageClassName field is set.
       */
      public boolean hasStorageClassName() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * storageClassName is the name of the StorageClass required by the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 5;</code>
       * @return The storageClassName.
       */
      public java.lang.String getStorageClassName() {
        java.lang.Object ref = storageClassName_;
        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()) {
            storageClassName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * storageClassName is the name of the StorageClass required by the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 5;</code>
       * @return The bytes for storageClassName.
       */
      public com.google.protobuf.ByteString
          getStorageClassNameBytes() {
        java.lang.Object ref = storageClassName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storageClassName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * storageClassName is the name of the StorageClass required by the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 5;</code>
       * @param value The storageClassName to set.
       * @return This builder for chaining.
       */
      public Builder setStorageClassName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        storageClassName_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageClassName is the name of the StorageClass required by the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearStorageClassName() {
        storageClassName_ = getDefaultInstance().getStorageClassName();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageClassName is the name of the StorageClass required by the claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 5;</code>
       * @param value The bytes for storageClassName to set.
       * @return This builder for chaining.
       */
      public Builder setStorageClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        storageClassName_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object volumeMode_ = "";
      /**
       * <pre>
       * volumeMode defines what type of volume is required by the claim.
       * Value of Filesystem is implied when not included in claim spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 6;</code>
       * @return Whether the volumeMode field is set.
       */
      public boolean hasVolumeMode() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * volumeMode defines what type of volume is required by the claim.
       * Value of Filesystem is implied when not included in claim spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 6;</code>
       * @return The volumeMode.
       */
      public java.lang.String getVolumeMode() {
        java.lang.Object ref = volumeMode_;
        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()) {
            volumeMode_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeMode defines what type of volume is required by the claim.
       * Value of Filesystem is implied when not included in claim spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 6;</code>
       * @return The bytes for volumeMode.
       */
      public com.google.protobuf.ByteString
          getVolumeModeBytes() {
        java.lang.Object ref = volumeMode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeMode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeMode defines what type of volume is required by the claim.
       * Value of Filesystem is implied when not included in claim spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 6;</code>
       * @param value The volumeMode to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeMode(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeMode_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeMode defines what type of volume is required by the claim.
       * Value of Filesystem is implied when not included in claim spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeMode() {
        volumeMode_ = getDefaultInstance().getVolumeMode();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeMode defines what type of volume is required by the claim.
       * Value of Filesystem is implied when not included in claim spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 6;</code>
       * @param value The bytes for volumeMode to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeModeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeMode_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.TypedLocalObjectReference dataSource_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.TypedLocalObjectReference, io.kubernetes.client.proto.V1.TypedLocalObjectReference.Builder, io.kubernetes.client.proto.V1.TypedLocalObjectReferenceOrBuilder> dataSourceBuilder_;
      /**
       * <pre>
       * dataSource field can be used to specify either:
       * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
       * * An existing PVC (PersistentVolumeClaim)
       * If the provisioner or an external controller can support the specified data source,
       * it will create a new volume based on the contents of the specified data source.
       * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
       * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
       * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
       * @return Whether the dataSource field is set.
       */
      public boolean hasDataSource() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * dataSource field can be used to specify either:
       * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
       * * An existing PVC (PersistentVolumeClaim)
       * If the provisioner or an external controller can support the specified data source,
       * it will create a new volume based on the contents of the specified data source.
       * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
       * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
       * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
       * @return The dataSource.
       */
      public io.kubernetes.client.proto.V1.TypedLocalObjectReference getDataSource() {
        if (dataSourceBuilder_ == null) {
          return dataSource_ == null ? io.kubernetes.client.proto.V1.TypedLocalObjectReference.getDefaultInstance() : dataSource_;
        } else {
          return dataSourceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * dataSource field can be used to specify either:
       * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
       * * An existing PVC (PersistentVolumeClaim)
       * If the provisioner or an external controller can support the specified data source,
       * it will create a new volume based on the contents of the specified data source.
       * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
       * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
       * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
       */
      public Builder setDataSource(io.kubernetes.client.proto.V1.TypedLocalObjectReference value) {
        if (dataSourceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataSource_ = value;
        } else {
          dataSourceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * dataSource field can be used to specify either:
       * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
       * * An existing PVC (PersistentVolumeClaim)
       * If the provisioner or an external controller can support the specified data source,
       * it will create a new volume based on the contents of the specified data source.
       * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
       * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
       * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
       */
      public Builder setDataSource(
          io.kubernetes.client.proto.V1.TypedLocalObjectReference.Builder builderForValue) {
        if (dataSourceBuilder_ == null) {
          dataSource_ = builderForValue.build();
        } else {
          dataSourceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * dataSource field can be used to specify either:
       * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
       * * An existing PVC (PersistentVolumeClaim)
       * If the provisioner or an external controller can support the specified data source,
       * it will create a new volume based on the contents of the specified data source.
       * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
       * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
       * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
       */
      public Builder mergeDataSource(io.kubernetes.client.proto.V1.TypedLocalObjectReference value) {
        if (dataSourceBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            dataSource_ != null &&
            dataSource_ != io.kubernetes.client.proto.V1.TypedLocalObjectReference.getDefaultInstance()) {
            getDataSourceBuilder().mergeFrom(value);
          } else {
            dataSource_ = value;
          }
        } else {
          dataSourceBuilder_.mergeFrom(value);
        }
        if (dataSource_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * dataSource field can be used to specify either:
       * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
       * * An existing PVC (PersistentVolumeClaim)
       * If the provisioner or an external controller can support the specified data source,
       * it will create a new volume based on the contents of the specified data source.
       * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
       * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
       * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
       */
      public Builder clearDataSource() {
        bitField0_ = (bitField0_ & ~0x00000040);
        dataSource_ = null;
        if (dataSourceBuilder_ != null) {
          dataSourceBuilder_.dispose();
          dataSourceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * dataSource field can be used to specify either:
       * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
       * * An existing PVC (PersistentVolumeClaim)
       * If the provisioner or an external controller can support the specified data source,
       * it will create a new volume based on the contents of the specified data source.
       * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
       * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
       * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
       */
      public io.kubernetes.client.proto.V1.TypedLocalObjectReference.Builder getDataSourceBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getDataSourceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * dataSource field can be used to specify either:
       * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
       * * An existing PVC (PersistentVolumeClaim)
       * If the provisioner or an external controller can support the specified data source,
       * it will create a new volume based on the contents of the specified data source.
       * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
       * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
       * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
       */
      public io.kubernetes.client.proto.V1.TypedLocalObjectReferenceOrBuilder getDataSourceOrBuilder() {
        if (dataSourceBuilder_ != null) {
          return dataSourceBuilder_.getMessageOrBuilder();
        } else {
          return dataSource_ == null ?
              io.kubernetes.client.proto.V1.TypedLocalObjectReference.getDefaultInstance() : dataSource_;
        }
      }
      /**
       * <pre>
       * dataSource field can be used to specify either:
       * * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
       * * An existing PVC (PersistentVolumeClaim)
       * If the provisioner or an external controller can support the specified data source,
       * it will create a new volume based on the contents of the specified data source.
       * When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
       * and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
       * If the namespace is specified, then dataSourceRef will not be copied to dataSource.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedLocalObjectReference dataSource = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.TypedLocalObjectReference, io.kubernetes.client.proto.V1.TypedLocalObjectReference.Builder, io.kubernetes.client.proto.V1.TypedLocalObjectReferenceOrBuilder> 
          getDataSourceFieldBuilder() {
        if (dataSourceBuilder_ == null) {
          dataSourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.TypedLocalObjectReference, io.kubernetes.client.proto.V1.TypedLocalObjectReference.Builder, io.kubernetes.client.proto.V1.TypedLocalObjectReferenceOrBuilder>(
                  getDataSource(),
                  getParentForChildren(),
                  isClean());
          dataSource_ = null;
        }
        return dataSourceBuilder_;
      }

      private io.kubernetes.client.proto.V1.TypedObjectReference dataSourceRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.TypedObjectReference, io.kubernetes.client.proto.V1.TypedObjectReference.Builder, io.kubernetes.client.proto.V1.TypedObjectReferenceOrBuilder> dataSourceRefBuilder_;
      /**
       * <pre>
       * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
       * volume is desired. This may be any object from a non-empty API group (non
       * core object) or a PersistentVolumeClaim object.
       * When this field is specified, volume binding will only succeed if the type of
       * the specified object matches some installed volume populator or dynamic
       * provisioner.
       * This field will replace the functionality of the dataSource field and as such
       * if both fields are non-empty, they must have the same value. For backwards
       * compatibility, when namespace isn't specified in dataSourceRef,
       * both fields (dataSource and dataSourceRef) will be set to the same
       * value automatically if one of them is empty and the other is non-empty.
       * When namespace is specified in dataSourceRef,
       * dataSource isn't set to the same value and must be empty.
       * There are three important differences between dataSource and dataSourceRef:
       * * While dataSource only allows two specific types of objects, dataSourceRef
       * allows any non-core object, as well as PersistentVolumeClaim objects.
       * * While dataSource ignores disallowed values (dropping them), dataSourceRef
       * preserves all values, and generates an error if a disallowed value is
       * specified.
       * * While dataSource only allows local objects, dataSourceRef allows objects
       * in any namespaces.
       * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
       * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
       * @return Whether the dataSourceRef field is set.
       */
      public boolean hasDataSourceRef() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
       * volume is desired. This may be any object from a non-empty API group (non
       * core object) or a PersistentVolumeClaim object.
       * When this field is specified, volume binding will only succeed if the type of
       * the specified object matches some installed volume populator or dynamic
       * provisioner.
       * This field will replace the functionality of the dataSource field and as such
       * if both fields are non-empty, they must have the same value. For backwards
       * compatibility, when namespace isn't specified in dataSourceRef,
       * both fields (dataSource and dataSourceRef) will be set to the same
       * value automatically if one of them is empty and the other is non-empty.
       * When namespace is specified in dataSourceRef,
       * dataSource isn't set to the same value and must be empty.
       * There are three important differences between dataSource and dataSourceRef:
       * * While dataSource only allows two specific types of objects, dataSourceRef
       * allows any non-core object, as well as PersistentVolumeClaim objects.
       * * While dataSource ignores disallowed values (dropping them), dataSourceRef
       * preserves all values, and generates an error if a disallowed value is
       * specified.
       * * While dataSource only allows local objects, dataSourceRef allows objects
       * in any namespaces.
       * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
       * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
       * @return The dataSourceRef.
       */
      public io.kubernetes.client.proto.V1.TypedObjectReference getDataSourceRef() {
        if (dataSourceRefBuilder_ == null) {
          return dataSourceRef_ == null ? io.kubernetes.client.proto.V1.TypedObjectReference.getDefaultInstance() : dataSourceRef_;
        } else {
          return dataSourceRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
       * volume is desired. This may be any object from a non-empty API group (non
       * core object) or a PersistentVolumeClaim object.
       * When this field is specified, volume binding will only succeed if the type of
       * the specified object matches some installed volume populator or dynamic
       * provisioner.
       * This field will replace the functionality of the dataSource field and as such
       * if both fields are non-empty, they must have the same value. For backwards
       * compatibility, when namespace isn't specified in dataSourceRef,
       * both fields (dataSource and dataSourceRef) will be set to the same
       * value automatically if one of them is empty and the other is non-empty.
       * When namespace is specified in dataSourceRef,
       * dataSource isn't set to the same value and must be empty.
       * There are three important differences between dataSource and dataSourceRef:
       * * While dataSource only allows two specific types of objects, dataSourceRef
       * allows any non-core object, as well as PersistentVolumeClaim objects.
       * * While dataSource ignores disallowed values (dropping them), dataSourceRef
       * preserves all values, and generates an error if a disallowed value is
       * specified.
       * * While dataSource only allows local objects, dataSourceRef allows objects
       * in any namespaces.
       * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
       * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
       */
      public Builder setDataSourceRef(io.kubernetes.client.proto.V1.TypedObjectReference value) {
        if (dataSourceRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataSourceRef_ = value;
        } else {
          dataSourceRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
       * volume is desired. This may be any object from a non-empty API group (non
       * core object) or a PersistentVolumeClaim object.
       * When this field is specified, volume binding will only succeed if the type of
       * the specified object matches some installed volume populator or dynamic
       * provisioner.
       * This field will replace the functionality of the dataSource field and as such
       * if both fields are non-empty, they must have the same value. For backwards
       * compatibility, when namespace isn't specified in dataSourceRef,
       * both fields (dataSource and dataSourceRef) will be set to the same
       * value automatically if one of them is empty and the other is non-empty.
       * When namespace is specified in dataSourceRef,
       * dataSource isn't set to the same value and must be empty.
       * There are three important differences between dataSource and dataSourceRef:
       * * While dataSource only allows two specific types of objects, dataSourceRef
       * allows any non-core object, as well as PersistentVolumeClaim objects.
       * * While dataSource ignores disallowed values (dropping them), dataSourceRef
       * preserves all values, and generates an error if a disallowed value is
       * specified.
       * * While dataSource only allows local objects, dataSourceRef allows objects
       * in any namespaces.
       * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
       * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
       */
      public Builder setDataSourceRef(
          io.kubernetes.client.proto.V1.TypedObjectReference.Builder builderForValue) {
        if (dataSourceRefBuilder_ == null) {
          dataSourceRef_ = builderForValue.build();
        } else {
          dataSourceRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
       * volume is desired. This may be any object from a non-empty API group (non
       * core object) or a PersistentVolumeClaim object.
       * When this field is specified, volume binding will only succeed if the type of
       * the specified object matches some installed volume populator or dynamic
       * provisioner.
       * This field will replace the functionality of the dataSource field and as such
       * if both fields are non-empty, they must have the same value. For backwards
       * compatibility, when namespace isn't specified in dataSourceRef,
       * both fields (dataSource and dataSourceRef) will be set to the same
       * value automatically if one of them is empty and the other is non-empty.
       * When namespace is specified in dataSourceRef,
       * dataSource isn't set to the same value and must be empty.
       * There are three important differences between dataSource and dataSourceRef:
       * * While dataSource only allows two specific types of objects, dataSourceRef
       * allows any non-core object, as well as PersistentVolumeClaim objects.
       * * While dataSource ignores disallowed values (dropping them), dataSourceRef
       * preserves all values, and generates an error if a disallowed value is
       * specified.
       * * While dataSource only allows local objects, dataSourceRef allows objects
       * in any namespaces.
       * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
       * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
       */
      public Builder mergeDataSourceRef(io.kubernetes.client.proto.V1.TypedObjectReference value) {
        if (dataSourceRefBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
            dataSourceRef_ != null &&
            dataSourceRef_ != io.kubernetes.client.proto.V1.TypedObjectReference.getDefaultInstance()) {
            getDataSourceRefBuilder().mergeFrom(value);
          } else {
            dataSourceRef_ = value;
          }
        } else {
          dataSourceRefBuilder_.mergeFrom(value);
        }
        if (dataSourceRef_ != null) {
          bitField0_ |= 0x00000080;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
       * volume is desired. This may be any object from a non-empty API group (non
       * core object) or a PersistentVolumeClaim object.
       * When this field is specified, volume binding will only succeed if the type of
       * the specified object matches some installed volume populator or dynamic
       * provisioner.
       * This field will replace the functionality of the dataSource field and as such
       * if both fields are non-empty, they must have the same value. For backwards
       * compatibility, when namespace isn't specified in dataSourceRef,
       * both fields (dataSource and dataSourceRef) will be set to the same
       * value automatically if one of them is empty and the other is non-empty.
       * When namespace is specified in dataSourceRef,
       * dataSource isn't set to the same value and must be empty.
       * There are three important differences between dataSource and dataSourceRef:
       * * While dataSource only allows two specific types of objects, dataSourceRef
       * allows any non-core object, as well as PersistentVolumeClaim objects.
       * * While dataSource ignores disallowed values (dropping them), dataSourceRef
       * preserves all values, and generates an error if a disallowed value is
       * specified.
       * * While dataSource only allows local objects, dataSourceRef allows objects
       * in any namespaces.
       * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
       * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
       */
      public Builder clearDataSourceRef() {
        bitField0_ = (bitField0_ & ~0x00000080);
        dataSourceRef_ = null;
        if (dataSourceRefBuilder_ != null) {
          dataSourceRefBuilder_.dispose();
          dataSourceRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
       * volume is desired. This may be any object from a non-empty API group (non
       * core object) or a PersistentVolumeClaim object.
       * When this field is specified, volume binding will only succeed if the type of
       * the specified object matches some installed volume populator or dynamic
       * provisioner.
       * This field will replace the functionality of the dataSource field and as such
       * if both fields are non-empty, they must have the same value. For backwards
       * compatibility, when namespace isn't specified in dataSourceRef,
       * both fields (dataSource and dataSourceRef) will be set to the same
       * value automatically if one of them is empty and the other is non-empty.
       * When namespace is specified in dataSourceRef,
       * dataSource isn't set to the same value and must be empty.
       * There are three important differences between dataSource and dataSourceRef:
       * * While dataSource only allows two specific types of objects, dataSourceRef
       * allows any non-core object, as well as PersistentVolumeClaim objects.
       * * While dataSource ignores disallowed values (dropping them), dataSourceRef
       * preserves all values, and generates an error if a disallowed value is
       * specified.
       * * While dataSource only allows local objects, dataSourceRef allows objects
       * in any namespaces.
       * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
       * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
       */
      public io.kubernetes.client.proto.V1.TypedObjectReference.Builder getDataSourceRefBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getDataSourceRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
       * volume is desired. This may be any object from a non-empty API group (non
       * core object) or a PersistentVolumeClaim object.
       * When this field is specified, volume binding will only succeed if the type of
       * the specified object matches some installed volume populator or dynamic
       * provisioner.
       * This field will replace the functionality of the dataSource field and as such
       * if both fields are non-empty, they must have the same value. For backwards
       * compatibility, when namespace isn't specified in dataSourceRef,
       * both fields (dataSource and dataSourceRef) will be set to the same
       * value automatically if one of them is empty and the other is non-empty.
       * When namespace is specified in dataSourceRef,
       * dataSource isn't set to the same value and must be empty.
       * There are three important differences between dataSource and dataSourceRef:
       * * While dataSource only allows two specific types of objects, dataSourceRef
       * allows any non-core object, as well as PersistentVolumeClaim objects.
       * * While dataSource ignores disallowed values (dropping them), dataSourceRef
       * preserves all values, and generates an error if a disallowed value is
       * specified.
       * * While dataSource only allows local objects, dataSourceRef allows objects
       * in any namespaces.
       * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
       * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
       */
      public io.kubernetes.client.proto.V1.TypedObjectReferenceOrBuilder getDataSourceRefOrBuilder() {
        if (dataSourceRefBuilder_ != null) {
          return dataSourceRefBuilder_.getMessageOrBuilder();
        } else {
          return dataSourceRef_ == null ?
              io.kubernetes.client.proto.V1.TypedObjectReference.getDefaultInstance() : dataSourceRef_;
        }
      }
      /**
       * <pre>
       * dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
       * volume is desired. This may be any object from a non-empty API group (non
       * core object) or a PersistentVolumeClaim object.
       * When this field is specified, volume binding will only succeed if the type of
       * the specified object matches some installed volume populator or dynamic
       * provisioner.
       * This field will replace the functionality of the dataSource field and as such
       * if both fields are non-empty, they must have the same value. For backwards
       * compatibility, when namespace isn't specified in dataSourceRef,
       * both fields (dataSource and dataSourceRef) will be set to the same
       * value automatically if one of them is empty and the other is non-empty.
       * When namespace is specified in dataSourceRef,
       * dataSource isn't set to the same value and must be empty.
       * There are three important differences between dataSource and dataSourceRef:
       * * While dataSource only allows two specific types of objects, dataSourceRef
       * allows any non-core object, as well as PersistentVolumeClaim objects.
       * * While dataSource ignores disallowed values (dropping them), dataSourceRef
       * preserves all values, and generates an error if a disallowed value is
       * specified.
       * * While dataSource only allows local objects, dataSourceRef allows objects
       * in any namespaces.
       * (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
       * (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TypedObjectReference dataSourceRef = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.TypedObjectReference, io.kubernetes.client.proto.V1.TypedObjectReference.Builder, io.kubernetes.client.proto.V1.TypedObjectReferenceOrBuilder> 
          getDataSourceRefFieldBuilder() {
        if (dataSourceRefBuilder_ == null) {
          dataSourceRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.TypedObjectReference, io.kubernetes.client.proto.V1.TypedObjectReference.Builder, io.kubernetes.client.proto.V1.TypedObjectReferenceOrBuilder>(
                  getDataSourceRef(),
                  getParentForChildren(),
                  isClean());
          dataSourceRef_ = null;
        }
        return dataSourceRefBuilder_;
      }

      private java.lang.Object volumeAttributesClassName_ = "";
      /**
       * <pre>
       * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
       * If specified, the CSI driver will create or update the volume with the attributes defined
       * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
       * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
       * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
       * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
       * will be set by the persistentvolume controller if it exists.
       * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
       * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
       * exists.
       * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
       * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 9;</code>
       * @return Whether the volumeAttributesClassName field is set.
       */
      public boolean hasVolumeAttributesClassName() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
       * If specified, the CSI driver will create or update the volume with the attributes defined
       * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
       * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
       * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
       * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
       * will be set by the persistentvolume controller if it exists.
       * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
       * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
       * exists.
       * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
       * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 9;</code>
       * @return The volumeAttributesClassName.
       */
      public java.lang.String getVolumeAttributesClassName() {
        java.lang.Object ref = volumeAttributesClassName_;
        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()) {
            volumeAttributesClassName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
       * If specified, the CSI driver will create or update the volume with the attributes defined
       * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
       * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
       * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
       * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
       * will be set by the persistentvolume controller if it exists.
       * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
       * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
       * exists.
       * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
       * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 9;</code>
       * @return The bytes for volumeAttributesClassName.
       */
      public com.google.protobuf.ByteString
          getVolumeAttributesClassNameBytes() {
        java.lang.Object ref = volumeAttributesClassName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeAttributesClassName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
       * If specified, the CSI driver will create or update the volume with the attributes defined
       * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
       * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
       * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
       * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
       * will be set by the persistentvolume controller if it exists.
       * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
       * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
       * exists.
       * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
       * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 9;</code>
       * @param value The volumeAttributesClassName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeAttributesClassName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeAttributesClassName_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
       * If specified, the CSI driver will create or update the volume with the attributes defined
       * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
       * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
       * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
       * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
       * will be set by the persistentvolume controller if it exists.
       * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
       * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
       * exists.
       * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
       * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeAttributesClassName() {
        volumeAttributesClassName_ = getDefaultInstance().getVolumeAttributesClassName();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
       * If specified, the CSI driver will create or update the volume with the attributes defined
       * in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
       * it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
       * will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
       * If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
       * will be set by the persistentvolume controller if it exists.
       * If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
       * set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
       * exists.
       * More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
       * (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 9;</code>
       * @param value The bytes for volumeAttributesClassName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeAttributesClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeAttributesClassName_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeClaimSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeClaimSpec)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeClaimSpec>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeClaimSpec>() {
      @java.lang.Override
      public PersistentVolumeClaimSpec 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<PersistentVolumeClaimSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeClaimSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeClaimStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeClaimStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * phase represents the current phase of PersistentVolumeClaim.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return Whether the phase field is set.
     */
    boolean hasPhase();
    /**
     * <pre>
     * phase represents the current phase of PersistentVolumeClaim.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The phase.
     */
    java.lang.String getPhase();
    /**
     * <pre>
     * phase represents the current phase of PersistentVolumeClaim.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The bytes for phase.
     */
    com.google.protobuf.ByteString
        getPhaseBytes();

    /**
     * <pre>
     * accessModes contains the actual access modes the volume backing the PVC has.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 2;</code>
     * @return A list containing the accessModes.
     */
    java.util.List<java.lang.String>
        getAccessModesList();
    /**
     * <pre>
     * accessModes contains the actual access modes the volume backing the PVC has.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 2;</code>
     * @return The count of accessModes.
     */
    int getAccessModesCount();
    /**
     * <pre>
     * accessModes contains the actual access modes the volume backing the PVC has.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 2;</code>
     * @param index The index of the element to return.
     * @return The accessModes at the given index.
     */
    java.lang.String getAccessModes(int index);
    /**
     * <pre>
     * accessModes contains the actual access modes the volume backing the PVC has.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the accessModes at the given index.
     */
    com.google.protobuf.ByteString
        getAccessModesBytes(int index);

    /**
     * <pre>
     * capacity represents the actual resources of the underlying volume.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
     */
    int getCapacityCount();
    /**
     * <pre>
     * capacity represents the actual resources of the underlying volume.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
     */
    boolean containsCapacity(
        java.lang.String key);
    /**
     * Use {@link #getCapacityMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getCapacity();
    /**
     * <pre>
     * capacity represents the actual resources of the underlying volume.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getCapacityMap();
    /**
     * <pre>
     * capacity represents the actual resources of the underlying volume.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getCapacityOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * capacity represents the actual resources of the underlying volume.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getCapacityOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
     * resized then the Condition will be set to 'Resizing'.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition> 
        getConditionsList();
    /**
     * <pre>
     * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
     * resized then the Condition will be set to 'Resizing'.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition getConditions(int index);
    /**
     * <pre>
     * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
     * resized then the Condition will be set to 'Resizing'.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
     */
    int getConditionsCount();
    /**
     * <pre>
     * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
     * resized then the Condition will be set to 'Resizing'.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PersistentVolumeClaimConditionOrBuilder> 
        getConditionsOrBuilderList();
    /**
     * <pre>
     * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
     * resized then the Condition will be set to 'Resizing'.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimConditionOrBuilder getConditionsOrBuilder(
        int index);

    /**
     * <pre>
     * allocatedResources tracks the resources allocated to a PVC including its capacity.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * Capacity reported here may be larger than the actual capacity when a volume expansion operation
     * is requested.
     * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
     * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
     * If a volume expansion capacity request is lowered, allocatedResources is only
     * lowered if there are no expansion operations in progress and if the actual volume capacity
     * is equal or lower than the requested capacity.
     *
     * A controller that receives PVC update with previously unknown resourceName
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
     */
    int getAllocatedResourcesCount();
    /**
     * <pre>
     * allocatedResources tracks the resources allocated to a PVC including its capacity.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * Capacity reported here may be larger than the actual capacity when a volume expansion operation
     * is requested.
     * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
     * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
     * If a volume expansion capacity request is lowered, allocatedResources is only
     * lowered if there are no expansion operations in progress and if the actual volume capacity
     * is equal or lower than the requested capacity.
     *
     * A controller that receives PVC update with previously unknown resourceName
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
     */
    boolean containsAllocatedResources(
        java.lang.String key);
    /**
     * Use {@link #getAllocatedResourcesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getAllocatedResources();
    /**
     * <pre>
     * allocatedResources tracks the resources allocated to a PVC including its capacity.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * Capacity reported here may be larger than the actual capacity when a volume expansion operation
     * is requested.
     * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
     * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
     * If a volume expansion capacity request is lowered, allocatedResources is only
     * lowered if there are no expansion operations in progress and if the actual volume capacity
     * is equal or lower than the requested capacity.
     *
     * A controller that receives PVC update with previously unknown resourceName
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getAllocatedResourcesMap();
    /**
     * <pre>
     * allocatedResources tracks the resources allocated to a PVC including its capacity.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * Capacity reported here may be larger than the actual capacity when a volume expansion operation
     * is requested.
     * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
     * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
     * If a volume expansion capacity request is lowered, allocatedResources is only
     * lowered if there are no expansion operations in progress and if the actual volume capacity
     * is equal or lower than the requested capacity.
     *
     * A controller that receives PVC update with previously unknown resourceName
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * allocatedResources tracks the resources allocated to a PVC including its capacity.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * Capacity reported here may be larger than the actual capacity when a volume expansion operation
     * is requested.
     * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
     * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
     * If a volume expansion capacity request is lowered, allocatedResources is only
     * lowered if there are no expansion operations in progress and if the actual volume capacity
     * is equal or lower than the requested capacity.
     *
     * A controller that receives PVC update with previously unknown resourceName
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * allocatedResourceStatuses stores status of resource being resized for the given PVC.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * ClaimResourceStatus can be in any of following states:
     * - ControllerResizeInProgress:
     * State set when resize controller starts resizing the volume in control-plane.
     * - ControllerResizeFailed:
     * State set when resize has failed in resize controller with a terminal error.
     * - NodeResizePending:
     * State set when resize controller has finished resizing the volume but further resizing of
     * volume is needed on the node.
     * - NodeResizeInProgress:
     * State set when kubelet starts resizing the volume.
     * - NodeResizeFailed:
     * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
     * NodeResizeFailed.
     * For example: if expanding a PVC for more capacity - this field can be one of the following states:
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
     * When this field is not set, it means that no resize operation is in progress for the given PVC.
     *
     * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +mapType=granular
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
     */
    int getAllocatedResourceStatusesCount();
    /**
     * <pre>
     * allocatedResourceStatuses stores status of resource being resized for the given PVC.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * ClaimResourceStatus can be in any of following states:
     * - ControllerResizeInProgress:
     * State set when resize controller starts resizing the volume in control-plane.
     * - ControllerResizeFailed:
     * State set when resize has failed in resize controller with a terminal error.
     * - NodeResizePending:
     * State set when resize controller has finished resizing the volume but further resizing of
     * volume is needed on the node.
     * - NodeResizeInProgress:
     * State set when kubelet starts resizing the volume.
     * - NodeResizeFailed:
     * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
     * NodeResizeFailed.
     * For example: if expanding a PVC for more capacity - this field can be one of the following states:
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
     * When this field is not set, it means that no resize operation is in progress for the given PVC.
     *
     * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +mapType=granular
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
     */
    boolean containsAllocatedResourceStatuses(
        java.lang.String key);
    /**
     * Use {@link #getAllocatedResourceStatusesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getAllocatedResourceStatuses();
    /**
     * <pre>
     * allocatedResourceStatuses stores status of resource being resized for the given PVC.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * ClaimResourceStatus can be in any of following states:
     * - ControllerResizeInProgress:
     * State set when resize controller starts resizing the volume in control-plane.
     * - ControllerResizeFailed:
     * State set when resize has failed in resize controller with a terminal error.
     * - NodeResizePending:
     * State set when resize controller has finished resizing the volume but further resizing of
     * volume is needed on the node.
     * - NodeResizeInProgress:
     * State set when kubelet starts resizing the volume.
     * - NodeResizeFailed:
     * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
     * NodeResizeFailed.
     * For example: if expanding a PVC for more capacity - this field can be one of the following states:
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
     * When this field is not set, it means that no resize operation is in progress for the given PVC.
     *
     * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +mapType=granular
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getAllocatedResourceStatusesMap();
    /**
     * <pre>
     * allocatedResourceStatuses stores status of resource being resized for the given PVC.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * ClaimResourceStatus can be in any of following states:
     * - ControllerResizeInProgress:
     * State set when resize controller starts resizing the volume in control-plane.
     * - ControllerResizeFailed:
     * State set when resize has failed in resize controller with a terminal error.
     * - NodeResizePending:
     * State set when resize controller has finished resizing the volume but further resizing of
     * volume is needed on the node.
     * - NodeResizeInProgress:
     * State set when kubelet starts resizing the volume.
     * - NodeResizeFailed:
     * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
     * NodeResizeFailed.
     * For example: if expanding a PVC for more capacity - this field can be one of the following states:
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
     * When this field is not set, it means that no resize operation is in progress for the given PVC.
     *
     * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +mapType=granular
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
     */
    /* nullable */
java.lang.String getAllocatedResourceStatusesOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * allocatedResourceStatuses stores status of resource being resized for the given PVC.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * ClaimResourceStatus can be in any of following states:
     * - ControllerResizeInProgress:
     * State set when resize controller starts resizing the volume in control-plane.
     * - ControllerResizeFailed:
     * State set when resize has failed in resize controller with a terminal error.
     * - NodeResizePending:
     * State set when resize controller has finished resizing the volume but further resizing of
     * volume is needed on the node.
     * - NodeResizeInProgress:
     * State set when kubelet starts resizing the volume.
     * - NodeResizeFailed:
     * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
     * NodeResizeFailed.
     * For example: if expanding a PVC for more capacity - this field can be one of the following states:
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
     * When this field is not set, it means that no resize operation is in progress for the given PVC.
     *
     * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +mapType=granular
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
     */
    java.lang.String getAllocatedResourceStatusesOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
     * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string currentVolumeAttributesClassName = 8;</code>
     * @return Whether the currentVolumeAttributesClassName field is set.
     */
    boolean hasCurrentVolumeAttributesClassName();
    /**
     * <pre>
     * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
     * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string currentVolumeAttributesClassName = 8;</code>
     * @return The currentVolumeAttributesClassName.
     */
    java.lang.String getCurrentVolumeAttributesClassName();
    /**
     * <pre>
     * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
     * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string currentVolumeAttributesClassName = 8;</code>
     * @return The bytes for currentVolumeAttributesClassName.
     */
    com.google.protobuf.ByteString
        getCurrentVolumeAttributesClassNameBytes();

    /**
     * <pre>
     * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
     * When this is unset, there is no ModifyVolume operation being attempted.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
     * @return Whether the modifyVolumeStatus field is set.
     */
    boolean hasModifyVolumeStatus();
    /**
     * <pre>
     * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
     * When this is unset, there is no ModifyVolume operation being attempted.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
     * @return The modifyVolumeStatus.
     */
    io.kubernetes.client.proto.V1.ModifyVolumeStatus getModifyVolumeStatus();
    /**
     * <pre>
     * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
     * When this is unset, there is no ModifyVolume operation being attempted.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
     */
    io.kubernetes.client.proto.V1.ModifyVolumeStatusOrBuilder getModifyVolumeStatusOrBuilder();
  }
  /**
   * <pre>
   * PersistentVolumeClaimStatus is the current status of a persistent volume claim.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimStatus}
   */
  public static final class PersistentVolumeClaimStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeClaimStatus)
      PersistentVolumeClaimStatusOrBuilder {
  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= */ "",
        PersistentVolumeClaimStatus.class.getName());
    }
    // Use PersistentVolumeClaimStatus.newBuilder() to construct.
    private PersistentVolumeClaimStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeClaimStatus() {
      phase_ = "";
      accessModes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      conditions_ = java.util.Collections.emptyList();
      currentVolumeAttributesClassName_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 3:
          return internalGetCapacity();
        case 5:
          return internalGetAllocatedResources();
        case 7:
          return internalGetAllocatedResourceStatuses();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.Builder.class);
    }

    private int bitField0_;
    public static final int PHASE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object phase_ = "";
    /**
     * <pre>
     * phase represents the current phase of PersistentVolumeClaim.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return Whether the phase field is set.
     */
    @java.lang.Override
    public boolean hasPhase() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * phase represents the current phase of PersistentVolumeClaim.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The phase.
     */
    @java.lang.Override
    public java.lang.String getPhase() {
      java.lang.Object ref = phase_;
      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()) {
          phase_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * phase represents the current phase of PersistentVolumeClaim.
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The bytes for phase.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPhaseBytes() {
      java.lang.Object ref = phase_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        phase_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACCESSMODES_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList accessModes_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * accessModes contains the actual access modes the volume backing the PVC has.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 2;</code>
     * @return A list containing the accessModes.
     */
    public com.google.protobuf.ProtocolStringList
        getAccessModesList() {
      return accessModes_;
    }
    /**
     * <pre>
     * accessModes contains the actual access modes the volume backing the PVC has.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 2;</code>
     * @return The count of accessModes.
     */
    public int getAccessModesCount() {
      return accessModes_.size();
    }
    /**
     * <pre>
     * accessModes contains the actual access modes the volume backing the PVC has.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 2;</code>
     * @param index The index of the element to return.
     * @return The accessModes at the given index.
     */
    public java.lang.String getAccessModes(int index) {
      return accessModes_.get(index);
    }
    /**
     * <pre>
     * accessModes contains the actual access modes the volume backing the PVC has.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the accessModes at the given index.
     */
    public com.google.protobuf.ByteString
        getAccessModesBytes(int index) {
      return accessModes_.getByteString(index);
    }

    public static final int CAPACITY_FIELD_NUMBER = 3;
    private static final class CapacityDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_CapacityEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> capacity_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetCapacity() {
      if (capacity_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            CapacityDefaultEntryHolder.defaultEntry);
      }
      return capacity_;
    }
    public int getCapacityCount() {
      return internalGetCapacity().getMap().size();
    }
    /**
     * <pre>
     * capacity represents the actual resources of the underlying volume.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
     */
    @java.lang.Override
    public boolean containsCapacity(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetCapacity().getMap().containsKey(key);
    }
    /**
     * Use {@link #getCapacityMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacity() {
      return getCapacityMap();
    }
    /**
     * <pre>
     * capacity represents the actual resources of the underlying volume.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacityMap() {
      return internalGetCapacity().getMap();
    }
    /**
     * <pre>
     * capacity represents the actual resources of the underlying volume.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getCapacityOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetCapacity().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * capacity represents the actual resources of the underlying volume.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getCapacityOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetCapacity().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int CONDITIONS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition> conditions_;
    /**
     * <pre>
     * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
     * resized then the Condition will be set to 'Resizing'.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition> getConditionsList() {
      return conditions_;
    }
    /**
     * <pre>
     * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
     * resized then the Condition will be set to 'Resizing'.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PersistentVolumeClaimConditionOrBuilder> 
        getConditionsOrBuilderList() {
      return conditions_;
    }
    /**
     * <pre>
     * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
     * resized then the Condition will be set to 'Resizing'.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
     */
    @java.lang.Override
    public int getConditionsCount() {
      return conditions_.size();
    }
    /**
     * <pre>
     * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
     * resized then the Condition will be set to 'Resizing'.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition getConditions(int index) {
      return conditions_.get(index);
    }
    /**
     * <pre>
     * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
     * resized then the Condition will be set to 'Resizing'.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimConditionOrBuilder getConditionsOrBuilder(
        int index) {
      return conditions_.get(index);
    }

    public static final int ALLOCATEDRESOURCES_FIELD_NUMBER = 5;
    private static final class AllocatedResourcesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourcesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> allocatedResources_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetAllocatedResources() {
      if (allocatedResources_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            AllocatedResourcesDefaultEntryHolder.defaultEntry);
      }
      return allocatedResources_;
    }
    public int getAllocatedResourcesCount() {
      return internalGetAllocatedResources().getMap().size();
    }
    /**
     * <pre>
     * allocatedResources tracks the resources allocated to a PVC including its capacity.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * Capacity reported here may be larger than the actual capacity when a volume expansion operation
     * is requested.
     * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
     * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
     * If a volume expansion capacity request is lowered, allocatedResources is only
     * lowered if there are no expansion operations in progress and if the actual volume capacity
     * is equal or lower than the requested capacity.
     *
     * A controller that receives PVC update with previously unknown resourceName
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
     */
    @java.lang.Override
    public boolean containsAllocatedResources(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetAllocatedResources().getMap().containsKey(key);
    }
    /**
     * Use {@link #getAllocatedResourcesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatedResources() {
      return getAllocatedResourcesMap();
    }
    /**
     * <pre>
     * allocatedResources tracks the resources allocated to a PVC including its capacity.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * Capacity reported here may be larger than the actual capacity when a volume expansion operation
     * is requested.
     * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
     * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
     * If a volume expansion capacity request is lowered, allocatedResources is only
     * lowered if there are no expansion operations in progress and if the actual volume capacity
     * is equal or lower than the requested capacity.
     *
     * A controller that receives PVC update with previously unknown resourceName
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatedResourcesMap() {
      return internalGetAllocatedResources().getMap();
    }
    /**
     * <pre>
     * allocatedResources tracks the resources allocated to a PVC including its capacity.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * Capacity reported here may be larger than the actual capacity when a volume expansion operation
     * is requested.
     * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
     * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
     * If a volume expansion capacity request is lowered, allocatedResources is only
     * lowered if there are no expansion operations in progress and if the actual volume capacity
     * is equal or lower than the requested capacity.
     *
     * A controller that receives PVC update with previously unknown resourceName
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetAllocatedResources().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * allocatedResources tracks the resources allocated to a PVC including its capacity.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * Capacity reported here may be larger than the actual capacity when a volume expansion operation
     * is requested.
     * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
     * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
     * If a volume expansion capacity request is lowered, allocatedResources is only
     * lowered if there are no expansion operations in progress and if the actual volume capacity
     * is equal or lower than the requested capacity.
     *
     * A controller that receives PVC update with previously unknown resourceName
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetAllocatedResources().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int ALLOCATEDRESOURCESTATUSES_FIELD_NUMBER = 7;
    private static final class AllocatedResourceStatusesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourceStatusesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> allocatedResourceStatuses_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetAllocatedResourceStatuses() {
      if (allocatedResourceStatuses_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            AllocatedResourceStatusesDefaultEntryHolder.defaultEntry);
      }
      return allocatedResourceStatuses_;
    }
    public int getAllocatedResourceStatusesCount() {
      return internalGetAllocatedResourceStatuses().getMap().size();
    }
    /**
     * <pre>
     * allocatedResourceStatuses stores status of resource being resized for the given PVC.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * ClaimResourceStatus can be in any of following states:
     * - ControllerResizeInProgress:
     * State set when resize controller starts resizing the volume in control-plane.
     * - ControllerResizeFailed:
     * State set when resize has failed in resize controller with a terminal error.
     * - NodeResizePending:
     * State set when resize controller has finished resizing the volume but further resizing of
     * volume is needed on the node.
     * - NodeResizeInProgress:
     * State set when kubelet starts resizing the volume.
     * - NodeResizeFailed:
     * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
     * NodeResizeFailed.
     * For example: if expanding a PVC for more capacity - this field can be one of the following states:
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
     * When this field is not set, it means that no resize operation is in progress for the given PVC.
     *
     * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +mapType=granular
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
     */
    @java.lang.Override
    public boolean containsAllocatedResourceStatuses(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetAllocatedResourceStatuses().getMap().containsKey(key);
    }
    /**
     * Use {@link #getAllocatedResourceStatusesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getAllocatedResourceStatuses() {
      return getAllocatedResourceStatusesMap();
    }
    /**
     * <pre>
     * allocatedResourceStatuses stores status of resource being resized for the given PVC.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * ClaimResourceStatus can be in any of following states:
     * - ControllerResizeInProgress:
     * State set when resize controller starts resizing the volume in control-plane.
     * - ControllerResizeFailed:
     * State set when resize has failed in resize controller with a terminal error.
     * - NodeResizePending:
     * State set when resize controller has finished resizing the volume but further resizing of
     * volume is needed on the node.
     * - NodeResizeInProgress:
     * State set when kubelet starts resizing the volume.
     * - NodeResizeFailed:
     * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
     * NodeResizeFailed.
     * For example: if expanding a PVC for more capacity - this field can be one of the following states:
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
     * When this field is not set, it means that no resize operation is in progress for the given PVC.
     *
     * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +mapType=granular
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getAllocatedResourceStatusesMap() {
      return internalGetAllocatedResourceStatuses().getMap();
    }
    /**
     * <pre>
     * allocatedResourceStatuses stores status of resource being resized for the given PVC.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * ClaimResourceStatus can be in any of following states:
     * - ControllerResizeInProgress:
     * State set when resize controller starts resizing the volume in control-plane.
     * - ControllerResizeFailed:
     * State set when resize has failed in resize controller with a terminal error.
     * - NodeResizePending:
     * State set when resize controller has finished resizing the volume but further resizing of
     * volume is needed on the node.
     * - NodeResizeInProgress:
     * State set when kubelet starts resizing the volume.
     * - NodeResizeFailed:
     * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
     * NodeResizeFailed.
     * For example: if expanding a PVC for more capacity - this field can be one of the following states:
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
     * When this field is not set, it means that no resize operation is in progress for the given PVC.
     *
     * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +mapType=granular
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getAllocatedResourceStatusesOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetAllocatedResourceStatuses().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * allocatedResourceStatuses stores status of resource being resized for the given PVC.
     * Key names follow standard Kubernetes label syntax. Valid values are either:
     * * Un-prefixed keys:
     * - storage - the capacity of the volume.
     * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
     * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
     * reserved and hence may not be used.
     *
     * ClaimResourceStatus can be in any of following states:
     * - ControllerResizeInProgress:
     * State set when resize controller starts resizing the volume in control-plane.
     * - ControllerResizeFailed:
     * State set when resize has failed in resize controller with a terminal error.
     * - NodeResizePending:
     * State set when resize controller has finished resizing the volume but further resizing of
     * volume is needed on the node.
     * - NodeResizeInProgress:
     * State set when kubelet starts resizing the volume.
     * - NodeResizeFailed:
     * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
     * NodeResizeFailed.
     * For example: if expanding a PVC for more capacity - this field can be one of the following states:
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
     * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
     * When this field is not set, it means that no resize operation is in progress for the given PVC.
     *
     * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
     * should ignore the update for the purpose it was designed. For example - a controller that
     * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
     * resources associated with PVC.
     *
     * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
     * +featureGate=RecoverVolumeExpansionFailure
     * +mapType=granular
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
     */
    @java.lang.Override
    public java.lang.String getAllocatedResourceStatusesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetAllocatedResourceStatuses().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int CURRENTVOLUMEATTRIBUTESCLASSNAME_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object currentVolumeAttributesClassName_ = "";
    /**
     * <pre>
     * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
     * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string currentVolumeAttributesClassName = 8;</code>
     * @return Whether the currentVolumeAttributesClassName field is set.
     */
    @java.lang.Override
    public boolean hasCurrentVolumeAttributesClassName() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
     * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string currentVolumeAttributesClassName = 8;</code>
     * @return The currentVolumeAttributesClassName.
     */
    @java.lang.Override
    public java.lang.String getCurrentVolumeAttributesClassName() {
      java.lang.Object ref = currentVolumeAttributesClassName_;
      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()) {
          currentVolumeAttributesClassName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
     * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string currentVolumeAttributesClassName = 8;</code>
     * @return The bytes for currentVolumeAttributesClassName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCurrentVolumeAttributesClassNameBytes() {
      java.lang.Object ref = currentVolumeAttributesClassName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        currentVolumeAttributesClassName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MODIFYVOLUMESTATUS_FIELD_NUMBER = 9;
    private io.kubernetes.client.proto.V1.ModifyVolumeStatus modifyVolumeStatus_;
    /**
     * <pre>
     * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
     * When this is unset, there is no ModifyVolume operation being attempted.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
     * @return Whether the modifyVolumeStatus field is set.
     */
    @java.lang.Override
    public boolean hasModifyVolumeStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
     * When this is unset, there is no ModifyVolume operation being attempted.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
     * @return The modifyVolumeStatus.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ModifyVolumeStatus getModifyVolumeStatus() {
      return modifyVolumeStatus_ == null ? io.kubernetes.client.proto.V1.ModifyVolumeStatus.getDefaultInstance() : modifyVolumeStatus_;
    }
    /**
     * <pre>
     * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
     * When this is unset, there is no ModifyVolume operation being attempted.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ModifyVolumeStatusOrBuilder getModifyVolumeStatusOrBuilder() {
      return modifyVolumeStatus_ == null ? io.kubernetes.client.proto.V1.ModifyVolumeStatus.getDefaultInstance() : modifyVolumeStatus_;
    }

    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, phase_);
      }
      for (int i = 0; i < accessModes_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, accessModes_.getRaw(i));
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetCapacity(),
          CapacityDefaultEntryHolder.defaultEntry,
          3);
      for (int i = 0; i < conditions_.size(); i++) {
        output.writeMessage(4, conditions_.get(i));
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetAllocatedResources(),
          AllocatedResourcesDefaultEntryHolder.defaultEntry,
          5);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetAllocatedResourceStatuses(),
          AllocatedResourceStatusesDefaultEntryHolder.defaultEntry,
          7);
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, currentVolumeAttributesClassName_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(9, getModifyVolumeStatus());
      }
      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, phase_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < accessModes_.size(); i++) {
          dataSize += computeStringSizeNoTag(accessModes_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAccessModesList().size();
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetCapacity().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        capacity__ = CapacityDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, capacity__);
      }
      for (int i = 0; i < conditions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, conditions_.get(i));
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetAllocatedResources().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        allocatedResources__ = AllocatedResourcesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, allocatedResources__);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetAllocatedResourceStatuses().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        allocatedResourceStatuses__ = AllocatedResourceStatusesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, allocatedResourceStatuses__);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(8, currentVolumeAttributesClassName_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getModifyVolumeStatus());
      }
      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.V1.PersistentVolumeClaimStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus other = (io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus) obj;

      if (hasPhase() != other.hasPhase()) return false;
      if (hasPhase()) {
        if (!getPhase()
            .equals(other.getPhase())) return false;
      }
      if (!getAccessModesList()
          .equals(other.getAccessModesList())) return false;
      if (!internalGetCapacity().equals(
          other.internalGetCapacity())) return false;
      if (!getConditionsList()
          .equals(other.getConditionsList())) return false;
      if (!internalGetAllocatedResources().equals(
          other.internalGetAllocatedResources())) return false;
      if (!internalGetAllocatedResourceStatuses().equals(
          other.internalGetAllocatedResourceStatuses())) return false;
      if (hasCurrentVolumeAttributesClassName() != other.hasCurrentVolumeAttributesClassName()) return false;
      if (hasCurrentVolumeAttributesClassName()) {
        if (!getCurrentVolumeAttributesClassName()
            .equals(other.getCurrentVolumeAttributesClassName())) return false;
      }
      if (hasModifyVolumeStatus() != other.hasModifyVolumeStatus()) return false;
      if (hasModifyVolumeStatus()) {
        if (!getModifyVolumeStatus()
            .equals(other.getModifyVolumeStatus())) 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 (hasPhase()) {
        hash = (37 * hash) + PHASE_FIELD_NUMBER;
        hash = (53 * hash) + getPhase().hashCode();
      }
      if (getAccessModesCount() > 0) {
        hash = (37 * hash) + ACCESSMODES_FIELD_NUMBER;
        hash = (53 * hash) + getAccessModesList().hashCode();
      }
      if (!internalGetCapacity().getMap().isEmpty()) {
        hash = (37 * hash) + CAPACITY_FIELD_NUMBER;
        hash = (53 * hash) + internalGetCapacity().hashCode();
      }
      if (getConditionsCount() > 0) {
        hash = (37 * hash) + CONDITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConditionsList().hashCode();
      }
      if (!internalGetAllocatedResources().getMap().isEmpty()) {
        hash = (37 * hash) + ALLOCATEDRESOURCES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetAllocatedResources().hashCode();
      }
      if (!internalGetAllocatedResourceStatuses().getMap().isEmpty()) {
        hash = (37 * hash) + ALLOCATEDRESOURCESTATUSES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetAllocatedResourceStatuses().hashCode();
      }
      if (hasCurrentVolumeAttributesClassName()) {
        hash = (37 * hash) + CURRENTVOLUMEATTRIBUTESCLASSNAME_FIELD_NUMBER;
        hash = (53 * hash) + getCurrentVolumeAttributesClassName().hashCode();
      }
      if (hasModifyVolumeStatus()) {
        hash = (37 * hash) + MODIFYVOLUMESTATUS_FIELD_NUMBER;
        hash = (53 * hash) + getModifyVolumeStatus().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus 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.V1.PersistentVolumeClaimStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus 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.V1.PersistentVolumeClaimStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus 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.V1.PersistentVolumeClaimStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus 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.V1.PersistentVolumeClaimStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus 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.V1.PersistentVolumeClaimStatus 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>
     * PersistentVolumeClaimStatus is the current status of a persistent volume claim.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeClaimStatus)
        io.kubernetes.client.proto.V1.PersistentVolumeClaimStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 3:
            return internalGetCapacity();
          case 5:
            return internalGetAllocatedResources();
          case 7:
            return internalGetAllocatedResourceStatuses();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 3:
            return internalGetMutableCapacity();
          case 5:
            return internalGetMutableAllocatedResources();
          case 7:
            return internalGetMutableAllocatedResourceStatuses();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.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();
          getModifyVolumeStatusFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        phase_ = "";
        accessModes_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        internalGetMutableCapacity().clear();
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
        } else {
          conditions_ = null;
          conditionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        internalGetMutableAllocatedResources().clear();
        internalGetMutableAllocatedResourceStatuses().clear();
        currentVolumeAttributesClassName_ = "";
        modifyVolumeStatus_ = null;
        if (modifyVolumeStatusBuilder_ != null) {
          modifyVolumeStatusBuilder_.dispose();
          modifyVolumeStatusBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus build() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus result = new io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus result) {
        if (conditionsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            conditions_ = java.util.Collections.unmodifiableList(conditions_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.conditions_ = conditions_;
        } else {
          result.conditions_ = conditionsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.phase_ = phase_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          accessModes_.makeImmutable();
          result.accessModes_ = accessModes_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.capacity_ = internalGetCapacity().build(CapacityDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.allocatedResources_ = internalGetAllocatedResources().build(AllocatedResourcesDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.allocatedResourceStatuses_ = internalGetAllocatedResourceStatuses();
          result.allocatedResourceStatuses_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.currentVolumeAttributesClassName_ = currentVolumeAttributesClassName_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.modifyVolumeStatus_ = modifyVolumeStatusBuilder_ == null
              ? modifyVolumeStatus_
              : modifyVolumeStatusBuilder_.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.V1.PersistentVolumeClaimStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus.getDefaultInstance()) return this;
        if (other.hasPhase()) {
          phase_ = other.phase_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.accessModes_.isEmpty()) {
          if (accessModes_.isEmpty()) {
            accessModes_ = other.accessModes_;
            bitField0_ |= 0x00000002;
          } else {
            ensureAccessModesIsMutable();
            accessModes_.addAll(other.accessModes_);
          }
          onChanged();
        }
        internalGetMutableCapacity().mergeFrom(
            other.internalGetCapacity());
        bitField0_ |= 0x00000004;
        if (conditionsBuilder_ == null) {
          if (!other.conditions_.isEmpty()) {
            if (conditions_.isEmpty()) {
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureConditionsIsMutable();
              conditions_.addAll(other.conditions_);
            }
            onChanged();
          }
        } else {
          if (!other.conditions_.isEmpty()) {
            if (conditionsBuilder_.isEmpty()) {
              conditionsBuilder_.dispose();
              conditionsBuilder_ = null;
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000008);
              conditionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getConditionsFieldBuilder() : null;
            } else {
              conditionsBuilder_.addAllMessages(other.conditions_);
            }
          }
        }
        internalGetMutableAllocatedResources().mergeFrom(
            other.internalGetAllocatedResources());
        bitField0_ |= 0x00000010;
        internalGetMutableAllocatedResourceStatuses().mergeFrom(
            other.internalGetAllocatedResourceStatuses());
        bitField0_ |= 0x00000020;
        if (other.hasCurrentVolumeAttributesClassName()) {
          currentVolumeAttributesClassName_ = other.currentVolumeAttributesClassName_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasModifyVolumeStatus()) {
          mergeModifyVolumeStatus(other.getModifyVolumeStatus());
        }
        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: {
                phase_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureAccessModesIsMutable();
                accessModes_.add(bs);
                break;
              } // case 18
              case 26: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                capacity__ = input.readMessage(
                    CapacityDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableCapacity().ensureBuilderMap().put(
                    capacity__.getKey(), capacity__.getValue());
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.parser(),
                        extensionRegistry);
                if (conditionsBuilder_ == null) {
                  ensureConditionsIsMutable();
                  conditions_.add(m);
                } else {
                  conditionsBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 42: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                allocatedResources__ = input.readMessage(
                    AllocatedResourcesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableAllocatedResources().ensureBuilderMap().put(
                    allocatedResources__.getKey(), allocatedResources__.getValue());
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 58: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                allocatedResourceStatuses__ = input.readMessage(
                    AllocatedResourceStatusesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableAllocatedResourceStatuses().getMutableMap().put(
                    allocatedResourceStatuses__.getKey(), allocatedResourceStatuses__.getValue());
                bitField0_ |= 0x00000020;
                break;
              } // case 58
              case 66: {
                currentVolumeAttributesClassName_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getModifyVolumeStatusFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                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 phase_ = "";
      /**
       * <pre>
       * phase represents the current phase of PersistentVolumeClaim.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return Whether the phase field is set.
       */
      public boolean hasPhase() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * phase represents the current phase of PersistentVolumeClaim.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return The phase.
       */
      public java.lang.String getPhase() {
        java.lang.Object ref = phase_;
        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()) {
            phase_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * phase represents the current phase of PersistentVolumeClaim.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return The bytes for phase.
       */
      public com.google.protobuf.ByteString
          getPhaseBytes() {
        java.lang.Object ref = phase_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          phase_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * phase represents the current phase of PersistentVolumeClaim.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @param value The phase to set.
       * @return This builder for chaining.
       */
      public Builder setPhase(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        phase_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * phase represents the current phase of PersistentVolumeClaim.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPhase() {
        phase_ = getDefaultInstance().getPhase();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * phase represents the current phase of PersistentVolumeClaim.
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @param value The bytes for phase to set.
       * @return This builder for chaining.
       */
      public Builder setPhaseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        phase_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList accessModes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureAccessModesIsMutable() {
        if (!accessModes_.isModifiable()) {
          accessModes_ = new com.google.protobuf.LazyStringArrayList(accessModes_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * accessModes contains the actual access modes the volume backing the PVC has.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 2;</code>
       * @return A list containing the accessModes.
       */
      public com.google.protobuf.ProtocolStringList
          getAccessModesList() {
        accessModes_.makeImmutable();
        return accessModes_;
      }
      /**
       * <pre>
       * accessModes contains the actual access modes the volume backing the PVC has.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 2;</code>
       * @return The count of accessModes.
       */
      public int getAccessModesCount() {
        return accessModes_.size();
      }
      /**
       * <pre>
       * accessModes contains the actual access modes the volume backing the PVC has.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 2;</code>
       * @param index The index of the element to return.
       * @return The accessModes at the given index.
       */
      public java.lang.String getAccessModes(int index) {
        return accessModes_.get(index);
      }
      /**
       * <pre>
       * accessModes contains the actual access modes the volume backing the PVC has.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the accessModes at the given index.
       */
      public com.google.protobuf.ByteString
          getAccessModesBytes(int index) {
        return accessModes_.getByteString(index);
      }
      /**
       * <pre>
       * accessModes contains the actual access modes the volume backing the PVC has.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 2;</code>
       * @param index The index to set the value at.
       * @param value The accessModes to set.
       * @return This builder for chaining.
       */
      public Builder setAccessModes(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAccessModesIsMutable();
        accessModes_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains the actual access modes the volume backing the PVC has.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 2;</code>
       * @param value The accessModes to add.
       * @return This builder for chaining.
       */
      public Builder addAccessModes(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAccessModesIsMutable();
        accessModes_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains the actual access modes the volume backing the PVC has.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 2;</code>
       * @param values The accessModes to add.
       * @return This builder for chaining.
       */
      public Builder addAllAccessModes(
          java.lang.Iterable<java.lang.String> values) {
        ensureAccessModesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, accessModes_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains the actual access modes the volume backing the PVC has.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccessModes() {
        accessModes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains the actual access modes the volume backing the PVC has.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 2;</code>
       * @param value The bytes of the accessModes to add.
       * @return This builder for chaining.
       */
      public Builder addAccessModesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAccessModesIsMutable();
        accessModes_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private static final class CapacityConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return CapacityDefaultEntryHolder.defaultEntry;
        }
      };
      private static final CapacityConverter capacityConverter = new CapacityConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> capacity_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetCapacity() {
        if (capacity_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(capacityConverter);
        }
        return capacity_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableCapacity() {
        if (capacity_ == null) {
          capacity_ = new com.google.protobuf.MapFieldBuilder<>(capacityConverter);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return capacity_;
      }
      public int getCapacityCount() {
        return internalGetCapacity().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * capacity represents the actual resources of the underlying volume.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
       */
      @java.lang.Override
      public boolean containsCapacity(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetCapacity().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getCapacityMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacity() {
        return getCapacityMap();
      }
      /**
       * <pre>
       * capacity represents the actual resources of the underlying volume.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacityMap() {
        return internalGetCapacity().getImmutableMap();
      }
      /**
       * <pre>
       * capacity represents the actual resources of the underlying volume.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getCapacityOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableCapacity().ensureBuilderMap();
        return map.containsKey(key) ? capacityConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * capacity represents the actual resources of the underlying volume.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getCapacityOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableCapacity().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return capacityConverter.build(map.get(key));
      }
      public Builder clearCapacity() {
        bitField0_ = (bitField0_ & ~0x00000004);
        internalGetMutableCapacity().clear();
        return this;
      }
      /**
       * <pre>
       * capacity represents the actual resources of the underlying volume.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
       */
      public Builder removeCapacity(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableCapacity().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableCapacity() {
        bitField0_ |= 0x00000004;
        return internalGetMutableCapacity().ensureMessageMap();
      }
      /**
       * <pre>
       * capacity represents the actual resources of the underlying volume.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
       */
      public Builder putCapacity(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableCapacity().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * capacity represents the actual resources of the underlying volume.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
       */
      public Builder putAllCapacity(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableCapacity().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * capacity represents the actual resources of the underlying volume.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 3;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putCapacityBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableCapacity().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private java.util.List<io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition> conditions_ =
        java.util.Collections.emptyList();
      private void ensureConditionsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          conditions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition>(conditions_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition, io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimConditionOrBuilder> conditionsBuilder_;

      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition> getConditionsList() {
        if (conditionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(conditions_);
        } else {
          return conditionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public int getConditionsCount() {
        if (conditionsBuilder_ == null) {
          return conditions_.size();
        } else {
          return conditionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition getConditions(int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);
        } else {
          return conditionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition 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 is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.set(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public Builder addConditions(io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition 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 is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public Builder addConditions(
          io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public Builder addAllConditions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition> values) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, conditions_);
          onChanged();
        } else {
          conditionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public Builder clearConditions() {
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          conditionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public Builder removeConditions(int index) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.remove(index);
          onChanged();
        } else {
          conditionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder getConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimConditionOrBuilder getConditionsOrBuilder(
          int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);  } else {
          return conditionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PersistentVolumeClaimConditionOrBuilder> 
           getConditionsOrBuilderList() {
        if (conditionsBuilder_ != null) {
          return conditionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(conditions_);
        }
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder addConditionsBuilder() {
        return getConditionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder addConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
       * resized then the Condition will be set to 'Resizing'.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolumeClaimCondition conditions = 4;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder> 
           getConditionsBuilderList() {
        return getConditionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition, io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimConditionOrBuilder> 
          getConditionsFieldBuilder() {
        if (conditionsBuilder_ == null) {
          conditionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition, io.kubernetes.client.proto.V1.PersistentVolumeClaimCondition.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimConditionOrBuilder>(
                  conditions_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          conditions_ = null;
        }
        return conditionsBuilder_;
      }

      private static final class AllocatedResourcesConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return AllocatedResourcesDefaultEntryHolder.defaultEntry;
        }
      };
      private static final AllocatedResourcesConverter allocatedResourcesConverter = new AllocatedResourcesConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> allocatedResources_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetAllocatedResources() {
        if (allocatedResources_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(allocatedResourcesConverter);
        }
        return allocatedResources_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableAllocatedResources() {
        if (allocatedResources_ == null) {
          allocatedResources_ = new com.google.protobuf.MapFieldBuilder<>(allocatedResourcesConverter);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return allocatedResources_;
      }
      public int getAllocatedResourcesCount() {
        return internalGetAllocatedResources().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * allocatedResources tracks the resources allocated to a PVC including its capacity.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * Capacity reported here may be larger than the actual capacity when a volume expansion operation
       * is requested.
       * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
       * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
       * If a volume expansion capacity request is lowered, allocatedResources is only
       * lowered if there are no expansion operations in progress and if the actual volume capacity
       * is equal or lower than the requested capacity.
       *
       * A controller that receives PVC update with previously unknown resourceName
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
       */
      @java.lang.Override
      public boolean containsAllocatedResources(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetAllocatedResources().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getAllocatedResourcesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatedResources() {
        return getAllocatedResourcesMap();
      }
      /**
       * <pre>
       * allocatedResources tracks the resources allocated to a PVC including its capacity.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * Capacity reported here may be larger than the actual capacity when a volume expansion operation
       * is requested.
       * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
       * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
       * If a volume expansion capacity request is lowered, allocatedResources is only
       * lowered if there are no expansion operations in progress and if the actual volume capacity
       * is equal or lower than the requested capacity.
       *
       * A controller that receives PVC update with previously unknown resourceName
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getAllocatedResourcesMap() {
        return internalGetAllocatedResources().getImmutableMap();
      }
      /**
       * <pre>
       * allocatedResources tracks the resources allocated to a PVC including its capacity.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * Capacity reported here may be larger than the actual capacity when a volume expansion operation
       * is requested.
       * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
       * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
       * If a volume expansion capacity request is lowered, allocatedResources is only
       * lowered if there are no expansion operations in progress and if the actual volume capacity
       * is equal or lower than the requested capacity.
       *
       * A controller that receives PVC update with previously unknown resourceName
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableAllocatedResources().ensureBuilderMap();
        return map.containsKey(key) ? allocatedResourcesConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * allocatedResources tracks the resources allocated to a PVC including its capacity.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * Capacity reported here may be larger than the actual capacity when a volume expansion operation
       * is requested.
       * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
       * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
       * If a volume expansion capacity request is lowered, allocatedResources is only
       * lowered if there are no expansion operations in progress and if the actual volume capacity
       * is equal or lower than the requested capacity.
       *
       * A controller that receives PVC update with previously unknown resourceName
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getAllocatedResourcesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableAllocatedResources().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return allocatedResourcesConverter.build(map.get(key));
      }
      public Builder clearAllocatedResources() {
        bitField0_ = (bitField0_ & ~0x00000010);
        internalGetMutableAllocatedResources().clear();
        return this;
      }
      /**
       * <pre>
       * allocatedResources tracks the resources allocated to a PVC including its capacity.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * Capacity reported here may be larger than the actual capacity when a volume expansion operation
       * is requested.
       * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
       * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
       * If a volume expansion capacity request is lowered, allocatedResources is only
       * lowered if there are no expansion operations in progress and if the actual volume capacity
       * is equal or lower than the requested capacity.
       *
       * A controller that receives PVC update with previously unknown resourceName
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
       */
      public Builder removeAllocatedResources(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableAllocatedResources().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableAllocatedResources() {
        bitField0_ |= 0x00000010;
        return internalGetMutableAllocatedResources().ensureMessageMap();
      }
      /**
       * <pre>
       * allocatedResources tracks the resources allocated to a PVC including its capacity.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * Capacity reported here may be larger than the actual capacity when a volume expansion operation
       * is requested.
       * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
       * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
       * If a volume expansion capacity request is lowered, allocatedResources is only
       * lowered if there are no expansion operations in progress and if the actual volume capacity
       * is equal or lower than the requested capacity.
       *
       * A controller that receives PVC update with previously unknown resourceName
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
       */
      public Builder putAllocatedResources(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableAllocatedResources().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * allocatedResources tracks the resources allocated to a PVC including its capacity.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * Capacity reported here may be larger than the actual capacity when a volume expansion operation
       * is requested.
       * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
       * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
       * If a volume expansion capacity request is lowered, allocatedResources is only
       * lowered if there are no expansion operations in progress and if the actual volume capacity
       * is equal or lower than the requested capacity.
       *
       * A controller that receives PVC update with previously unknown resourceName
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
       */
      public Builder putAllAllocatedResources(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableAllocatedResources().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * allocatedResources tracks the resources allocated to a PVC including its capacity.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * Capacity reported here may be larger than the actual capacity when a volume expansion operation
       * is requested.
       * For storage quota, the larger value from allocatedResources and PVC.spec.resources is used.
       * If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.
       * If a volume expansion capacity request is lowered, allocatedResources is only
       * lowered if there are no expansion operations in progress and if the actual volume capacity
       * is equal or lower than the requested capacity.
       *
       * A controller that receives PVC update with previously unknown resourceName
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; allocatedResources = 5;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putAllocatedResourcesBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableAllocatedResources().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> allocatedResourceStatuses_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetAllocatedResourceStatuses() {
        if (allocatedResourceStatuses_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              AllocatedResourceStatusesDefaultEntryHolder.defaultEntry);
        }
        return allocatedResourceStatuses_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableAllocatedResourceStatuses() {
        if (allocatedResourceStatuses_ == null) {
          allocatedResourceStatuses_ = com.google.protobuf.MapField.newMapField(
              AllocatedResourceStatusesDefaultEntryHolder.defaultEntry);
        }
        if (!allocatedResourceStatuses_.isMutable()) {
          allocatedResourceStatuses_ = allocatedResourceStatuses_.copy();
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return allocatedResourceStatuses_;
      }
      public int getAllocatedResourceStatusesCount() {
        return internalGetAllocatedResourceStatuses().getMap().size();
      }
      /**
       * <pre>
       * allocatedResourceStatuses stores status of resource being resized for the given PVC.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * ClaimResourceStatus can be in any of following states:
       * - ControllerResizeInProgress:
       * State set when resize controller starts resizing the volume in control-plane.
       * - ControllerResizeFailed:
       * State set when resize has failed in resize controller with a terminal error.
       * - NodeResizePending:
       * State set when resize controller has finished resizing the volume but further resizing of
       * volume is needed on the node.
       * - NodeResizeInProgress:
       * State set when kubelet starts resizing the volume.
       * - NodeResizeFailed:
       * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
       * NodeResizeFailed.
       * For example: if expanding a PVC for more capacity - this field can be one of the following states:
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
       * When this field is not set, it means that no resize operation is in progress for the given PVC.
       *
       * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +mapType=granular
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
       */
      @java.lang.Override
      public boolean containsAllocatedResourceStatuses(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetAllocatedResourceStatuses().getMap().containsKey(key);
      }
      /**
       * Use {@link #getAllocatedResourceStatusesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getAllocatedResourceStatuses() {
        return getAllocatedResourceStatusesMap();
      }
      /**
       * <pre>
       * allocatedResourceStatuses stores status of resource being resized for the given PVC.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * ClaimResourceStatus can be in any of following states:
       * - ControllerResizeInProgress:
       * State set when resize controller starts resizing the volume in control-plane.
       * - ControllerResizeFailed:
       * State set when resize has failed in resize controller with a terminal error.
       * - NodeResizePending:
       * State set when resize controller has finished resizing the volume but further resizing of
       * volume is needed on the node.
       * - NodeResizeInProgress:
       * State set when kubelet starts resizing the volume.
       * - NodeResizeFailed:
       * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
       * NodeResizeFailed.
       * For example: if expanding a PVC for more capacity - this field can be one of the following states:
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
       * When this field is not set, it means that no resize operation is in progress for the given PVC.
       *
       * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +mapType=granular
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getAllocatedResourceStatusesMap() {
        return internalGetAllocatedResourceStatuses().getMap();
      }
      /**
       * <pre>
       * allocatedResourceStatuses stores status of resource being resized for the given PVC.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * ClaimResourceStatus can be in any of following states:
       * - ControllerResizeInProgress:
       * State set when resize controller starts resizing the volume in control-plane.
       * - ControllerResizeFailed:
       * State set when resize has failed in resize controller with a terminal error.
       * - NodeResizePending:
       * State set when resize controller has finished resizing the volume but further resizing of
       * volume is needed on the node.
       * - NodeResizeInProgress:
       * State set when kubelet starts resizing the volume.
       * - NodeResizeFailed:
       * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
       * NodeResizeFailed.
       * For example: if expanding a PVC for more capacity - this field can be one of the following states:
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
       * When this field is not set, it means that no resize operation is in progress for the given PVC.
       *
       * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +mapType=granular
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getAllocatedResourceStatusesOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetAllocatedResourceStatuses().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * allocatedResourceStatuses stores status of resource being resized for the given PVC.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * ClaimResourceStatus can be in any of following states:
       * - ControllerResizeInProgress:
       * State set when resize controller starts resizing the volume in control-plane.
       * - ControllerResizeFailed:
       * State set when resize has failed in resize controller with a terminal error.
       * - NodeResizePending:
       * State set when resize controller has finished resizing the volume but further resizing of
       * volume is needed on the node.
       * - NodeResizeInProgress:
       * State set when kubelet starts resizing the volume.
       * - NodeResizeFailed:
       * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
       * NodeResizeFailed.
       * For example: if expanding a PVC for more capacity - this field can be one of the following states:
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
       * When this field is not set, it means that no resize operation is in progress for the given PVC.
       *
       * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +mapType=granular
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
       */
      @java.lang.Override
      public java.lang.String getAllocatedResourceStatusesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetAllocatedResourceStatuses().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearAllocatedResourceStatuses() {
        bitField0_ = (bitField0_ & ~0x00000020);
        internalGetMutableAllocatedResourceStatuses().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * allocatedResourceStatuses stores status of resource being resized for the given PVC.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * ClaimResourceStatus can be in any of following states:
       * - ControllerResizeInProgress:
       * State set when resize controller starts resizing the volume in control-plane.
       * - ControllerResizeFailed:
       * State set when resize has failed in resize controller with a terminal error.
       * - NodeResizePending:
       * State set when resize controller has finished resizing the volume but further resizing of
       * volume is needed on the node.
       * - NodeResizeInProgress:
       * State set when kubelet starts resizing the volume.
       * - NodeResizeFailed:
       * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
       * NodeResizeFailed.
       * For example: if expanding a PVC for more capacity - this field can be one of the following states:
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
       * When this field is not set, it means that no resize operation is in progress for the given PVC.
       *
       * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +mapType=granular
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
       */
      public Builder removeAllocatedResourceStatuses(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableAllocatedResourceStatuses().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableAllocatedResourceStatuses() {
        bitField0_ |= 0x00000020;
        return internalGetMutableAllocatedResourceStatuses().getMutableMap();
      }
      /**
       * <pre>
       * allocatedResourceStatuses stores status of resource being resized for the given PVC.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * ClaimResourceStatus can be in any of following states:
       * - ControllerResizeInProgress:
       * State set when resize controller starts resizing the volume in control-plane.
       * - ControllerResizeFailed:
       * State set when resize has failed in resize controller with a terminal error.
       * - NodeResizePending:
       * State set when resize controller has finished resizing the volume but further resizing of
       * volume is needed on the node.
       * - NodeResizeInProgress:
       * State set when kubelet starts resizing the volume.
       * - NodeResizeFailed:
       * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
       * NodeResizeFailed.
       * For example: if expanding a PVC for more capacity - this field can be one of the following states:
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
       * When this field is not set, it means that no resize operation is in progress for the given PVC.
       *
       * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +mapType=granular
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
       */
      public Builder putAllocatedResourceStatuses(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableAllocatedResourceStatuses().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <pre>
       * allocatedResourceStatuses stores status of resource being resized for the given PVC.
       * Key names follow standard Kubernetes label syntax. Valid values are either:
       * * Un-prefixed keys:
       * - storage - the capacity of the volume.
       * * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource"
       * Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered
       * reserved and hence may not be used.
       *
       * ClaimResourceStatus can be in any of following states:
       * - ControllerResizeInProgress:
       * State set when resize controller starts resizing the volume in control-plane.
       * - ControllerResizeFailed:
       * State set when resize has failed in resize controller with a terminal error.
       * - NodeResizePending:
       * State set when resize controller has finished resizing the volume but further resizing of
       * volume is needed on the node.
       * - NodeResizeInProgress:
       * State set when kubelet starts resizing the volume.
       * - NodeResizeFailed:
       * State set when resizing has failed in kubelet with a terminal error. Transient errors don't set
       * NodeResizeFailed.
       * For example: if expanding a PVC for more capacity - this field can be one of the following states:
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress"
       * - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed"
       * When this field is not set, it means that no resize operation is in progress for the given PVC.
       *
       * A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus
       * should ignore the update for the purpose it was designed. For example - a controller that
       * only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid
       * resources associated with PVC.
       *
       * This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.
       * +featureGate=RecoverVolumeExpansionFailure
       * +mapType=granular
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; allocatedResourceStatuses = 7;</code>
       */
      public Builder putAllAllocatedResourceStatuses(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableAllocatedResourceStatuses().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000020;
        return this;
      }

      private java.lang.Object currentVolumeAttributesClassName_ = "";
      /**
       * <pre>
       * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
       * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string currentVolumeAttributesClassName = 8;</code>
       * @return Whether the currentVolumeAttributesClassName field is set.
       */
      public boolean hasCurrentVolumeAttributesClassName() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
       * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string currentVolumeAttributesClassName = 8;</code>
       * @return The currentVolumeAttributesClassName.
       */
      public java.lang.String getCurrentVolumeAttributesClassName() {
        java.lang.Object ref = currentVolumeAttributesClassName_;
        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()) {
            currentVolumeAttributesClassName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
       * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string currentVolumeAttributesClassName = 8;</code>
       * @return The bytes for currentVolumeAttributesClassName.
       */
      public com.google.protobuf.ByteString
          getCurrentVolumeAttributesClassNameBytes() {
        java.lang.Object ref = currentVolumeAttributesClassName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          currentVolumeAttributesClassName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
       * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string currentVolumeAttributesClassName = 8;</code>
       * @param value The currentVolumeAttributesClassName to set.
       * @return This builder for chaining.
       */
      public Builder setCurrentVolumeAttributesClassName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        currentVolumeAttributesClassName_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
       * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string currentVolumeAttributesClassName = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearCurrentVolumeAttributesClassName() {
        currentVolumeAttributesClassName_ = getDefaultInstance().getCurrentVolumeAttributesClassName();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
       * When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string currentVolumeAttributesClassName = 8;</code>
       * @param value The bytes for currentVolumeAttributesClassName to set.
       * @return This builder for chaining.
       */
      public Builder setCurrentVolumeAttributesClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        currentVolumeAttributesClassName_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.ModifyVolumeStatus modifyVolumeStatus_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ModifyVolumeStatus, io.kubernetes.client.proto.V1.ModifyVolumeStatus.Builder, io.kubernetes.client.proto.V1.ModifyVolumeStatusOrBuilder> modifyVolumeStatusBuilder_;
      /**
       * <pre>
       * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       * When this is unset, there is no ModifyVolume operation being attempted.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
       * @return Whether the modifyVolumeStatus field is set.
       */
      public boolean hasModifyVolumeStatus() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       * When this is unset, there is no ModifyVolume operation being attempted.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
       * @return The modifyVolumeStatus.
       */
      public io.kubernetes.client.proto.V1.ModifyVolumeStatus getModifyVolumeStatus() {
        if (modifyVolumeStatusBuilder_ == null) {
          return modifyVolumeStatus_ == null ? io.kubernetes.client.proto.V1.ModifyVolumeStatus.getDefaultInstance() : modifyVolumeStatus_;
        } else {
          return modifyVolumeStatusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       * When this is unset, there is no ModifyVolume operation being attempted.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
       */
      public Builder setModifyVolumeStatus(io.kubernetes.client.proto.V1.ModifyVolumeStatus value) {
        if (modifyVolumeStatusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          modifyVolumeStatus_ = value;
        } else {
          modifyVolumeStatusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       * When this is unset, there is no ModifyVolume operation being attempted.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
       */
      public Builder setModifyVolumeStatus(
          io.kubernetes.client.proto.V1.ModifyVolumeStatus.Builder builderForValue) {
        if (modifyVolumeStatusBuilder_ == null) {
          modifyVolumeStatus_ = builderForValue.build();
        } else {
          modifyVolumeStatusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       * When this is unset, there is no ModifyVolume operation being attempted.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
       */
      public Builder mergeModifyVolumeStatus(io.kubernetes.client.proto.V1.ModifyVolumeStatus value) {
        if (modifyVolumeStatusBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
            modifyVolumeStatus_ != null &&
            modifyVolumeStatus_ != io.kubernetes.client.proto.V1.ModifyVolumeStatus.getDefaultInstance()) {
            getModifyVolumeStatusBuilder().mergeFrom(value);
          } else {
            modifyVolumeStatus_ = value;
          }
        } else {
          modifyVolumeStatusBuilder_.mergeFrom(value);
        }
        if (modifyVolumeStatus_ != null) {
          bitField0_ |= 0x00000080;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       * When this is unset, there is no ModifyVolume operation being attempted.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
       */
      public Builder clearModifyVolumeStatus() {
        bitField0_ = (bitField0_ & ~0x00000080);
        modifyVolumeStatus_ = null;
        if (modifyVolumeStatusBuilder_ != null) {
          modifyVolumeStatusBuilder_.dispose();
          modifyVolumeStatusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       * When this is unset, there is no ModifyVolume operation being attempted.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
       */
      public io.kubernetes.client.proto.V1.ModifyVolumeStatus.Builder getModifyVolumeStatusBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getModifyVolumeStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       * When this is unset, there is no ModifyVolume operation being attempted.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
       */
      public io.kubernetes.client.proto.V1.ModifyVolumeStatusOrBuilder getModifyVolumeStatusOrBuilder() {
        if (modifyVolumeStatusBuilder_ != null) {
          return modifyVolumeStatusBuilder_.getMessageOrBuilder();
        } else {
          return modifyVolumeStatus_ == null ?
              io.kubernetes.client.proto.V1.ModifyVolumeStatus.getDefaultInstance() : modifyVolumeStatus_;
        }
      }
      /**
       * <pre>
       * ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       * When this is unset, there is no ModifyVolume operation being attempted.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ModifyVolumeStatus modifyVolumeStatus = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ModifyVolumeStatus, io.kubernetes.client.proto.V1.ModifyVolumeStatus.Builder, io.kubernetes.client.proto.V1.ModifyVolumeStatusOrBuilder> 
          getModifyVolumeStatusFieldBuilder() {
        if (modifyVolumeStatusBuilder_ == null) {
          modifyVolumeStatusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ModifyVolumeStatus, io.kubernetes.client.proto.V1.ModifyVolumeStatus.Builder, io.kubernetes.client.proto.V1.ModifyVolumeStatusOrBuilder>(
                  getModifyVolumeStatus(),
                  getParentForChildren(),
                  isClean());
          modifyVolumeStatus_ = null;
        }
        return modifyVolumeStatusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeClaimStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeClaimStatus)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeClaimStatus>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeClaimStatus>() {
      @java.lang.Override
      public PersistentVolumeClaimStatus 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<PersistentVolumeClaimStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeClaimStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeClaimTemplateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeClaimTemplate)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * May contain labels and annotations that will be copied into the PVC
     * when creating it. No other fields are allowed and will be rejected during
     * validation.
     *
     * +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>
     * May contain labels and annotations that will be copied into the PVC
     * when creating it. No other fields are allowed and will be rejected during
     * validation.
     *
     * +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>
     * May contain labels and annotations that will be copied into the PVC
     * when creating it. No other fields are allowed and will be rejected during
     * validation.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * The specification for the PersistentVolumeClaim. The entire content is
     * copied unchanged into the PVC that gets created from this
     * template. The same fields as in a PersistentVolumeClaim
     * are also valid here.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * The specification for the PersistentVolumeClaim. The entire content is
     * copied unchanged into the PVC that gets created from this
     * template. The same fields as in a PersistentVolumeClaim
     * are also valid here.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec getSpec();
    /**
     * <pre>
     * The specification for the PersistentVolumeClaim. The entire content is
     * copied unchanged into the PVC that gets created from this
     * template. The same fields as in a PersistentVolumeClaim
     * are also valid here.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder getSpecOrBuilder();
  }
  /**
   * <pre>
   * PersistentVolumeClaimTemplate is used to produce
   * PersistentVolumeClaim objects as part of an EphemeralVolumeSource.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimTemplate}
   */
  public static final class PersistentVolumeClaimTemplate extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeClaimTemplate)
      PersistentVolumeClaimTemplateOrBuilder {
  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= */ "",
        PersistentVolumeClaimTemplate.class.getName());
    }
    // Use PersistentVolumeClaimTemplate.newBuilder() to construct.
    private PersistentVolumeClaimTemplate(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeClaimTemplate() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimTemplate_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimTemplate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ObjectMeta metadata_;
    /**
     * <pre>
     * May contain labels and annotations that will be copied into the PVC
     * when creating it. No other fields are allowed and will be rejected during
     * validation.
     *
     * +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>
     * May contain labels and annotations that will be copied into the PVC
     * when creating it. No other fields are allowed and will be rejected during
     * validation.
     *
     * +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>
     * May contain labels and annotations that will be copied into the PVC
     * when creating it. No other fields are allowed and will be rejected during
     * validation.
     *
     * +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.V1.PersistentVolumeClaimSpec spec_;
    /**
     * <pre>
     * The specification for the PersistentVolumeClaim. The entire content is
     * copied unchanged into the PVC that gets created from this
     * template. The same fields as in a PersistentVolumeClaim
     * are also valid here.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The specification for the PersistentVolumeClaim. The entire content is
     * copied unchanged into the PVC that gets created from this
     * template. The same fields as in a PersistentVolumeClaim
     * are also valid here.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * The specification for the PersistentVolumeClaim. The entire content is
     * copied unchanged into the PVC that gets created from this
     * template. The same fields as in a PersistentVolumeClaim
     * are also valid here.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance() : spec_;
    }

    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());
      }
      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());
      }
      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.V1.PersistentVolumeClaimTemplate)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate other = (io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate) 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 (!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();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate 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.V1.PersistentVolumeClaimTemplate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate 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.V1.PersistentVolumeClaimTemplate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate 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.V1.PersistentVolumeClaimTemplate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate 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.V1.PersistentVolumeClaimTemplate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate 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.V1.PersistentVolumeClaimTemplate 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>
     * PersistentVolumeClaimTemplate is used to produce
     * PersistentVolumeClaim objects as part of an EphemeralVolumeSource.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimTemplate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeClaimTemplate)
        io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimTemplate_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimTemplate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.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();
        }
      }
      @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;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimTemplate_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate build() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate result = new io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate 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;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasSpec()) {
          mergeSpec(other.getSpec());
        }
        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
              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>
       * May contain labels and annotations that will be copied into the PVC
       * when creating it. No other fields are allowed and will be rejected during
       * validation.
       *
       * +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>
       * May contain labels and annotations that will be copied into the PVC
       * when creating it. No other fields are allowed and will be rejected during
       * validation.
       *
       * +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>
       * May contain labels and annotations that will be copied into the PVC
       * when creating it. No other fields are allowed and will be rejected during
       * validation.
       *
       * +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>
       * May contain labels and annotations that will be copied into the PVC
       * when creating it. No other fields are allowed and will be rejected during
       * validation.
       *
       * +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>
       * May contain labels and annotations that will be copied into the PVC
       * when creating it. No other fields are allowed and will be rejected during
       * validation.
       *
       * +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>
       * May contain labels and annotations that will be copied into the PVC
       * when creating it. No other fields are allowed and will be rejected during
       * validation.
       *
       * +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>
       * May contain labels and annotations that will be copied into the PVC
       * when creating it. No other fields are allowed and will be rejected during
       * validation.
       *
       * +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>
       * May contain labels and annotations that will be copied into the PVC
       * when creating it. No other fields are allowed and will be rejected during
       * validation.
       *
       * +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>
       * May contain labels and annotations that will be copied into the PVC
       * when creating it. No other fields are allowed and will be rejected during
       * validation.
       *
       * +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.V1.PersistentVolumeClaimSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * The specification for the PersistentVolumeClaim. The entire content is
       * copied unchanged into the PVC that gets created from this
       * template. The same fields as in a PersistentVolumeClaim
       * are also valid here.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The specification for the PersistentVolumeClaim. The entire content is
       * copied unchanged into the PVC that gets created from this
       * template. The same fields as in a PersistentVolumeClaim
       * are also valid here.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The specification for the PersistentVolumeClaim. The entire content is
       * copied unchanged into the PVC that gets created from this
       * template. The same fields as in a PersistentVolumeClaim
       * are also valid here.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The specification for the PersistentVolumeClaim. The entire content is
       * copied unchanged into the PVC that gets created from this
       * template. The same fields as in a PersistentVolumeClaim
       * are also valid here.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The specification for the PersistentVolumeClaim. The entire content is
       * copied unchanged into the PVC that gets created from this
       * template. The same fields as in a PersistentVolumeClaim
       * are also valid here.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The specification for the PersistentVolumeClaim. The entire content is
       * copied unchanged into the PVC that gets created from this
       * template. The same fields as in a PersistentVolumeClaim
       * are also valid here.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The specification for the PersistentVolumeClaim. The entire content is
       * copied unchanged into the PVC that gets created from this
       * template. The same fields as in a PersistentVolumeClaim
       * are also valid here.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The specification for the PersistentVolumeClaim. The entire content is
       * copied unchanged into the PVC that gets created from this
       * template. The same fields as in a PersistentVolumeClaim
       * are also valid here.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * The specification for the PersistentVolumeClaim. The entire content is
       * copied unchanged into the PVC that gets created from this
       * template. The same fields as in a PersistentVolumeClaim
       * are also valid here.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpec.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeClaimTemplate)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeClaimTemplate)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeClaimTemplate>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeClaimTemplate>() {
      @java.lang.Override
      public PersistentVolumeClaimTemplate 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<PersistentVolumeClaimTemplate> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeClaimTemplate> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimTemplate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeClaimVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>optional string claimName = 1;</code>
     * @return Whether the claimName field is set.
     */
    boolean hasClaimName();
    /**
     * <pre>
     * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>optional string claimName = 1;</code>
     * @return The claimName.
     */
    java.lang.String getClaimName();
    /**
     * <pre>
     * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>optional string claimName = 1;</code>
     * @return The bytes for claimName.
     */
    com.google.protobuf.ByteString
        getClaimNameBytes();

    /**
     * <pre>
     * readOnly Will force the ReadOnly setting in VolumeMounts.
     * Default false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly Will force the ReadOnly setting in VolumeMounts.
     * Default false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace.
   * This volume finds the bound PV and mounts that volume for the pod. A
   * PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another
   * type of volume that is owned by someone else (the system).
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource}
   */
  public static final class PersistentVolumeClaimVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource)
      PersistentVolumeClaimVolumeSourceOrBuilder {
  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= */ "",
        PersistentVolumeClaimVolumeSource.class.getName());
    }
    // Use PersistentVolumeClaimVolumeSource.newBuilder() to construct.
    private PersistentVolumeClaimVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeClaimVolumeSource() {
      claimName_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int CLAIMNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object claimName_ = "";
    /**
     * <pre>
     * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>optional string claimName = 1;</code>
     * @return Whether the claimName field is set.
     */
    @java.lang.Override
    public boolean hasClaimName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>optional string claimName = 1;</code>
     * @return The claimName.
     */
    @java.lang.Override
    public java.lang.String getClaimName() {
      java.lang.Object ref = claimName_;
      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()) {
          claimName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * </pre>
     *
     * <code>optional string claimName = 1;</code>
     * @return The bytes for claimName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getClaimNameBytes() {
      java.lang.Object ref = claimName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        claimName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 2;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly Will force the ReadOnly setting in VolumeMounts.
     * Default false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * readOnly Will force the ReadOnly setting in VolumeMounts.
     * Default false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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, claimName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, readOnly_);
      }
      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, claimName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, readOnly_);
      }
      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.V1.PersistentVolumeClaimVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource other = (io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource) obj;

      if (hasClaimName() != other.hasClaimName()) return false;
      if (hasClaimName()) {
        if (!getClaimName()
            .equals(other.getClaimName())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (hasClaimName()) {
        hash = (37 * hash) + CLAIMNAME_FIELD_NUMBER;
        hash = (53 * hash) + getClaimName().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource 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.V1.PersistentVolumeClaimVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource 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.V1.PersistentVolumeClaimVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource 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.V1.PersistentVolumeClaimVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource 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.V1.PersistentVolumeClaimVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource 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.V1.PersistentVolumeClaimVolumeSource 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>
     * PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace.
     * This volume finds the bound PV and mounts that volume for the pod. A
     * PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another
     * type of volume that is owned by someone else (the system).
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource)
        io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.class, io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        claimName_ = "";
        readOnly_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeClaimVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource build() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource result = new io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.claimName_ = claimName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.PersistentVolumeClaimVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.getDefaultInstance()) return this;
        if (other.hasClaimName()) {
          claimName_ = other.claimName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        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: {
                claimName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              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 claimName_ = "";
      /**
       * <pre>
       * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>optional string claimName = 1;</code>
       * @return Whether the claimName field is set.
       */
      public boolean hasClaimName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>optional string claimName = 1;</code>
       * @return The claimName.
       */
      public java.lang.String getClaimName() {
        java.lang.Object ref = claimName_;
        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()) {
            claimName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>optional string claimName = 1;</code>
       * @return The bytes for claimName.
       */
      public com.google.protobuf.ByteString
          getClaimNameBytes() {
        java.lang.Object ref = claimName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          claimName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>optional string claimName = 1;</code>
       * @param value The claimName to set.
       * @return This builder for chaining.
       */
      public Builder setClaimName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        claimName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>optional string claimName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearClaimName() {
        claimName_ = getDefaultInstance().getClaimName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * </pre>
       *
       * <code>optional string claimName = 1;</code>
       * @param value The bytes for claimName to set.
       * @return This builder for chaining.
       */
      public Builder setClaimNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        claimName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly Will force the ReadOnly setting in VolumeMounts.
       * Default false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * readOnly Will force the ReadOnly setting in VolumeMounts.
       * Default false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly Will force the ReadOnly setting in VolumeMounts.
       * Default false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly Will force the ReadOnly setting in VolumeMounts.
       * Default false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000002);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeClaimVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeClaimVolumeSource>() {
      @java.lang.Override
      public PersistentVolumeClaimVolumeSource 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<PersistentVolumeClaimVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeClaimVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * items is a list of persistent volumes.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PersistentVolume> 
        getItemsList();
    /**
     * <pre>
     * items is a list of persistent volumes.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolume getItems(int index);
    /**
     * <pre>
     * items is a list of persistent volumes.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * items is a list of persistent volumes.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PersistentVolumeOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * items is a list of persistent volumes.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * PersistentVolumeList is a list of PersistentVolume items.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeList}
   */
  public static final class PersistentVolumeList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeList)
      PersistentVolumeListOrBuilder {
  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= */ "",
        PersistentVolumeList.class.getName());
    }
    // Use PersistentVolumeList.newBuilder() to construct.
    private PersistentVolumeList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeList.class, io.kubernetes.client.proto.V1.PersistentVolumeList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.PersistentVolume> items_;
    /**
     * <pre>
     * items is a list of persistent volumes.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PersistentVolume> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * items is a list of persistent volumes.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PersistentVolumeOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * items is a list of persistent volumes.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * items is a list of persistent volumes.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolume getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * items is a list of persistent volumes.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeOrBuilder 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.V1.PersistentVolumeList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeList other = (io.kubernetes.client.proto.V1.PersistentVolumeList) 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.V1.PersistentVolumeList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeList 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.V1.PersistentVolumeList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeList 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.V1.PersistentVolumeList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeList 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.V1.PersistentVolumeList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeList 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.V1.PersistentVolumeList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeList 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.V1.PersistentVolumeList 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>
     * PersistentVolumeList is a list of PersistentVolume items.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeList)
        io.kubernetes.client.proto.V1.PersistentVolumeListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeList.class, io.kubernetes.client.proto.V1.PersistentVolumeList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeList.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.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeList build() {
        io.kubernetes.client.proto.V1.PersistentVolumeList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeList buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeList result = new io.kubernetes.client.proto.V1.PersistentVolumeList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PersistentVolumeList 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.V1.PersistentVolumeList 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.V1.PersistentVolumeList) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeList other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeList.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.V1.PersistentVolume m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PersistentVolume.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.PersistentVolume> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PersistentVolume>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolume, io.kubernetes.client.proto.V1.PersistentVolume.Builder, io.kubernetes.client.proto.V1.PersistentVolumeOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PersistentVolume> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolume getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.PersistentVolume value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.PersistentVolume.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.PersistentVolume value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.PersistentVolume value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.PersistentVolume.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.PersistentVolume.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PersistentVolume> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolume.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PersistentVolumeOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolume.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PersistentVolume.getDefaultInstance());
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolume.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PersistentVolume.getDefaultInstance());
      }
      /**
       * <pre>
       * items is a list of persistent volumes.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PersistentVolume items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PersistentVolume.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolume, io.kubernetes.client.proto.V1.PersistentVolume.Builder, io.kubernetes.client.proto.V1.PersistentVolumeOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolume, io.kubernetes.client.proto.V1.PersistentVolume.Builder, io.kubernetes.client.proto.V1.PersistentVolumeOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeList)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeList();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeList>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeList>() {
      @java.lang.Override
      public PersistentVolumeList 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<PersistentVolumeList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
     * @return Whether the gcePersistentDisk field is set.
     */
    boolean hasGcePersistentDisk();
    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
     * @return The gcePersistentDisk.
     */
    io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource getGcePersistentDisk();
    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
     */
    io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder getGcePersistentDiskOrBuilder();

    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
     * @return Whether the awsElasticBlockStore field is set.
     */
    boolean hasAwsElasticBlockStore();
    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
     * @return The awsElasticBlockStore.
     */
    io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource getAwsElasticBlockStore();
    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
     */
    io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder getAwsElasticBlockStoreOrBuilder();

    /**
     * <pre>
     * hostPath represents a directory on the host.
     * Provisioned by a developer or tester.
     * This is useful for single-node development and testing only!
     * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
     * @return Whether the hostPath field is set.
     */
    boolean hasHostPath();
    /**
     * <pre>
     * hostPath represents a directory on the host.
     * Provisioned by a developer or tester.
     * This is useful for single-node development and testing only!
     * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
     * @return The hostPath.
     */
    io.kubernetes.client.proto.V1.HostPathVolumeSource getHostPath();
    /**
     * <pre>
     * hostPath represents a directory on the host.
     * Provisioned by a developer or tester.
     * This is useful for single-node development and testing only!
     * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
     */
    io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder getHostPathOrBuilder();

    /**
     * <pre>
     * glusterfs represents a Glusterfs volume that is attached to a host and
     * exposed to the pod. Provisioned by an admin.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
     * @return Whether the glusterfs field is set.
     */
    boolean hasGlusterfs();
    /**
     * <pre>
     * glusterfs represents a Glusterfs volume that is attached to a host and
     * exposed to the pod. Provisioned by an admin.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
     * @return The glusterfs.
     */
    io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource getGlusterfs();
    /**
     * <pre>
     * glusterfs represents a Glusterfs volume that is attached to a host and
     * exposed to the pod. Provisioned by an admin.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
     */
    io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSourceOrBuilder getGlusterfsOrBuilder();

    /**
     * <pre>
     * nfs represents an NFS mount on the host. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
     * @return Whether the nfs field is set.
     */
    boolean hasNfs();
    /**
     * <pre>
     * nfs represents an NFS mount on the host. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
     * @return The nfs.
     */
    io.kubernetes.client.proto.V1.NFSVolumeSource getNfs();
    /**
     * <pre>
     * nfs represents an NFS mount on the host. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
     */
    io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder getNfsOrBuilder();

    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
     * @return Whether the rbd field is set.
     */
    boolean hasRbd();
    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
     * @return The rbd.
     */
    io.kubernetes.client.proto.V1.RBDPersistentVolumeSource getRbd();
    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
     */
    io.kubernetes.client.proto.V1.RBDPersistentVolumeSourceOrBuilder getRbdOrBuilder();

    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
     * @return Whether the iscsi field is set.
     */
    boolean hasIscsi();
    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
     * @return The iscsi.
     */
    io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource getIscsi();
    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
     */
    io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSourceOrBuilder getIscsiOrBuilder();

    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
     * @return Whether the cinder field is set.
     */
    boolean hasCinder();
    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
     * @return The cinder.
     */
    io.kubernetes.client.proto.V1.CinderPersistentVolumeSource getCinder();
    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
     */
    io.kubernetes.client.proto.V1.CinderPersistentVolumeSourceOrBuilder getCinderOrBuilder();

    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
     * @return Whether the cephfs field is set.
     */
    boolean hasCephfs();
    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
     * @return The cephfs.
     */
    io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource getCephfs();
    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
     */
    io.kubernetes.client.proto.V1.CephFSPersistentVolumeSourceOrBuilder getCephfsOrBuilder();

    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
     * @return Whether the fc field is set.
     */
    boolean hasFc();
    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
     * @return The fc.
     */
    io.kubernetes.client.proto.V1.FCVolumeSource getFc();
    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
     */
    io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder getFcOrBuilder();

    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
     * @return Whether the flocker field is set.
     */
    boolean hasFlocker();
    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
     * @return The flocker.
     */
    io.kubernetes.client.proto.V1.FlockerVolumeSource getFlocker();
    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
     */
    io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder getFlockerOrBuilder();

    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
     * @return Whether the flexVolume field is set.
     */
    boolean hasFlexVolume();
    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
     * @return The flexVolume.
     */
    io.kubernetes.client.proto.V1.FlexPersistentVolumeSource getFlexVolume();
    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
     */
    io.kubernetes.client.proto.V1.FlexPersistentVolumeSourceOrBuilder getFlexVolumeOrBuilder();

    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
     * @return Whether the azureFile field is set.
     */
    boolean hasAzureFile();
    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
     * @return The azureFile.
     */
    io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource getAzureFile();
    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
     */
    io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSourceOrBuilder getAzureFileOrBuilder();

    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
     * @return Whether the vsphereVolume field is set.
     */
    boolean hasVsphereVolume();
    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
     * @return The vsphereVolume.
     */
    io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource getVsphereVolume();
    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
     */
    io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder getVsphereVolumeOrBuilder();

    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
     * @return Whether the quobyte field is set.
     */
    boolean hasQuobyte();
    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
     * @return The quobyte.
     */
    io.kubernetes.client.proto.V1.QuobyteVolumeSource getQuobyte();
    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
     */
    io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder getQuobyteOrBuilder();

    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
     * @return Whether the azureDisk field is set.
     */
    boolean hasAzureDisk();
    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
     * @return The azureDisk.
     */
    io.kubernetes.client.proto.V1.AzureDiskVolumeSource getAzureDisk();
    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
     */
    io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder getAzureDiskOrBuilder();

    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
     * @return Whether the photonPersistentDisk field is set.
     */
    boolean hasPhotonPersistentDisk();
    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
     * @return The photonPersistentDisk.
     */
    io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource getPhotonPersistentDisk();
    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
     */
    io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder getPhotonPersistentDiskOrBuilder();

    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
     * @return Whether the portworxVolume field is set.
     */
    boolean hasPortworxVolume();
    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
     * @return The portworxVolume.
     */
    io.kubernetes.client.proto.V1.PortworxVolumeSource getPortworxVolume();
    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
     */
    io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder getPortworxVolumeOrBuilder();

    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
     * @return Whether the scaleIO field is set.
     */
    boolean hasScaleIO();
    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
     * @return The scaleIO.
     */
    io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource getScaleIO();
    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
     */
    io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSourceOrBuilder getScaleIOOrBuilder();

    /**
     * <pre>
     * local represents directly-attached storage with node affinity
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
     * @return Whether the local field is set.
     */
    boolean hasLocal();
    /**
     * <pre>
     * local represents directly-attached storage with node affinity
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
     * @return The local.
     */
    io.kubernetes.client.proto.V1.LocalVolumeSource getLocal();
    /**
     * <pre>
     * local represents directly-attached storage with node affinity
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
     */
    io.kubernetes.client.proto.V1.LocalVolumeSourceOrBuilder getLocalOrBuilder();

    /**
     * <pre>
     * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
     * More info: https://examples.k8s.io/volumes/storageos/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
     * @return Whether the storageos field is set.
     */
    boolean hasStorageos();
    /**
     * <pre>
     * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
     * More info: https://examples.k8s.io/volumes/storageos/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
     * @return The storageos.
     */
    io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource getStorageos();
    /**
     * <pre>
     * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
     * More info: https://examples.k8s.io/volumes/storageos/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
     */
    io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSourceOrBuilder getStorageosOrBuilder();

    /**
     * <pre>
     * csi represents storage that is handled by an external CSI driver (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
     * @return Whether the csi field is set.
     */
    boolean hasCsi();
    /**
     * <pre>
     * csi represents storage that is handled by an external CSI driver (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
     * @return The csi.
     */
    io.kubernetes.client.proto.V1.CSIPersistentVolumeSource getCsi();
    /**
     * <pre>
     * csi represents storage that is handled by an external CSI driver (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
     */
    io.kubernetes.client.proto.V1.CSIPersistentVolumeSourceOrBuilder getCsiOrBuilder();
  }
  /**
   * <pre>
   * PersistentVolumeSource is similar to VolumeSource but meant for the
   * administrator who creates PVs. Exactly one of its members must be set.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeSource}
   */
  public static final class PersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeSource)
      PersistentVolumeSourceOrBuilder {
  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= */ "",
        PersistentVolumeSource.class.getName());
    }
    // Use PersistentVolumeSource.newBuilder() to construct.
    private PersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeSource() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeSource.class, io.kubernetes.client.proto.V1.PersistentVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int GCEPERSISTENTDISK_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource gcePersistentDisk_;
    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
     * @return Whether the gcePersistentDisk field is set.
     */
    @java.lang.Override
    public boolean hasGcePersistentDisk() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
     * @return The gcePersistentDisk.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource getGcePersistentDisk() {
      return gcePersistentDisk_ == null ? io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance() : gcePersistentDisk_;
    }
    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder getGcePersistentDiskOrBuilder() {
      return gcePersistentDisk_ == null ? io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance() : gcePersistentDisk_;
    }

    public static final int AWSELASTICBLOCKSTORE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore_;
    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
     * @return Whether the awsElasticBlockStore field is set.
     */
    @java.lang.Override
    public boolean hasAwsElasticBlockStore() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
     * @return The awsElasticBlockStore.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource getAwsElasticBlockStore() {
      return awsElasticBlockStore_ == null ? io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance() : awsElasticBlockStore_;
    }
    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder getAwsElasticBlockStoreOrBuilder() {
      return awsElasticBlockStore_ == null ? io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance() : awsElasticBlockStore_;
    }

    public static final int HOSTPATH_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.HostPathVolumeSource hostPath_;
    /**
     * <pre>
     * hostPath represents a directory on the host.
     * Provisioned by a developer or tester.
     * This is useful for single-node development and testing only!
     * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
     * @return Whether the hostPath field is set.
     */
    @java.lang.Override
    public boolean hasHostPath() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * hostPath represents a directory on the host.
     * Provisioned by a developer or tester.
     * This is useful for single-node development and testing only!
     * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
     * @return The hostPath.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostPathVolumeSource getHostPath() {
      return hostPath_ == null ? io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance() : hostPath_;
    }
    /**
     * <pre>
     * hostPath represents a directory on the host.
     * Provisioned by a developer or tester.
     * This is useful for single-node development and testing only!
     * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder getHostPathOrBuilder() {
      return hostPath_ == null ? io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance() : hostPath_;
    }

    public static final int GLUSTERFS_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource glusterfs_;
    /**
     * <pre>
     * glusterfs represents a Glusterfs volume that is attached to a host and
     * exposed to the pod. Provisioned by an admin.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
     * @return Whether the glusterfs field is set.
     */
    @java.lang.Override
    public boolean hasGlusterfs() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * glusterfs represents a Glusterfs volume that is attached to a host and
     * exposed to the pod. Provisioned by an admin.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
     * @return The glusterfs.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource getGlusterfs() {
      return glusterfs_ == null ? io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.getDefaultInstance() : glusterfs_;
    }
    /**
     * <pre>
     * glusterfs represents a Glusterfs volume that is attached to a host and
     * exposed to the pod. Provisioned by an admin.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSourceOrBuilder getGlusterfsOrBuilder() {
      return glusterfs_ == null ? io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.getDefaultInstance() : glusterfs_;
    }

    public static final int NFS_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1.NFSVolumeSource nfs_;
    /**
     * <pre>
     * nfs represents an NFS mount on the host. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
     * @return Whether the nfs field is set.
     */
    @java.lang.Override
    public boolean hasNfs() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * nfs represents an NFS mount on the host. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
     * @return The nfs.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NFSVolumeSource getNfs() {
      return nfs_ == null ? io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance() : nfs_;
    }
    /**
     * <pre>
     * nfs represents an NFS mount on the host. Provisioned by an admin.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder getNfsOrBuilder() {
      return nfs_ == null ? io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance() : nfs_;
    }

    public static final int RBD_FIELD_NUMBER = 6;
    private io.kubernetes.client.proto.V1.RBDPersistentVolumeSource rbd_;
    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
     * @return Whether the rbd field is set.
     */
    @java.lang.Override
    public boolean hasRbd() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
     * @return The rbd.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.RBDPersistentVolumeSource getRbd() {
      return rbd_ == null ? io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.getDefaultInstance() : rbd_;
    }
    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.RBDPersistentVolumeSourceOrBuilder getRbdOrBuilder() {
      return rbd_ == null ? io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.getDefaultInstance() : rbd_;
    }

    public static final int ISCSI_FIELD_NUMBER = 7;
    private io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource iscsi_;
    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
     * @return Whether the iscsi field is set.
     */
    @java.lang.Override
    public boolean hasIscsi() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
     * @return The iscsi.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource getIscsi() {
      return iscsi_ == null ? io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.getDefaultInstance() : iscsi_;
    }
    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSourceOrBuilder getIscsiOrBuilder() {
      return iscsi_ == null ? io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.getDefaultInstance() : iscsi_;
    }

    public static final int CINDER_FIELD_NUMBER = 8;
    private io.kubernetes.client.proto.V1.CinderPersistentVolumeSource cinder_;
    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
     * @return Whether the cinder field is set.
     */
    @java.lang.Override
    public boolean hasCinder() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
     * @return The cinder.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CinderPersistentVolumeSource getCinder() {
      return cinder_ == null ? io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.getDefaultInstance() : cinder_;
    }
    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CinderPersistentVolumeSourceOrBuilder getCinderOrBuilder() {
      return cinder_ == null ? io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.getDefaultInstance() : cinder_;
    }

    public static final int CEPHFS_FIELD_NUMBER = 9;
    private io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource cephfs_;
    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
     * @return Whether the cephfs field is set.
     */
    @java.lang.Override
    public boolean hasCephfs() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
     * @return The cephfs.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource getCephfs() {
      return cephfs_ == null ? io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.getDefaultInstance() : cephfs_;
    }
    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CephFSPersistentVolumeSourceOrBuilder getCephfsOrBuilder() {
      return cephfs_ == null ? io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.getDefaultInstance() : cephfs_;
    }

    public static final int FC_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.V1.FCVolumeSource fc_;
    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
     * @return Whether the fc field is set.
     */
    @java.lang.Override
    public boolean hasFc() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
     * @return The fc.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FCVolumeSource getFc() {
      return fc_ == null ? io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance() : fc_;
    }
    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder getFcOrBuilder() {
      return fc_ == null ? io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance() : fc_;
    }

    public static final int FLOCKER_FIELD_NUMBER = 11;
    private io.kubernetes.client.proto.V1.FlockerVolumeSource flocker_;
    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
     * @return Whether the flocker field is set.
     */
    @java.lang.Override
    public boolean hasFlocker() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
     * @return The flocker.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlockerVolumeSource getFlocker() {
      return flocker_ == null ? io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance() : flocker_;
    }
    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder getFlockerOrBuilder() {
      return flocker_ == null ? io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance() : flocker_;
    }

    public static final int FLEXVOLUME_FIELD_NUMBER = 12;
    private io.kubernetes.client.proto.V1.FlexPersistentVolumeSource flexVolume_;
    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
     * @return Whether the flexVolume field is set.
     */
    @java.lang.Override
    public boolean hasFlexVolume() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
     * @return The flexVolume.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlexPersistentVolumeSource getFlexVolume() {
      return flexVolume_ == null ? io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.getDefaultInstance() : flexVolume_;
    }
    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlexPersistentVolumeSourceOrBuilder getFlexVolumeOrBuilder() {
      return flexVolume_ == null ? io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.getDefaultInstance() : flexVolume_;
    }

    public static final int AZUREFILE_FIELD_NUMBER = 13;
    private io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource azureFile_;
    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
     * @return Whether the azureFile field is set.
     */
    @java.lang.Override
    public boolean hasAzureFile() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
     * @return The azureFile.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource getAzureFile() {
      return azureFile_ == null ? io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.getDefaultInstance() : azureFile_;
    }
    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSourceOrBuilder getAzureFileOrBuilder() {
      return azureFile_ == null ? io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.getDefaultInstance() : azureFile_;
    }

    public static final int VSPHEREVOLUME_FIELD_NUMBER = 14;
    private io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource vsphereVolume_;
    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
     * @return Whether the vsphereVolume field is set.
     */
    @java.lang.Override
    public boolean hasVsphereVolume() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
     * @return The vsphereVolume.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource getVsphereVolume() {
      return vsphereVolume_ == null ? io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance() : vsphereVolume_;
    }
    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder getVsphereVolumeOrBuilder() {
      return vsphereVolume_ == null ? io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance() : vsphereVolume_;
    }

    public static final int QUOBYTE_FIELD_NUMBER = 15;
    private io.kubernetes.client.proto.V1.QuobyteVolumeSource quobyte_;
    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
     * @return Whether the quobyte field is set.
     */
    @java.lang.Override
    public boolean hasQuobyte() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
     * @return The quobyte.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.QuobyteVolumeSource getQuobyte() {
      return quobyte_ == null ? io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance() : quobyte_;
    }
    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder getQuobyteOrBuilder() {
      return quobyte_ == null ? io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance() : quobyte_;
    }

    public static final int AZUREDISK_FIELD_NUMBER = 16;
    private io.kubernetes.client.proto.V1.AzureDiskVolumeSource azureDisk_;
    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
     * @return Whether the azureDisk field is set.
     */
    @java.lang.Override
    public boolean hasAzureDisk() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
     * @return The azureDisk.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AzureDiskVolumeSource getAzureDisk() {
      return azureDisk_ == null ? io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance() : azureDisk_;
    }
    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder getAzureDiskOrBuilder() {
      return azureDisk_ == null ? io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance() : azureDisk_;
    }

    public static final int PHOTONPERSISTENTDISK_FIELD_NUMBER = 17;
    private io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource photonPersistentDisk_;
    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
     * @return Whether the photonPersistentDisk field is set.
     */
    @java.lang.Override
    public boolean hasPhotonPersistentDisk() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
     * @return The photonPersistentDisk.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource getPhotonPersistentDisk() {
      return photonPersistentDisk_ == null ? io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance() : photonPersistentDisk_;
    }
    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder getPhotonPersistentDiskOrBuilder() {
      return photonPersistentDisk_ == null ? io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance() : photonPersistentDisk_;
    }

    public static final int PORTWORXVOLUME_FIELD_NUMBER = 18;
    private io.kubernetes.client.proto.V1.PortworxVolumeSource portworxVolume_;
    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
     * @return Whether the portworxVolume field is set.
     */
    @java.lang.Override
    public boolean hasPortworxVolume() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
     * @return The portworxVolume.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PortworxVolumeSource getPortworxVolume() {
      return portworxVolume_ == null ? io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance() : portworxVolume_;
    }
    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder getPortworxVolumeOrBuilder() {
      return portworxVolume_ == null ? io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance() : portworxVolume_;
    }

    public static final int SCALEIO_FIELD_NUMBER = 19;
    private io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource scaleIO_;
    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
     * @return Whether the scaleIO field is set.
     */
    @java.lang.Override
    public boolean hasScaleIO() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
     * @return The scaleIO.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource getScaleIO() {
      return scaleIO_ == null ? io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.getDefaultInstance() : scaleIO_;
    }
    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSourceOrBuilder getScaleIOOrBuilder() {
      return scaleIO_ == null ? io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.getDefaultInstance() : scaleIO_;
    }

    public static final int LOCAL_FIELD_NUMBER = 20;
    private io.kubernetes.client.proto.V1.LocalVolumeSource local_;
    /**
     * <pre>
     * local represents directly-attached storage with node affinity
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
     * @return Whether the local field is set.
     */
    @java.lang.Override
    public boolean hasLocal() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * <pre>
     * local represents directly-attached storage with node affinity
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
     * @return The local.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalVolumeSource getLocal() {
      return local_ == null ? io.kubernetes.client.proto.V1.LocalVolumeSource.getDefaultInstance() : local_;
    }
    /**
     * <pre>
     * local represents directly-attached storage with node affinity
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalVolumeSourceOrBuilder getLocalOrBuilder() {
      return local_ == null ? io.kubernetes.client.proto.V1.LocalVolumeSource.getDefaultInstance() : local_;
    }

    public static final int STORAGEOS_FIELD_NUMBER = 21;
    private io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource storageos_;
    /**
     * <pre>
     * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
     * More info: https://examples.k8s.io/volumes/storageos/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
     * @return Whether the storageos field is set.
     */
    @java.lang.Override
    public boolean hasStorageos() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * <pre>
     * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
     * More info: https://examples.k8s.io/volumes/storageos/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
     * @return The storageos.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource getStorageos() {
      return storageos_ == null ? io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.getDefaultInstance() : storageos_;
    }
    /**
     * <pre>
     * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
     * More info: https://examples.k8s.io/volumes/storageos/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSourceOrBuilder getStorageosOrBuilder() {
      return storageos_ == null ? io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.getDefaultInstance() : storageos_;
    }

    public static final int CSI_FIELD_NUMBER = 22;
    private io.kubernetes.client.proto.V1.CSIPersistentVolumeSource csi_;
    /**
     * <pre>
     * csi represents storage that is handled by an external CSI driver (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
     * @return Whether the csi field is set.
     */
    @java.lang.Override
    public boolean hasCsi() {
      return ((bitField0_ & 0x00200000) != 0);
    }
    /**
     * <pre>
     * csi represents storage that is handled by an external CSI driver (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
     * @return The csi.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CSIPersistentVolumeSource getCsi() {
      return csi_ == null ? io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.getDefaultInstance() : csi_;
    }
    /**
     * <pre>
     * csi represents storage that is handled by an external CSI driver (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CSIPersistentVolumeSourceOrBuilder getCsiOrBuilder() {
      return csi_ == null ? io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.getDefaultInstance() : csi_;
    }

    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, getGcePersistentDisk());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getAwsElasticBlockStore());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getHostPath());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getGlusterfs());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getNfs());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(6, getRbd());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(7, getIscsi());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(8, getCinder());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeMessage(9, getCephfs());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeMessage(10, getFc());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeMessage(11, getFlocker());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeMessage(12, getFlexVolume());
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeMessage(13, getAzureFile());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeMessage(14, getVsphereVolume());
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        output.writeMessage(15, getQuobyte());
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        output.writeMessage(16, getAzureDisk());
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        output.writeMessage(17, getPhotonPersistentDisk());
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        output.writeMessage(18, getPortworxVolume());
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        output.writeMessage(19, getScaleIO());
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        output.writeMessage(20, getLocal());
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        output.writeMessage(21, getStorageos());
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        output.writeMessage(22, getCsi());
      }
      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, getGcePersistentDisk());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getAwsElasticBlockStore());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getHostPath());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getGlusterfs());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getNfs());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getRbd());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getIscsi());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getCinder());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getCephfs());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getFc());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getFlocker());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getFlexVolume());
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, getAzureFile());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, getVsphereVolume());
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, getQuobyte());
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, getAzureDisk());
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(17, getPhotonPersistentDisk());
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, getPortworxVolume());
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(19, getScaleIO());
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(20, getLocal());
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(21, getStorageos());
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(22, getCsi());
      }
      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.V1.PersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeSource other = (io.kubernetes.client.proto.V1.PersistentVolumeSource) obj;

      if (hasGcePersistentDisk() != other.hasGcePersistentDisk()) return false;
      if (hasGcePersistentDisk()) {
        if (!getGcePersistentDisk()
            .equals(other.getGcePersistentDisk())) return false;
      }
      if (hasAwsElasticBlockStore() != other.hasAwsElasticBlockStore()) return false;
      if (hasAwsElasticBlockStore()) {
        if (!getAwsElasticBlockStore()
            .equals(other.getAwsElasticBlockStore())) return false;
      }
      if (hasHostPath() != other.hasHostPath()) return false;
      if (hasHostPath()) {
        if (!getHostPath()
            .equals(other.getHostPath())) return false;
      }
      if (hasGlusterfs() != other.hasGlusterfs()) return false;
      if (hasGlusterfs()) {
        if (!getGlusterfs()
            .equals(other.getGlusterfs())) return false;
      }
      if (hasNfs() != other.hasNfs()) return false;
      if (hasNfs()) {
        if (!getNfs()
            .equals(other.getNfs())) return false;
      }
      if (hasRbd() != other.hasRbd()) return false;
      if (hasRbd()) {
        if (!getRbd()
            .equals(other.getRbd())) return false;
      }
      if (hasIscsi() != other.hasIscsi()) return false;
      if (hasIscsi()) {
        if (!getIscsi()
            .equals(other.getIscsi())) return false;
      }
      if (hasCinder() != other.hasCinder()) return false;
      if (hasCinder()) {
        if (!getCinder()
            .equals(other.getCinder())) return false;
      }
      if (hasCephfs() != other.hasCephfs()) return false;
      if (hasCephfs()) {
        if (!getCephfs()
            .equals(other.getCephfs())) return false;
      }
      if (hasFc() != other.hasFc()) return false;
      if (hasFc()) {
        if (!getFc()
            .equals(other.getFc())) return false;
      }
      if (hasFlocker() != other.hasFlocker()) return false;
      if (hasFlocker()) {
        if (!getFlocker()
            .equals(other.getFlocker())) return false;
      }
      if (hasFlexVolume() != other.hasFlexVolume()) return false;
      if (hasFlexVolume()) {
        if (!getFlexVolume()
            .equals(other.getFlexVolume())) return false;
      }
      if (hasAzureFile() != other.hasAzureFile()) return false;
      if (hasAzureFile()) {
        if (!getAzureFile()
            .equals(other.getAzureFile())) return false;
      }
      if (hasVsphereVolume() != other.hasVsphereVolume()) return false;
      if (hasVsphereVolume()) {
        if (!getVsphereVolume()
            .equals(other.getVsphereVolume())) return false;
      }
      if (hasQuobyte() != other.hasQuobyte()) return false;
      if (hasQuobyte()) {
        if (!getQuobyte()
            .equals(other.getQuobyte())) return false;
      }
      if (hasAzureDisk() != other.hasAzureDisk()) return false;
      if (hasAzureDisk()) {
        if (!getAzureDisk()
            .equals(other.getAzureDisk())) return false;
      }
      if (hasPhotonPersistentDisk() != other.hasPhotonPersistentDisk()) return false;
      if (hasPhotonPersistentDisk()) {
        if (!getPhotonPersistentDisk()
            .equals(other.getPhotonPersistentDisk())) return false;
      }
      if (hasPortworxVolume() != other.hasPortworxVolume()) return false;
      if (hasPortworxVolume()) {
        if (!getPortworxVolume()
            .equals(other.getPortworxVolume())) return false;
      }
      if (hasScaleIO() != other.hasScaleIO()) return false;
      if (hasScaleIO()) {
        if (!getScaleIO()
            .equals(other.getScaleIO())) return false;
      }
      if (hasLocal() != other.hasLocal()) return false;
      if (hasLocal()) {
        if (!getLocal()
            .equals(other.getLocal())) return false;
      }
      if (hasStorageos() != other.hasStorageos()) return false;
      if (hasStorageos()) {
        if (!getStorageos()
            .equals(other.getStorageos())) return false;
      }
      if (hasCsi() != other.hasCsi()) return false;
      if (hasCsi()) {
        if (!getCsi()
            .equals(other.getCsi())) 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 (hasGcePersistentDisk()) {
        hash = (37 * hash) + GCEPERSISTENTDISK_FIELD_NUMBER;
        hash = (53 * hash) + getGcePersistentDisk().hashCode();
      }
      if (hasAwsElasticBlockStore()) {
        hash = (37 * hash) + AWSELASTICBLOCKSTORE_FIELD_NUMBER;
        hash = (53 * hash) + getAwsElasticBlockStore().hashCode();
      }
      if (hasHostPath()) {
        hash = (37 * hash) + HOSTPATH_FIELD_NUMBER;
        hash = (53 * hash) + getHostPath().hashCode();
      }
      if (hasGlusterfs()) {
        hash = (37 * hash) + GLUSTERFS_FIELD_NUMBER;
        hash = (53 * hash) + getGlusterfs().hashCode();
      }
      if (hasNfs()) {
        hash = (37 * hash) + NFS_FIELD_NUMBER;
        hash = (53 * hash) + getNfs().hashCode();
      }
      if (hasRbd()) {
        hash = (37 * hash) + RBD_FIELD_NUMBER;
        hash = (53 * hash) + getRbd().hashCode();
      }
      if (hasIscsi()) {
        hash = (37 * hash) + ISCSI_FIELD_NUMBER;
        hash = (53 * hash) + getIscsi().hashCode();
      }
      if (hasCinder()) {
        hash = (37 * hash) + CINDER_FIELD_NUMBER;
        hash = (53 * hash) + getCinder().hashCode();
      }
      if (hasCephfs()) {
        hash = (37 * hash) + CEPHFS_FIELD_NUMBER;
        hash = (53 * hash) + getCephfs().hashCode();
      }
      if (hasFc()) {
        hash = (37 * hash) + FC_FIELD_NUMBER;
        hash = (53 * hash) + getFc().hashCode();
      }
      if (hasFlocker()) {
        hash = (37 * hash) + FLOCKER_FIELD_NUMBER;
        hash = (53 * hash) + getFlocker().hashCode();
      }
      if (hasFlexVolume()) {
        hash = (37 * hash) + FLEXVOLUME_FIELD_NUMBER;
        hash = (53 * hash) + getFlexVolume().hashCode();
      }
      if (hasAzureFile()) {
        hash = (37 * hash) + AZUREFILE_FIELD_NUMBER;
        hash = (53 * hash) + getAzureFile().hashCode();
      }
      if (hasVsphereVolume()) {
        hash = (37 * hash) + VSPHEREVOLUME_FIELD_NUMBER;
        hash = (53 * hash) + getVsphereVolume().hashCode();
      }
      if (hasQuobyte()) {
        hash = (37 * hash) + QUOBYTE_FIELD_NUMBER;
        hash = (53 * hash) + getQuobyte().hashCode();
      }
      if (hasAzureDisk()) {
        hash = (37 * hash) + AZUREDISK_FIELD_NUMBER;
        hash = (53 * hash) + getAzureDisk().hashCode();
      }
      if (hasPhotonPersistentDisk()) {
        hash = (37 * hash) + PHOTONPERSISTENTDISK_FIELD_NUMBER;
        hash = (53 * hash) + getPhotonPersistentDisk().hashCode();
      }
      if (hasPortworxVolume()) {
        hash = (37 * hash) + PORTWORXVOLUME_FIELD_NUMBER;
        hash = (53 * hash) + getPortworxVolume().hashCode();
      }
      if (hasScaleIO()) {
        hash = (37 * hash) + SCALEIO_FIELD_NUMBER;
        hash = (53 * hash) + getScaleIO().hashCode();
      }
      if (hasLocal()) {
        hash = (37 * hash) + LOCAL_FIELD_NUMBER;
        hash = (53 * hash) + getLocal().hashCode();
      }
      if (hasStorageos()) {
        hash = (37 * hash) + STORAGEOS_FIELD_NUMBER;
        hash = (53 * hash) + getStorageos().hashCode();
      }
      if (hasCsi()) {
        hash = (37 * hash) + CSI_FIELD_NUMBER;
        hash = (53 * hash) + getCsi().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSource 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.V1.PersistentVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSource 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.V1.PersistentVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSource 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.V1.PersistentVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeSource 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.V1.PersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSource 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.V1.PersistentVolumeSource 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>
     * PersistentVolumeSource is similar to VolumeSource but meant for the
     * administrator who creates PVs. Exactly one of its members must be set.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeSource)
        io.kubernetes.client.proto.V1.PersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeSource.class, io.kubernetes.client.proto.V1.PersistentVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getGcePersistentDiskFieldBuilder();
          getAwsElasticBlockStoreFieldBuilder();
          getHostPathFieldBuilder();
          getGlusterfsFieldBuilder();
          getNfsFieldBuilder();
          getRbdFieldBuilder();
          getIscsiFieldBuilder();
          getCinderFieldBuilder();
          getCephfsFieldBuilder();
          getFcFieldBuilder();
          getFlockerFieldBuilder();
          getFlexVolumeFieldBuilder();
          getAzureFileFieldBuilder();
          getVsphereVolumeFieldBuilder();
          getQuobyteFieldBuilder();
          getAzureDiskFieldBuilder();
          getPhotonPersistentDiskFieldBuilder();
          getPortworxVolumeFieldBuilder();
          getScaleIOFieldBuilder();
          getLocalFieldBuilder();
          getStorageosFieldBuilder();
          getCsiFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        gcePersistentDisk_ = null;
        if (gcePersistentDiskBuilder_ != null) {
          gcePersistentDiskBuilder_.dispose();
          gcePersistentDiskBuilder_ = null;
        }
        awsElasticBlockStore_ = null;
        if (awsElasticBlockStoreBuilder_ != null) {
          awsElasticBlockStoreBuilder_.dispose();
          awsElasticBlockStoreBuilder_ = null;
        }
        hostPath_ = null;
        if (hostPathBuilder_ != null) {
          hostPathBuilder_.dispose();
          hostPathBuilder_ = null;
        }
        glusterfs_ = null;
        if (glusterfsBuilder_ != null) {
          glusterfsBuilder_.dispose();
          glusterfsBuilder_ = null;
        }
        nfs_ = null;
        if (nfsBuilder_ != null) {
          nfsBuilder_.dispose();
          nfsBuilder_ = null;
        }
        rbd_ = null;
        if (rbdBuilder_ != null) {
          rbdBuilder_.dispose();
          rbdBuilder_ = null;
        }
        iscsi_ = null;
        if (iscsiBuilder_ != null) {
          iscsiBuilder_.dispose();
          iscsiBuilder_ = null;
        }
        cinder_ = null;
        if (cinderBuilder_ != null) {
          cinderBuilder_.dispose();
          cinderBuilder_ = null;
        }
        cephfs_ = null;
        if (cephfsBuilder_ != null) {
          cephfsBuilder_.dispose();
          cephfsBuilder_ = null;
        }
        fc_ = null;
        if (fcBuilder_ != null) {
          fcBuilder_.dispose();
          fcBuilder_ = null;
        }
        flocker_ = null;
        if (flockerBuilder_ != null) {
          flockerBuilder_.dispose();
          flockerBuilder_ = null;
        }
        flexVolume_ = null;
        if (flexVolumeBuilder_ != null) {
          flexVolumeBuilder_.dispose();
          flexVolumeBuilder_ = null;
        }
        azureFile_ = null;
        if (azureFileBuilder_ != null) {
          azureFileBuilder_.dispose();
          azureFileBuilder_ = null;
        }
        vsphereVolume_ = null;
        if (vsphereVolumeBuilder_ != null) {
          vsphereVolumeBuilder_.dispose();
          vsphereVolumeBuilder_ = null;
        }
        quobyte_ = null;
        if (quobyteBuilder_ != null) {
          quobyteBuilder_.dispose();
          quobyteBuilder_ = null;
        }
        azureDisk_ = null;
        if (azureDiskBuilder_ != null) {
          azureDiskBuilder_.dispose();
          azureDiskBuilder_ = null;
        }
        photonPersistentDisk_ = null;
        if (photonPersistentDiskBuilder_ != null) {
          photonPersistentDiskBuilder_.dispose();
          photonPersistentDiskBuilder_ = null;
        }
        portworxVolume_ = null;
        if (portworxVolumeBuilder_ != null) {
          portworxVolumeBuilder_.dispose();
          portworxVolumeBuilder_ = null;
        }
        scaleIO_ = null;
        if (scaleIOBuilder_ != null) {
          scaleIOBuilder_.dispose();
          scaleIOBuilder_ = null;
        }
        local_ = null;
        if (localBuilder_ != null) {
          localBuilder_.dispose();
          localBuilder_ = null;
        }
        storageos_ = null;
        if (storageosBuilder_ != null) {
          storageosBuilder_.dispose();
          storageosBuilder_ = null;
        }
        csi_ = null;
        if (csiBuilder_ != null) {
          csiBuilder_.dispose();
          csiBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeSource build() {
        io.kubernetes.client.proto.V1.PersistentVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeSource result = new io.kubernetes.client.proto.V1.PersistentVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.gcePersistentDisk_ = gcePersistentDiskBuilder_ == null
              ? gcePersistentDisk_
              : gcePersistentDiskBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.awsElasticBlockStore_ = awsElasticBlockStoreBuilder_ == null
              ? awsElasticBlockStore_
              : awsElasticBlockStoreBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.hostPath_ = hostPathBuilder_ == null
              ? hostPath_
              : hostPathBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.glusterfs_ = glusterfsBuilder_ == null
              ? glusterfs_
              : glusterfsBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.nfs_ = nfsBuilder_ == null
              ? nfs_
              : nfsBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.rbd_ = rbdBuilder_ == null
              ? rbd_
              : rbdBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.iscsi_ = iscsiBuilder_ == null
              ? iscsi_
              : iscsiBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.cinder_ = cinderBuilder_ == null
              ? cinder_
              : cinderBuilder_.build();
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.cephfs_ = cephfsBuilder_ == null
              ? cephfs_
              : cephfsBuilder_.build();
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.fc_ = fcBuilder_ == null
              ? fc_
              : fcBuilder_.build();
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.flocker_ = flockerBuilder_ == null
              ? flocker_
              : flockerBuilder_.build();
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.flexVolume_ = flexVolumeBuilder_ == null
              ? flexVolume_
              : flexVolumeBuilder_.build();
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.azureFile_ = azureFileBuilder_ == null
              ? azureFile_
              : azureFileBuilder_.build();
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.vsphereVolume_ = vsphereVolumeBuilder_ == null
              ? vsphereVolume_
              : vsphereVolumeBuilder_.build();
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.quobyte_ = quobyteBuilder_ == null
              ? quobyte_
              : quobyteBuilder_.build();
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.azureDisk_ = azureDiskBuilder_ == null
              ? azureDisk_
              : azureDiskBuilder_.build();
          to_bitField0_ |= 0x00008000;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.photonPersistentDisk_ = photonPersistentDiskBuilder_ == null
              ? photonPersistentDisk_
              : photonPersistentDiskBuilder_.build();
          to_bitField0_ |= 0x00010000;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.portworxVolume_ = portworxVolumeBuilder_ == null
              ? portworxVolume_
              : portworxVolumeBuilder_.build();
          to_bitField0_ |= 0x00020000;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.scaleIO_ = scaleIOBuilder_ == null
              ? scaleIO_
              : scaleIOBuilder_.build();
          to_bitField0_ |= 0x00040000;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.local_ = localBuilder_ == null
              ? local_
              : localBuilder_.build();
          to_bitField0_ |= 0x00080000;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.storageos_ = storageosBuilder_ == null
              ? storageos_
              : storageosBuilder_.build();
          to_bitField0_ |= 0x00100000;
        }
        if (((from_bitField0_ & 0x00200000) != 0)) {
          result.csi_ = csiBuilder_ == null
              ? csi_
              : csiBuilder_.build();
          to_bitField0_ |= 0x00200000;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PersistentVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeSource.getDefaultInstance()) return this;
        if (other.hasGcePersistentDisk()) {
          mergeGcePersistentDisk(other.getGcePersistentDisk());
        }
        if (other.hasAwsElasticBlockStore()) {
          mergeAwsElasticBlockStore(other.getAwsElasticBlockStore());
        }
        if (other.hasHostPath()) {
          mergeHostPath(other.getHostPath());
        }
        if (other.hasGlusterfs()) {
          mergeGlusterfs(other.getGlusterfs());
        }
        if (other.hasNfs()) {
          mergeNfs(other.getNfs());
        }
        if (other.hasRbd()) {
          mergeRbd(other.getRbd());
        }
        if (other.hasIscsi()) {
          mergeIscsi(other.getIscsi());
        }
        if (other.hasCinder()) {
          mergeCinder(other.getCinder());
        }
        if (other.hasCephfs()) {
          mergeCephfs(other.getCephfs());
        }
        if (other.hasFc()) {
          mergeFc(other.getFc());
        }
        if (other.hasFlocker()) {
          mergeFlocker(other.getFlocker());
        }
        if (other.hasFlexVolume()) {
          mergeFlexVolume(other.getFlexVolume());
        }
        if (other.hasAzureFile()) {
          mergeAzureFile(other.getAzureFile());
        }
        if (other.hasVsphereVolume()) {
          mergeVsphereVolume(other.getVsphereVolume());
        }
        if (other.hasQuobyte()) {
          mergeQuobyte(other.getQuobyte());
        }
        if (other.hasAzureDisk()) {
          mergeAzureDisk(other.getAzureDisk());
        }
        if (other.hasPhotonPersistentDisk()) {
          mergePhotonPersistentDisk(other.getPhotonPersistentDisk());
        }
        if (other.hasPortworxVolume()) {
          mergePortworxVolume(other.getPortworxVolume());
        }
        if (other.hasScaleIO()) {
          mergeScaleIO(other.getScaleIO());
        }
        if (other.hasLocal()) {
          mergeLocal(other.getLocal());
        }
        if (other.hasStorageos()) {
          mergeStorageos(other.getStorageos());
        }
        if (other.hasCsi()) {
          mergeCsi(other.getCsi());
        }
        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(
                    getGcePersistentDiskFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getAwsElasticBlockStoreFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getHostPathFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getGlusterfsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getNfsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getRbdFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getIscsiFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getCinderFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getCephfsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getFcFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getFlockerFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getFlexVolumeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getAzureFileFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00001000;
                break;
              } // case 106
              case 114: {
                input.readMessage(
                    getVsphereVolumeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00002000;
                break;
              } // case 114
              case 122: {
                input.readMessage(
                    getQuobyteFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00004000;
                break;
              } // case 122
              case 130: {
                input.readMessage(
                    getAzureDiskFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00008000;
                break;
              } // case 130
              case 138: {
                input.readMessage(
                    getPhotonPersistentDiskFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00010000;
                break;
              } // case 138
              case 146: {
                input.readMessage(
                    getPortworxVolumeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00020000;
                break;
              } // case 146
              case 154: {
                input.readMessage(
                    getScaleIOFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00040000;
                break;
              } // case 154
              case 162: {
                input.readMessage(
                    getLocalFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00080000;
                break;
              } // case 162
              case 170: {
                input.readMessage(
                    getStorageosFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00100000;
                break;
              } // case 170
              case 178: {
                input.readMessage(
                    getCsiFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00200000;
                break;
              } // case 178
              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.V1.GCEPersistentDiskVolumeSource gcePersistentDisk_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder> gcePersistentDiskBuilder_;
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
       * @return Whether the gcePersistentDisk field is set.
       */
      public boolean hasGcePersistentDisk() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
       * @return The gcePersistentDisk.
       */
      public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource getGcePersistentDisk() {
        if (gcePersistentDiskBuilder_ == null) {
          return gcePersistentDisk_ == null ? io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance() : gcePersistentDisk_;
        } else {
          return gcePersistentDiskBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
       */
      public Builder setGcePersistentDisk(io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource value) {
        if (gcePersistentDiskBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          gcePersistentDisk_ = value;
        } else {
          gcePersistentDiskBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
       */
      public Builder setGcePersistentDisk(
          io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder builderForValue) {
        if (gcePersistentDiskBuilder_ == null) {
          gcePersistentDisk_ = builderForValue.build();
        } else {
          gcePersistentDiskBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
       */
      public Builder mergeGcePersistentDisk(io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource value) {
        if (gcePersistentDiskBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            gcePersistentDisk_ != null &&
            gcePersistentDisk_ != io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance()) {
            getGcePersistentDiskBuilder().mergeFrom(value);
          } else {
            gcePersistentDisk_ = value;
          }
        } else {
          gcePersistentDiskBuilder_.mergeFrom(value);
        }
        if (gcePersistentDisk_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
       */
      public Builder clearGcePersistentDisk() {
        bitField0_ = (bitField0_ & ~0x00000001);
        gcePersistentDisk_ = null;
        if (gcePersistentDiskBuilder_ != null) {
          gcePersistentDiskBuilder_.dispose();
          gcePersistentDiskBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
       */
      public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder getGcePersistentDiskBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getGcePersistentDiskFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
       */
      public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder getGcePersistentDiskOrBuilder() {
        if (gcePersistentDiskBuilder_ != null) {
          return gcePersistentDiskBuilder_.getMessageOrBuilder();
        } else {
          return gcePersistentDisk_ == null ?
              io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance() : gcePersistentDisk_;
        }
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder> 
          getGcePersistentDiskFieldBuilder() {
        if (gcePersistentDiskBuilder_ == null) {
          gcePersistentDiskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder>(
                  getGcePersistentDisk(),
                  getParentForChildren(),
                  isClean());
          gcePersistentDisk_ = null;
        }
        return gcePersistentDiskBuilder_;
      }

      private io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.Builder, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder> awsElasticBlockStoreBuilder_;
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
       * @return Whether the awsElasticBlockStore field is set.
       */
      public boolean hasAwsElasticBlockStore() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
       * @return The awsElasticBlockStore.
       */
      public io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource getAwsElasticBlockStore() {
        if (awsElasticBlockStoreBuilder_ == null) {
          return awsElasticBlockStore_ == null ? io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance() : awsElasticBlockStore_;
        } else {
          return awsElasticBlockStoreBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
       */
      public Builder setAwsElasticBlockStore(io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource value) {
        if (awsElasticBlockStoreBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          awsElasticBlockStore_ = value;
        } else {
          awsElasticBlockStoreBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
       */
      public Builder setAwsElasticBlockStore(
          io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.Builder builderForValue) {
        if (awsElasticBlockStoreBuilder_ == null) {
          awsElasticBlockStore_ = builderForValue.build();
        } else {
          awsElasticBlockStoreBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
       */
      public Builder mergeAwsElasticBlockStore(io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource value) {
        if (awsElasticBlockStoreBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            awsElasticBlockStore_ != null &&
            awsElasticBlockStore_ != io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance()) {
            getAwsElasticBlockStoreBuilder().mergeFrom(value);
          } else {
            awsElasticBlockStore_ = value;
          }
        } else {
          awsElasticBlockStoreBuilder_.mergeFrom(value);
        }
        if (awsElasticBlockStore_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
       */
      public Builder clearAwsElasticBlockStore() {
        bitField0_ = (bitField0_ & ~0x00000002);
        awsElasticBlockStore_ = null;
        if (awsElasticBlockStoreBuilder_ != null) {
          awsElasticBlockStoreBuilder_.dispose();
          awsElasticBlockStoreBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
       */
      public io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.Builder getAwsElasticBlockStoreBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAwsElasticBlockStoreFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
       */
      public io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder getAwsElasticBlockStoreOrBuilder() {
        if (awsElasticBlockStoreBuilder_ != null) {
          return awsElasticBlockStoreBuilder_.getMessageOrBuilder();
        } else {
          return awsElasticBlockStore_ == null ?
              io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance() : awsElasticBlockStore_;
        }
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.Builder, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder> 
          getAwsElasticBlockStoreFieldBuilder() {
        if (awsElasticBlockStoreBuilder_ == null) {
          awsElasticBlockStoreBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.Builder, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder>(
                  getAwsElasticBlockStore(),
                  getParentForChildren(),
                  isClean());
          awsElasticBlockStore_ = null;
        }
        return awsElasticBlockStoreBuilder_;
      }

      private io.kubernetes.client.proto.V1.HostPathVolumeSource hostPath_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.HostPathVolumeSource, io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder, io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder> hostPathBuilder_;
      /**
       * <pre>
       * hostPath represents a directory on the host.
       * Provisioned by a developer or tester.
       * This is useful for single-node development and testing only!
       * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
       * @return Whether the hostPath field is set.
       */
      public boolean hasHostPath() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * hostPath represents a directory on the host.
       * Provisioned by a developer or tester.
       * This is useful for single-node development and testing only!
       * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
       * @return The hostPath.
       */
      public io.kubernetes.client.proto.V1.HostPathVolumeSource getHostPath() {
        if (hostPathBuilder_ == null) {
          return hostPath_ == null ? io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance() : hostPath_;
        } else {
          return hostPathBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * hostPath represents a directory on the host.
       * Provisioned by a developer or tester.
       * This is useful for single-node development and testing only!
       * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
       */
      public Builder setHostPath(io.kubernetes.client.proto.V1.HostPathVolumeSource value) {
        if (hostPathBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          hostPath_ = value;
        } else {
          hostPathBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * hostPath represents a directory on the host.
       * Provisioned by a developer or tester.
       * This is useful for single-node development and testing only!
       * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
       */
      public Builder setHostPath(
          io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder builderForValue) {
        if (hostPathBuilder_ == null) {
          hostPath_ = builderForValue.build();
        } else {
          hostPathBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * hostPath represents a directory on the host.
       * Provisioned by a developer or tester.
       * This is useful for single-node development and testing only!
       * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
       */
      public Builder mergeHostPath(io.kubernetes.client.proto.V1.HostPathVolumeSource value) {
        if (hostPathBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            hostPath_ != null &&
            hostPath_ != io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance()) {
            getHostPathBuilder().mergeFrom(value);
          } else {
            hostPath_ = value;
          }
        } else {
          hostPathBuilder_.mergeFrom(value);
        }
        if (hostPath_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * hostPath represents a directory on the host.
       * Provisioned by a developer or tester.
       * This is useful for single-node development and testing only!
       * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
       */
      public Builder clearHostPath() {
        bitField0_ = (bitField0_ & ~0x00000004);
        hostPath_ = null;
        if (hostPathBuilder_ != null) {
          hostPathBuilder_.dispose();
          hostPathBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * hostPath represents a directory on the host.
       * Provisioned by a developer or tester.
       * This is useful for single-node development and testing only!
       * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
       */
      public io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder getHostPathBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getHostPathFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * hostPath represents a directory on the host.
       * Provisioned by a developer or tester.
       * This is useful for single-node development and testing only!
       * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
       */
      public io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder getHostPathOrBuilder() {
        if (hostPathBuilder_ != null) {
          return hostPathBuilder_.getMessageOrBuilder();
        } else {
          return hostPath_ == null ?
              io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance() : hostPath_;
        }
      }
      /**
       * <pre>
       * hostPath represents a directory on the host.
       * Provisioned by a developer or tester.
       * This is useful for single-node development and testing only!
       * On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.HostPathVolumeSource, io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder, io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder> 
          getHostPathFieldBuilder() {
        if (hostPathBuilder_ == null) {
          hostPathBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.HostPathVolumeSource, io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder, io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder>(
                  getHostPath(),
                  getParentForChildren(),
                  isClean());
          hostPath_ = null;
        }
        return hostPathBuilder_;
      }

      private io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource glusterfs_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource, io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSourceOrBuilder> glusterfsBuilder_;
      /**
       * <pre>
       * glusterfs represents a Glusterfs volume that is attached to a host and
       * exposed to the pod. Provisioned by an admin.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
       * @return Whether the glusterfs field is set.
       */
      public boolean hasGlusterfs() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs volume that is attached to a host and
       * exposed to the pod. Provisioned by an admin.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
       * @return The glusterfs.
       */
      public io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource getGlusterfs() {
        if (glusterfsBuilder_ == null) {
          return glusterfs_ == null ? io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.getDefaultInstance() : glusterfs_;
        } else {
          return glusterfsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs volume that is attached to a host and
       * exposed to the pod. Provisioned by an admin.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
       */
      public Builder setGlusterfs(io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource value) {
        if (glusterfsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          glusterfs_ = value;
        } else {
          glusterfsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs volume that is attached to a host and
       * exposed to the pod. Provisioned by an admin.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
       */
      public Builder setGlusterfs(
          io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.Builder builderForValue) {
        if (glusterfsBuilder_ == null) {
          glusterfs_ = builderForValue.build();
        } else {
          glusterfsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs volume that is attached to a host and
       * exposed to the pod. Provisioned by an admin.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
       */
      public Builder mergeGlusterfs(io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource value) {
        if (glusterfsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            glusterfs_ != null &&
            glusterfs_ != io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.getDefaultInstance()) {
            getGlusterfsBuilder().mergeFrom(value);
          } else {
            glusterfs_ = value;
          }
        } else {
          glusterfsBuilder_.mergeFrom(value);
        }
        if (glusterfs_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs volume that is attached to a host and
       * exposed to the pod. Provisioned by an admin.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
       */
      public Builder clearGlusterfs() {
        bitField0_ = (bitField0_ & ~0x00000008);
        glusterfs_ = null;
        if (glusterfsBuilder_ != null) {
          glusterfsBuilder_.dispose();
          glusterfsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs volume that is attached to a host and
       * exposed to the pod. Provisioned by an admin.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
       */
      public io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.Builder getGlusterfsBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getGlusterfsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs volume that is attached to a host and
       * exposed to the pod. Provisioned by an admin.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
       */
      public io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSourceOrBuilder getGlusterfsOrBuilder() {
        if (glusterfsBuilder_ != null) {
          return glusterfsBuilder_.getMessageOrBuilder();
        } else {
          return glusterfs_ == null ?
              io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.getDefaultInstance() : glusterfs_;
        }
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs volume that is attached to a host and
       * exposed to the pod. Provisioned by an admin.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsPersistentVolumeSource glusterfs = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource, io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSourceOrBuilder> 
          getGlusterfsFieldBuilder() {
        if (glusterfsBuilder_ == null) {
          glusterfsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource, io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.GlusterfsPersistentVolumeSourceOrBuilder>(
                  getGlusterfs(),
                  getParentForChildren(),
                  isClean());
          glusterfs_ = null;
        }
        return glusterfsBuilder_;
      }

      private io.kubernetes.client.proto.V1.NFSVolumeSource nfs_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NFSVolumeSource, io.kubernetes.client.proto.V1.NFSVolumeSource.Builder, io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder> nfsBuilder_;
      /**
       * <pre>
       * nfs represents an NFS mount on the host. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
       * @return Whether the nfs field is set.
       */
      public boolean hasNfs() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
       * @return The nfs.
       */
      public io.kubernetes.client.proto.V1.NFSVolumeSource getNfs() {
        if (nfsBuilder_ == null) {
          return nfs_ == null ? io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance() : nfs_;
        } else {
          return nfsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
       */
      public Builder setNfs(io.kubernetes.client.proto.V1.NFSVolumeSource value) {
        if (nfsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nfs_ = value;
        } else {
          nfsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
       */
      public Builder setNfs(
          io.kubernetes.client.proto.V1.NFSVolumeSource.Builder builderForValue) {
        if (nfsBuilder_ == null) {
          nfs_ = builderForValue.build();
        } else {
          nfsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
       */
      public Builder mergeNfs(io.kubernetes.client.proto.V1.NFSVolumeSource value) {
        if (nfsBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            nfs_ != null &&
            nfs_ != io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance()) {
            getNfsBuilder().mergeFrom(value);
          } else {
            nfs_ = value;
          }
        } else {
          nfsBuilder_.mergeFrom(value);
        }
        if (nfs_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
       */
      public Builder clearNfs() {
        bitField0_ = (bitField0_ & ~0x00000010);
        nfs_ = null;
        if (nfsBuilder_ != null) {
          nfsBuilder_.dispose();
          nfsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
       */
      public io.kubernetes.client.proto.V1.NFSVolumeSource.Builder getNfsBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getNfsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
       */
      public io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder getNfsOrBuilder() {
        if (nfsBuilder_ != null) {
          return nfsBuilder_.getMessageOrBuilder();
        } else {
          return nfs_ == null ?
              io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance() : nfs_;
        }
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host. Provisioned by an admin.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NFSVolumeSource, io.kubernetes.client.proto.V1.NFSVolumeSource.Builder, io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder> 
          getNfsFieldBuilder() {
        if (nfsBuilder_ == null) {
          nfsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NFSVolumeSource, io.kubernetes.client.proto.V1.NFSVolumeSource.Builder, io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder>(
                  getNfs(),
                  getParentForChildren(),
                  isClean());
          nfs_ = null;
        }
        return nfsBuilder_;
      }

      private io.kubernetes.client.proto.V1.RBDPersistentVolumeSource rbd_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.RBDPersistentVolumeSource, io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.RBDPersistentVolumeSourceOrBuilder> rbdBuilder_;
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
       * @return Whether the rbd field is set.
       */
      public boolean hasRbd() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
       * @return The rbd.
       */
      public io.kubernetes.client.proto.V1.RBDPersistentVolumeSource getRbd() {
        if (rbdBuilder_ == null) {
          return rbd_ == null ? io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.getDefaultInstance() : rbd_;
        } else {
          return rbdBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
       */
      public Builder setRbd(io.kubernetes.client.proto.V1.RBDPersistentVolumeSource value) {
        if (rbdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rbd_ = value;
        } else {
          rbdBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
       */
      public Builder setRbd(
          io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.Builder builderForValue) {
        if (rbdBuilder_ == null) {
          rbd_ = builderForValue.build();
        } else {
          rbdBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
       */
      public Builder mergeRbd(io.kubernetes.client.proto.V1.RBDPersistentVolumeSource value) {
        if (rbdBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            rbd_ != null &&
            rbd_ != io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.getDefaultInstance()) {
            getRbdBuilder().mergeFrom(value);
          } else {
            rbd_ = value;
          }
        } else {
          rbdBuilder_.mergeFrom(value);
        }
        if (rbd_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
       */
      public Builder clearRbd() {
        bitField0_ = (bitField0_ & ~0x00000020);
        rbd_ = null;
        if (rbdBuilder_ != null) {
          rbdBuilder_.dispose();
          rbdBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
       */
      public io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.Builder getRbdBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getRbdFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
       */
      public io.kubernetes.client.proto.V1.RBDPersistentVolumeSourceOrBuilder getRbdOrBuilder() {
        if (rbdBuilder_ != null) {
          return rbdBuilder_.getMessageOrBuilder();
        } else {
          return rbd_ == null ?
              io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.getDefaultInstance() : rbd_;
        }
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDPersistentVolumeSource rbd = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.RBDPersistentVolumeSource, io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.RBDPersistentVolumeSourceOrBuilder> 
          getRbdFieldBuilder() {
        if (rbdBuilder_ == null) {
          rbdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.RBDPersistentVolumeSource, io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.RBDPersistentVolumeSourceOrBuilder>(
                  getRbd(),
                  getParentForChildren(),
                  isClean());
          rbd_ = null;
        }
        return rbdBuilder_;
      }

      private io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource iscsi_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource, io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSourceOrBuilder> iscsiBuilder_;
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
       * @return Whether the iscsi field is set.
       */
      public boolean hasIscsi() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
       * @return The iscsi.
       */
      public io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource getIscsi() {
        if (iscsiBuilder_ == null) {
          return iscsi_ == null ? io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.getDefaultInstance() : iscsi_;
        } else {
          return iscsiBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
       */
      public Builder setIscsi(io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource value) {
        if (iscsiBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          iscsi_ = value;
        } else {
          iscsiBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
       */
      public Builder setIscsi(
          io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.Builder builderForValue) {
        if (iscsiBuilder_ == null) {
          iscsi_ = builderForValue.build();
        } else {
          iscsiBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
       */
      public Builder mergeIscsi(io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource value) {
        if (iscsiBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            iscsi_ != null &&
            iscsi_ != io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.getDefaultInstance()) {
            getIscsiBuilder().mergeFrom(value);
          } else {
            iscsi_ = value;
          }
        } else {
          iscsiBuilder_.mergeFrom(value);
        }
        if (iscsi_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
       */
      public Builder clearIscsi() {
        bitField0_ = (bitField0_ & ~0x00000040);
        iscsi_ = null;
        if (iscsiBuilder_ != null) {
          iscsiBuilder_.dispose();
          iscsiBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
       */
      public io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.Builder getIscsiBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getIscsiFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
       */
      public io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSourceOrBuilder getIscsiOrBuilder() {
        if (iscsiBuilder_ != null) {
          return iscsiBuilder_.getMessageOrBuilder();
        } else {
          return iscsi_ == null ?
              io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.getDefaultInstance() : iscsi_;
        }
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod. Provisioned by an admin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIPersistentVolumeSource iscsi = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource, io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSourceOrBuilder> 
          getIscsiFieldBuilder() {
        if (iscsiBuilder_ == null) {
          iscsiBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource, io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.ISCSIPersistentVolumeSourceOrBuilder>(
                  getIscsi(),
                  getParentForChildren(),
                  isClean());
          iscsi_ = null;
        }
        return iscsiBuilder_;
      }

      private io.kubernetes.client.proto.V1.CinderPersistentVolumeSource cinder_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CinderPersistentVolumeSource, io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.CinderPersistentVolumeSourceOrBuilder> cinderBuilder_;
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
       * @return Whether the cinder field is set.
       */
      public boolean hasCinder() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
       * @return The cinder.
       */
      public io.kubernetes.client.proto.V1.CinderPersistentVolumeSource getCinder() {
        if (cinderBuilder_ == null) {
          return cinder_ == null ? io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.getDefaultInstance() : cinder_;
        } else {
          return cinderBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
       */
      public Builder setCinder(io.kubernetes.client.proto.V1.CinderPersistentVolumeSource value) {
        if (cinderBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cinder_ = value;
        } else {
          cinderBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
       */
      public Builder setCinder(
          io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.Builder builderForValue) {
        if (cinderBuilder_ == null) {
          cinder_ = builderForValue.build();
        } else {
          cinderBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
       */
      public Builder mergeCinder(io.kubernetes.client.proto.V1.CinderPersistentVolumeSource value) {
        if (cinderBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
            cinder_ != null &&
            cinder_ != io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.getDefaultInstance()) {
            getCinderBuilder().mergeFrom(value);
          } else {
            cinder_ = value;
          }
        } else {
          cinderBuilder_.mergeFrom(value);
        }
        if (cinder_ != null) {
          bitField0_ |= 0x00000080;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
       */
      public Builder clearCinder() {
        bitField0_ = (bitField0_ & ~0x00000080);
        cinder_ = null;
        if (cinderBuilder_ != null) {
          cinderBuilder_.dispose();
          cinderBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
       */
      public io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.Builder getCinderBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getCinderFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
       */
      public io.kubernetes.client.proto.V1.CinderPersistentVolumeSourceOrBuilder getCinderOrBuilder() {
        if (cinderBuilder_ != null) {
          return cinderBuilder_.getMessageOrBuilder();
        } else {
          return cinder_ == null ?
              io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.getDefaultInstance() : cinder_;
        }
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderPersistentVolumeSource cinder = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CinderPersistentVolumeSource, io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.CinderPersistentVolumeSourceOrBuilder> 
          getCinderFieldBuilder() {
        if (cinderBuilder_ == null) {
          cinderBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.CinderPersistentVolumeSource, io.kubernetes.client.proto.V1.CinderPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.CinderPersistentVolumeSourceOrBuilder>(
                  getCinder(),
                  getParentForChildren(),
                  isClean());
          cinder_ = null;
        }
        return cinderBuilder_;
      }

      private io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource cephfs_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource, io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.CephFSPersistentVolumeSourceOrBuilder> cephfsBuilder_;
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
       * @return Whether the cephfs field is set.
       */
      public boolean hasCephfs() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
       * @return The cephfs.
       */
      public io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource getCephfs() {
        if (cephfsBuilder_ == null) {
          return cephfs_ == null ? io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.getDefaultInstance() : cephfs_;
        } else {
          return cephfsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
       */
      public Builder setCephfs(io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource value) {
        if (cephfsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cephfs_ = value;
        } else {
          cephfsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
       */
      public Builder setCephfs(
          io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.Builder builderForValue) {
        if (cephfsBuilder_ == null) {
          cephfs_ = builderForValue.build();
        } else {
          cephfsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
       */
      public Builder mergeCephfs(io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource value) {
        if (cephfsBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
            cephfs_ != null &&
            cephfs_ != io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.getDefaultInstance()) {
            getCephfsBuilder().mergeFrom(value);
          } else {
            cephfs_ = value;
          }
        } else {
          cephfsBuilder_.mergeFrom(value);
        }
        if (cephfs_ != null) {
          bitField0_ |= 0x00000100;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
       */
      public Builder clearCephfs() {
        bitField0_ = (bitField0_ & ~0x00000100);
        cephfs_ = null;
        if (cephfsBuilder_ != null) {
          cephfsBuilder_.dispose();
          cephfsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
       */
      public io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.Builder getCephfsBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getCephfsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
       */
      public io.kubernetes.client.proto.V1.CephFSPersistentVolumeSourceOrBuilder getCephfsOrBuilder() {
        if (cephfsBuilder_ != null) {
          return cephfsBuilder_.getMessageOrBuilder();
        } else {
          return cephfs_ == null ?
              io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.getDefaultInstance() : cephfs_;
        }
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSPersistentVolumeSource cephfs = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource, io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.CephFSPersistentVolumeSourceOrBuilder> 
          getCephfsFieldBuilder() {
        if (cephfsBuilder_ == null) {
          cephfsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource, io.kubernetes.client.proto.V1.CephFSPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.CephFSPersistentVolumeSourceOrBuilder>(
                  getCephfs(),
                  getParentForChildren(),
                  isClean());
          cephfs_ = null;
        }
        return cephfsBuilder_;
      }

      private io.kubernetes.client.proto.V1.FCVolumeSource fc_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FCVolumeSource, io.kubernetes.client.proto.V1.FCVolumeSource.Builder, io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder> fcBuilder_;
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
       * @return Whether the fc field is set.
       */
      public boolean hasFc() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
       * @return The fc.
       */
      public io.kubernetes.client.proto.V1.FCVolumeSource getFc() {
        if (fcBuilder_ == null) {
          return fc_ == null ? io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance() : fc_;
        } else {
          return fcBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
       */
      public Builder setFc(io.kubernetes.client.proto.V1.FCVolumeSource value) {
        if (fcBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fc_ = value;
        } else {
          fcBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
       */
      public Builder setFc(
          io.kubernetes.client.proto.V1.FCVolumeSource.Builder builderForValue) {
        if (fcBuilder_ == null) {
          fc_ = builderForValue.build();
        } else {
          fcBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
       */
      public Builder mergeFc(io.kubernetes.client.proto.V1.FCVolumeSource value) {
        if (fcBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            fc_ != null &&
            fc_ != io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance()) {
            getFcBuilder().mergeFrom(value);
          } else {
            fc_ = value;
          }
        } else {
          fcBuilder_.mergeFrom(value);
        }
        if (fc_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
       */
      public Builder clearFc() {
        bitField0_ = (bitField0_ & ~0x00000200);
        fc_ = null;
        if (fcBuilder_ != null) {
          fcBuilder_.dispose();
          fcBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
       */
      public io.kubernetes.client.proto.V1.FCVolumeSource.Builder getFcBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getFcFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
       */
      public io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder getFcOrBuilder() {
        if (fcBuilder_ != null) {
          return fcBuilder_.getMessageOrBuilder();
        } else {
          return fc_ == null ?
              io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance() : fc_;
        }
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FCVolumeSource, io.kubernetes.client.proto.V1.FCVolumeSource.Builder, io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder> 
          getFcFieldBuilder() {
        if (fcBuilder_ == null) {
          fcBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.FCVolumeSource, io.kubernetes.client.proto.V1.FCVolumeSource.Builder, io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder>(
                  getFc(),
                  getParentForChildren(),
                  isClean());
          fc_ = null;
        }
        return fcBuilder_;
      }

      private io.kubernetes.client.proto.V1.FlockerVolumeSource flocker_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FlockerVolumeSource, io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder, io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder> flockerBuilder_;
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
       * @return Whether the flocker field is set.
       */
      public boolean hasFlocker() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
       * @return The flocker.
       */
      public io.kubernetes.client.proto.V1.FlockerVolumeSource getFlocker() {
        if (flockerBuilder_ == null) {
          return flocker_ == null ? io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance() : flocker_;
        } else {
          return flockerBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
       */
      public Builder setFlocker(io.kubernetes.client.proto.V1.FlockerVolumeSource value) {
        if (flockerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          flocker_ = value;
        } else {
          flockerBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
       */
      public Builder setFlocker(
          io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder builderForValue) {
        if (flockerBuilder_ == null) {
          flocker_ = builderForValue.build();
        } else {
          flockerBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
       */
      public Builder mergeFlocker(io.kubernetes.client.proto.V1.FlockerVolumeSource value) {
        if (flockerBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            flocker_ != null &&
            flocker_ != io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance()) {
            getFlockerBuilder().mergeFrom(value);
          } else {
            flocker_ = value;
          }
        } else {
          flockerBuilder_.mergeFrom(value);
        }
        if (flocker_ != null) {
          bitField0_ |= 0x00000400;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
       */
      public Builder clearFlocker() {
        bitField0_ = (bitField0_ & ~0x00000400);
        flocker_ = null;
        if (flockerBuilder_ != null) {
          flockerBuilder_.dispose();
          flockerBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
       */
      public io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder getFlockerBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getFlockerFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
       */
      public io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder getFlockerOrBuilder() {
        if (flockerBuilder_ != null) {
          return flockerBuilder_.getMessageOrBuilder();
        } else {
          return flocker_ == null ?
              io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance() : flocker_;
        }
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FlockerVolumeSource, io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder, io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder> 
          getFlockerFieldBuilder() {
        if (flockerBuilder_ == null) {
          flockerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.FlockerVolumeSource, io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder, io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder>(
                  getFlocker(),
                  getParentForChildren(),
                  isClean());
          flocker_ = null;
        }
        return flockerBuilder_;
      }

      private io.kubernetes.client.proto.V1.FlexPersistentVolumeSource flexVolume_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FlexPersistentVolumeSource, io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.FlexPersistentVolumeSourceOrBuilder> flexVolumeBuilder_;
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
       * @return Whether the flexVolume field is set.
       */
      public boolean hasFlexVolume() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
       * @return The flexVolume.
       */
      public io.kubernetes.client.proto.V1.FlexPersistentVolumeSource getFlexVolume() {
        if (flexVolumeBuilder_ == null) {
          return flexVolume_ == null ? io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.getDefaultInstance() : flexVolume_;
        } else {
          return flexVolumeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
       */
      public Builder setFlexVolume(io.kubernetes.client.proto.V1.FlexPersistentVolumeSource value) {
        if (flexVolumeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          flexVolume_ = value;
        } else {
          flexVolumeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
       */
      public Builder setFlexVolume(
          io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.Builder builderForValue) {
        if (flexVolumeBuilder_ == null) {
          flexVolume_ = builderForValue.build();
        } else {
          flexVolumeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
       */
      public Builder mergeFlexVolume(io.kubernetes.client.proto.V1.FlexPersistentVolumeSource value) {
        if (flexVolumeBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0) &&
            flexVolume_ != null &&
            flexVolume_ != io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.getDefaultInstance()) {
            getFlexVolumeBuilder().mergeFrom(value);
          } else {
            flexVolume_ = value;
          }
        } else {
          flexVolumeBuilder_.mergeFrom(value);
        }
        if (flexVolume_ != null) {
          bitField0_ |= 0x00000800;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
       */
      public Builder clearFlexVolume() {
        bitField0_ = (bitField0_ & ~0x00000800);
        flexVolume_ = null;
        if (flexVolumeBuilder_ != null) {
          flexVolumeBuilder_.dispose();
          flexVolumeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
       */
      public io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.Builder getFlexVolumeBuilder() {
        bitField0_ |= 0x00000800;
        onChanged();
        return getFlexVolumeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
       */
      public io.kubernetes.client.proto.V1.FlexPersistentVolumeSourceOrBuilder getFlexVolumeOrBuilder() {
        if (flexVolumeBuilder_ != null) {
          return flexVolumeBuilder_.getMessageOrBuilder();
        } else {
          return flexVolume_ == null ?
              io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.getDefaultInstance() : flexVolume_;
        }
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexPersistentVolumeSource flexVolume = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FlexPersistentVolumeSource, io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.FlexPersistentVolumeSourceOrBuilder> 
          getFlexVolumeFieldBuilder() {
        if (flexVolumeBuilder_ == null) {
          flexVolumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.FlexPersistentVolumeSource, io.kubernetes.client.proto.V1.FlexPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.FlexPersistentVolumeSourceOrBuilder>(
                  getFlexVolume(),
                  getParentForChildren(),
                  isClean());
          flexVolume_ = null;
        }
        return flexVolumeBuilder_;
      }

      private io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource azureFile_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource, io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSourceOrBuilder> azureFileBuilder_;
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
       * @return Whether the azureFile field is set.
       */
      public boolean hasAzureFile() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
       * @return The azureFile.
       */
      public io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource getAzureFile() {
        if (azureFileBuilder_ == null) {
          return azureFile_ == null ? io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.getDefaultInstance() : azureFile_;
        } else {
          return azureFileBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
       */
      public Builder setAzureFile(io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource value) {
        if (azureFileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          azureFile_ = value;
        } else {
          azureFileBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
       */
      public Builder setAzureFile(
          io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.Builder builderForValue) {
        if (azureFileBuilder_ == null) {
          azureFile_ = builderForValue.build();
        } else {
          azureFileBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
       */
      public Builder mergeAzureFile(io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource value) {
        if (azureFileBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0) &&
            azureFile_ != null &&
            azureFile_ != io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.getDefaultInstance()) {
            getAzureFileBuilder().mergeFrom(value);
          } else {
            azureFile_ = value;
          }
        } else {
          azureFileBuilder_.mergeFrom(value);
        }
        if (azureFile_ != null) {
          bitField0_ |= 0x00001000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
       */
      public Builder clearAzureFile() {
        bitField0_ = (bitField0_ & ~0x00001000);
        azureFile_ = null;
        if (azureFileBuilder_ != null) {
          azureFileBuilder_.dispose();
          azureFileBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
       */
      public io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.Builder getAzureFileBuilder() {
        bitField0_ |= 0x00001000;
        onChanged();
        return getAzureFileFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
       */
      public io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSourceOrBuilder getAzureFileOrBuilder() {
        if (azureFileBuilder_ != null) {
          return azureFileBuilder_.getMessageOrBuilder();
        } else {
          return azureFile_ == null ?
              io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.getDefaultInstance() : azureFile_;
        }
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFilePersistentVolumeSource azureFile = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource, io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSourceOrBuilder> 
          getAzureFileFieldBuilder() {
        if (azureFileBuilder_ == null) {
          azureFileBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource, io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureFilePersistentVolumeSourceOrBuilder>(
                  getAzureFile(),
                  getParentForChildren(),
                  isClean());
          azureFile_ = null;
        }
        return azureFileBuilder_;
      }

      private io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource vsphereVolume_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder> vsphereVolumeBuilder_;
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
       * @return Whether the vsphereVolume field is set.
       */
      public boolean hasVsphereVolume() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
       * @return The vsphereVolume.
       */
      public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource getVsphereVolume() {
        if (vsphereVolumeBuilder_ == null) {
          return vsphereVolume_ == null ? io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance() : vsphereVolume_;
        } else {
          return vsphereVolumeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
       */
      public Builder setVsphereVolume(io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource value) {
        if (vsphereVolumeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          vsphereVolume_ = value;
        } else {
          vsphereVolumeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
       */
      public Builder setVsphereVolume(
          io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder builderForValue) {
        if (vsphereVolumeBuilder_ == null) {
          vsphereVolume_ = builderForValue.build();
        } else {
          vsphereVolumeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
       */
      public Builder mergeVsphereVolume(io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource value) {
        if (vsphereVolumeBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0) &&
            vsphereVolume_ != null &&
            vsphereVolume_ != io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance()) {
            getVsphereVolumeBuilder().mergeFrom(value);
          } else {
            vsphereVolume_ = value;
          }
        } else {
          vsphereVolumeBuilder_.mergeFrom(value);
        }
        if (vsphereVolume_ != null) {
          bitField0_ |= 0x00002000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
       */
      public Builder clearVsphereVolume() {
        bitField0_ = (bitField0_ & ~0x00002000);
        vsphereVolume_ = null;
        if (vsphereVolumeBuilder_ != null) {
          vsphereVolumeBuilder_.dispose();
          vsphereVolumeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
       */
      public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder getVsphereVolumeBuilder() {
        bitField0_ |= 0x00002000;
        onChanged();
        return getVsphereVolumeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
       */
      public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder getVsphereVolumeOrBuilder() {
        if (vsphereVolumeBuilder_ != null) {
          return vsphereVolumeBuilder_.getMessageOrBuilder();
        } else {
          return vsphereVolume_ == null ?
              io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance() : vsphereVolume_;
        }
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder> 
          getVsphereVolumeFieldBuilder() {
        if (vsphereVolumeBuilder_ == null) {
          vsphereVolumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder>(
                  getVsphereVolume(),
                  getParentForChildren(),
                  isClean());
          vsphereVolume_ = null;
        }
        return vsphereVolumeBuilder_;
      }

      private io.kubernetes.client.proto.V1.QuobyteVolumeSource quobyte_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.QuobyteVolumeSource, io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder, io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder> quobyteBuilder_;
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
       * @return Whether the quobyte field is set.
       */
      public boolean hasQuobyte() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
       * @return The quobyte.
       */
      public io.kubernetes.client.proto.V1.QuobyteVolumeSource getQuobyte() {
        if (quobyteBuilder_ == null) {
          return quobyte_ == null ? io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance() : quobyte_;
        } else {
          return quobyteBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
       */
      public Builder setQuobyte(io.kubernetes.client.proto.V1.QuobyteVolumeSource value) {
        if (quobyteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          quobyte_ = value;
        } else {
          quobyteBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
       */
      public Builder setQuobyte(
          io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder builderForValue) {
        if (quobyteBuilder_ == null) {
          quobyte_ = builderForValue.build();
        } else {
          quobyteBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
       */
      public Builder mergeQuobyte(io.kubernetes.client.proto.V1.QuobyteVolumeSource value) {
        if (quobyteBuilder_ == null) {
          if (((bitField0_ & 0x00004000) != 0) &&
            quobyte_ != null &&
            quobyte_ != io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance()) {
            getQuobyteBuilder().mergeFrom(value);
          } else {
            quobyte_ = value;
          }
        } else {
          quobyteBuilder_.mergeFrom(value);
        }
        if (quobyte_ != null) {
          bitField0_ |= 0x00004000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
       */
      public Builder clearQuobyte() {
        bitField0_ = (bitField0_ & ~0x00004000);
        quobyte_ = null;
        if (quobyteBuilder_ != null) {
          quobyteBuilder_.dispose();
          quobyteBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
       */
      public io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder getQuobyteBuilder() {
        bitField0_ |= 0x00004000;
        onChanged();
        return getQuobyteFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
       */
      public io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder getQuobyteOrBuilder() {
        if (quobyteBuilder_ != null) {
          return quobyteBuilder_.getMessageOrBuilder();
        } else {
          return quobyte_ == null ?
              io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance() : quobyte_;
        }
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.QuobyteVolumeSource, io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder, io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder> 
          getQuobyteFieldBuilder() {
        if (quobyteBuilder_ == null) {
          quobyteBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.QuobyteVolumeSource, io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder, io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder>(
                  getQuobyte(),
                  getParentForChildren(),
                  isClean());
          quobyte_ = null;
        }
        return quobyteBuilder_;
      }

      private io.kubernetes.client.proto.V1.AzureDiskVolumeSource azureDisk_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AzureDiskVolumeSource, io.kubernetes.client.proto.V1.AzureDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder> azureDiskBuilder_;
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
       * @return Whether the azureDisk field is set.
       */
      public boolean hasAzureDisk() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
       * @return The azureDisk.
       */
      public io.kubernetes.client.proto.V1.AzureDiskVolumeSource getAzureDisk() {
        if (azureDiskBuilder_ == null) {
          return azureDisk_ == null ? io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance() : azureDisk_;
        } else {
          return azureDiskBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
       */
      public Builder setAzureDisk(io.kubernetes.client.proto.V1.AzureDiskVolumeSource value) {
        if (azureDiskBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          azureDisk_ = value;
        } else {
          azureDiskBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
       */
      public Builder setAzureDisk(
          io.kubernetes.client.proto.V1.AzureDiskVolumeSource.Builder builderForValue) {
        if (azureDiskBuilder_ == null) {
          azureDisk_ = builderForValue.build();
        } else {
          azureDiskBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
       */
      public Builder mergeAzureDisk(io.kubernetes.client.proto.V1.AzureDiskVolumeSource value) {
        if (azureDiskBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0) &&
            azureDisk_ != null &&
            azureDisk_ != io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance()) {
            getAzureDiskBuilder().mergeFrom(value);
          } else {
            azureDisk_ = value;
          }
        } else {
          azureDiskBuilder_.mergeFrom(value);
        }
        if (azureDisk_ != null) {
          bitField0_ |= 0x00008000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
       */
      public Builder clearAzureDisk() {
        bitField0_ = (bitField0_ & ~0x00008000);
        azureDisk_ = null;
        if (azureDiskBuilder_ != null) {
          azureDiskBuilder_.dispose();
          azureDiskBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
       */
      public io.kubernetes.client.proto.V1.AzureDiskVolumeSource.Builder getAzureDiskBuilder() {
        bitField0_ |= 0x00008000;
        onChanged();
        return getAzureDiskFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
       */
      public io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder getAzureDiskOrBuilder() {
        if (azureDiskBuilder_ != null) {
          return azureDiskBuilder_.getMessageOrBuilder();
        } else {
          return azureDisk_ == null ?
              io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance() : azureDisk_;
        }
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 16;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AzureDiskVolumeSource, io.kubernetes.client.proto.V1.AzureDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder> 
          getAzureDiskFieldBuilder() {
        if (azureDiskBuilder_ == null) {
          azureDiskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.AzureDiskVolumeSource, io.kubernetes.client.proto.V1.AzureDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder>(
                  getAzureDisk(),
                  getParentForChildren(),
                  isClean());
          azureDisk_ = null;
        }
        return azureDiskBuilder_;
      }

      private io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource photonPersistentDisk_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder> photonPersistentDiskBuilder_;
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
       * @return Whether the photonPersistentDisk field is set.
       */
      public boolean hasPhotonPersistentDisk() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
       * @return The photonPersistentDisk.
       */
      public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource getPhotonPersistentDisk() {
        if (photonPersistentDiskBuilder_ == null) {
          return photonPersistentDisk_ == null ? io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance() : photonPersistentDisk_;
        } else {
          return photonPersistentDiskBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
       */
      public Builder setPhotonPersistentDisk(io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource value) {
        if (photonPersistentDiskBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          photonPersistentDisk_ = value;
        } else {
          photonPersistentDiskBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
       */
      public Builder setPhotonPersistentDisk(
          io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder builderForValue) {
        if (photonPersistentDiskBuilder_ == null) {
          photonPersistentDisk_ = builderForValue.build();
        } else {
          photonPersistentDiskBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
       */
      public Builder mergePhotonPersistentDisk(io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource value) {
        if (photonPersistentDiskBuilder_ == null) {
          if (((bitField0_ & 0x00010000) != 0) &&
            photonPersistentDisk_ != null &&
            photonPersistentDisk_ != io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance()) {
            getPhotonPersistentDiskBuilder().mergeFrom(value);
          } else {
            photonPersistentDisk_ = value;
          }
        } else {
          photonPersistentDiskBuilder_.mergeFrom(value);
        }
        if (photonPersistentDisk_ != null) {
          bitField0_ |= 0x00010000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
       */
      public Builder clearPhotonPersistentDisk() {
        bitField0_ = (bitField0_ & ~0x00010000);
        photonPersistentDisk_ = null;
        if (photonPersistentDiskBuilder_ != null) {
          photonPersistentDiskBuilder_.dispose();
          photonPersistentDiskBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
       */
      public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder getPhotonPersistentDiskBuilder() {
        bitField0_ |= 0x00010000;
        onChanged();
        return getPhotonPersistentDiskFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
       */
      public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder getPhotonPersistentDiskOrBuilder() {
        if (photonPersistentDiskBuilder_ != null) {
          return photonPersistentDiskBuilder_.getMessageOrBuilder();
        } else {
          return photonPersistentDisk_ == null ?
              io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance() : photonPersistentDisk_;
        }
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder> 
          getPhotonPersistentDiskFieldBuilder() {
        if (photonPersistentDiskBuilder_ == null) {
          photonPersistentDiskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder>(
                  getPhotonPersistentDisk(),
                  getParentForChildren(),
                  isClean());
          photonPersistentDisk_ = null;
        }
        return photonPersistentDiskBuilder_;
      }

      private io.kubernetes.client.proto.V1.PortworxVolumeSource portworxVolume_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PortworxVolumeSource, io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder, io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder> portworxVolumeBuilder_;
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
       * @return Whether the portworxVolume field is set.
       */
      public boolean hasPortworxVolume() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
       * @return The portworxVolume.
       */
      public io.kubernetes.client.proto.V1.PortworxVolumeSource getPortworxVolume() {
        if (portworxVolumeBuilder_ == null) {
          return portworxVolume_ == null ? io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance() : portworxVolume_;
        } else {
          return portworxVolumeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
       */
      public Builder setPortworxVolume(io.kubernetes.client.proto.V1.PortworxVolumeSource value) {
        if (portworxVolumeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          portworxVolume_ = value;
        } else {
          portworxVolumeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
       */
      public Builder setPortworxVolume(
          io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder builderForValue) {
        if (portworxVolumeBuilder_ == null) {
          portworxVolume_ = builderForValue.build();
        } else {
          portworxVolumeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
       */
      public Builder mergePortworxVolume(io.kubernetes.client.proto.V1.PortworxVolumeSource value) {
        if (portworxVolumeBuilder_ == null) {
          if (((bitField0_ & 0x00020000) != 0) &&
            portworxVolume_ != null &&
            portworxVolume_ != io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance()) {
            getPortworxVolumeBuilder().mergeFrom(value);
          } else {
            portworxVolume_ = value;
          }
        } else {
          portworxVolumeBuilder_.mergeFrom(value);
        }
        if (portworxVolume_ != null) {
          bitField0_ |= 0x00020000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
       */
      public Builder clearPortworxVolume() {
        bitField0_ = (bitField0_ & ~0x00020000);
        portworxVolume_ = null;
        if (portworxVolumeBuilder_ != null) {
          portworxVolumeBuilder_.dispose();
          portworxVolumeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
       */
      public io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder getPortworxVolumeBuilder() {
        bitField0_ |= 0x00020000;
        onChanged();
        return getPortworxVolumeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
       */
      public io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder getPortworxVolumeOrBuilder() {
        if (portworxVolumeBuilder_ != null) {
          return portworxVolumeBuilder_.getMessageOrBuilder();
        } else {
          return portworxVolume_ == null ?
              io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance() : portworxVolume_;
        }
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PortworxVolumeSource, io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder, io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder> 
          getPortworxVolumeFieldBuilder() {
        if (portworxVolumeBuilder_ == null) {
          portworxVolumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PortworxVolumeSource, io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder, io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder>(
                  getPortworxVolume(),
                  getParentForChildren(),
                  isClean());
          portworxVolume_ = null;
        }
        return portworxVolumeBuilder_;
      }

      private io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource scaleIO_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource, io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSourceOrBuilder> scaleIOBuilder_;
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
       * @return Whether the scaleIO field is set.
       */
      public boolean hasScaleIO() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
       * @return The scaleIO.
       */
      public io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource getScaleIO() {
        if (scaleIOBuilder_ == null) {
          return scaleIO_ == null ? io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.getDefaultInstance() : scaleIO_;
        } else {
          return scaleIOBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
       */
      public Builder setScaleIO(io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource value) {
        if (scaleIOBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          scaleIO_ = value;
        } else {
          scaleIOBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
       */
      public Builder setScaleIO(
          io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.Builder builderForValue) {
        if (scaleIOBuilder_ == null) {
          scaleIO_ = builderForValue.build();
        } else {
          scaleIOBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
       */
      public Builder mergeScaleIO(io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource value) {
        if (scaleIOBuilder_ == null) {
          if (((bitField0_ & 0x00040000) != 0) &&
            scaleIO_ != null &&
            scaleIO_ != io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.getDefaultInstance()) {
            getScaleIOBuilder().mergeFrom(value);
          } else {
            scaleIO_ = value;
          }
        } else {
          scaleIOBuilder_.mergeFrom(value);
        }
        if (scaleIO_ != null) {
          bitField0_ |= 0x00040000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
       */
      public Builder clearScaleIO() {
        bitField0_ = (bitField0_ & ~0x00040000);
        scaleIO_ = null;
        if (scaleIOBuilder_ != null) {
          scaleIOBuilder_.dispose();
          scaleIOBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
       */
      public io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.Builder getScaleIOBuilder() {
        bitField0_ |= 0x00040000;
        onChanged();
        return getScaleIOFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
       */
      public io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSourceOrBuilder getScaleIOOrBuilder() {
        if (scaleIOBuilder_ != null) {
          return scaleIOBuilder_.getMessageOrBuilder();
        } else {
          return scaleIO_ == null ?
              io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.getDefaultInstance() : scaleIO_;
        }
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOPersistentVolumeSource scaleIO = 19;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource, io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSourceOrBuilder> 
          getScaleIOFieldBuilder() {
        if (scaleIOBuilder_ == null) {
          scaleIOBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource, io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSourceOrBuilder>(
                  getScaleIO(),
                  getParentForChildren(),
                  isClean());
          scaleIO_ = null;
        }
        return scaleIOBuilder_;
      }

      private io.kubernetes.client.proto.V1.LocalVolumeSource local_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalVolumeSource, io.kubernetes.client.proto.V1.LocalVolumeSource.Builder, io.kubernetes.client.proto.V1.LocalVolumeSourceOrBuilder> localBuilder_;
      /**
       * <pre>
       * local represents directly-attached storage with node affinity
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
       * @return Whether the local field is set.
       */
      public boolean hasLocal() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <pre>
       * local represents directly-attached storage with node affinity
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
       * @return The local.
       */
      public io.kubernetes.client.proto.V1.LocalVolumeSource getLocal() {
        if (localBuilder_ == null) {
          return local_ == null ? io.kubernetes.client.proto.V1.LocalVolumeSource.getDefaultInstance() : local_;
        } else {
          return localBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * local represents directly-attached storage with node affinity
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
       */
      public Builder setLocal(io.kubernetes.client.proto.V1.LocalVolumeSource value) {
        if (localBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          local_ = value;
        } else {
          localBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * local represents directly-attached storage with node affinity
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
       */
      public Builder setLocal(
          io.kubernetes.client.proto.V1.LocalVolumeSource.Builder builderForValue) {
        if (localBuilder_ == null) {
          local_ = builderForValue.build();
        } else {
          localBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * local represents directly-attached storage with node affinity
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
       */
      public Builder mergeLocal(io.kubernetes.client.proto.V1.LocalVolumeSource value) {
        if (localBuilder_ == null) {
          if (((bitField0_ & 0x00080000) != 0) &&
            local_ != null &&
            local_ != io.kubernetes.client.proto.V1.LocalVolumeSource.getDefaultInstance()) {
            getLocalBuilder().mergeFrom(value);
          } else {
            local_ = value;
          }
        } else {
          localBuilder_.mergeFrom(value);
        }
        if (local_ != null) {
          bitField0_ |= 0x00080000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * local represents directly-attached storage with node affinity
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
       */
      public Builder clearLocal() {
        bitField0_ = (bitField0_ & ~0x00080000);
        local_ = null;
        if (localBuilder_ != null) {
          localBuilder_.dispose();
          localBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * local represents directly-attached storage with node affinity
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
       */
      public io.kubernetes.client.proto.V1.LocalVolumeSource.Builder getLocalBuilder() {
        bitField0_ |= 0x00080000;
        onChanged();
        return getLocalFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * local represents directly-attached storage with node affinity
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
       */
      public io.kubernetes.client.proto.V1.LocalVolumeSourceOrBuilder getLocalOrBuilder() {
        if (localBuilder_ != null) {
          return localBuilder_.getMessageOrBuilder();
        } else {
          return local_ == null ?
              io.kubernetes.client.proto.V1.LocalVolumeSource.getDefaultInstance() : local_;
        }
      }
      /**
       * <pre>
       * local represents directly-attached storage with node affinity
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalVolumeSource local = 20;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalVolumeSource, io.kubernetes.client.proto.V1.LocalVolumeSource.Builder, io.kubernetes.client.proto.V1.LocalVolumeSourceOrBuilder> 
          getLocalFieldBuilder() {
        if (localBuilder_ == null) {
          localBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalVolumeSource, io.kubernetes.client.proto.V1.LocalVolumeSource.Builder, io.kubernetes.client.proto.V1.LocalVolumeSourceOrBuilder>(
                  getLocal(),
                  getParentForChildren(),
                  isClean());
          local_ = null;
        }
        return localBuilder_;
      }

      private io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource storageos_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource, io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSourceOrBuilder> storageosBuilder_;
      /**
       * <pre>
       * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
       * More info: https://examples.k8s.io/volumes/storageos/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
       * @return Whether the storageos field is set.
       */
      public boolean hasStorageos() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
       * More info: https://examples.k8s.io/volumes/storageos/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
       * @return The storageos.
       */
      public io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource getStorageos() {
        if (storageosBuilder_ == null) {
          return storageos_ == null ? io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.getDefaultInstance() : storageos_;
        } else {
          return storageosBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
       * More info: https://examples.k8s.io/volumes/storageos/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
       */
      public Builder setStorageos(io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource value) {
        if (storageosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          storageos_ = value;
        } else {
          storageosBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
       * More info: https://examples.k8s.io/volumes/storageos/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
       */
      public Builder setStorageos(
          io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.Builder builderForValue) {
        if (storageosBuilder_ == null) {
          storageos_ = builderForValue.build();
        } else {
          storageosBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
       * More info: https://examples.k8s.io/volumes/storageos/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
       */
      public Builder mergeStorageos(io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource value) {
        if (storageosBuilder_ == null) {
          if (((bitField0_ & 0x00100000) != 0) &&
            storageos_ != null &&
            storageos_ != io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.getDefaultInstance()) {
            getStorageosBuilder().mergeFrom(value);
          } else {
            storageos_ = value;
          }
        } else {
          storageosBuilder_.mergeFrom(value);
        }
        if (storageos_ != null) {
          bitField0_ |= 0x00100000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
       * More info: https://examples.k8s.io/volumes/storageos/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
       */
      public Builder clearStorageos() {
        bitField0_ = (bitField0_ & ~0x00100000);
        storageos_ = null;
        if (storageosBuilder_ != null) {
          storageosBuilder_.dispose();
          storageosBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
       * More info: https://examples.k8s.io/volumes/storageos/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
       */
      public io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.Builder getStorageosBuilder() {
        bitField0_ |= 0x00100000;
        onChanged();
        return getStorageosFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
       * More info: https://examples.k8s.io/volumes/storageos/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
       */
      public io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSourceOrBuilder getStorageosOrBuilder() {
        if (storageosBuilder_ != null) {
          return storageosBuilder_.getMessageOrBuilder();
        } else {
          return storageos_ == null ?
              io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.getDefaultInstance() : storageos_;
        }
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
       * More info: https://examples.k8s.io/volumes/storageos/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSPersistentVolumeSource storageos = 21;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource, io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSourceOrBuilder> 
          getStorageosFieldBuilder() {
        if (storageosBuilder_ == null) {
          storageosBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource, io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSourceOrBuilder>(
                  getStorageos(),
                  getParentForChildren(),
                  isClean());
          storageos_ = null;
        }
        return storageosBuilder_;
      }

      private io.kubernetes.client.proto.V1.CSIPersistentVolumeSource csi_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CSIPersistentVolumeSource, io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.CSIPersistentVolumeSourceOrBuilder> csiBuilder_;
      /**
       * <pre>
       * csi represents storage that is handled by an external CSI driver (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
       * @return Whether the csi field is set.
       */
      public boolean hasCsi() {
        return ((bitField0_ & 0x00200000) != 0);
      }
      /**
       * <pre>
       * csi represents storage that is handled by an external CSI driver (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
       * @return The csi.
       */
      public io.kubernetes.client.proto.V1.CSIPersistentVolumeSource getCsi() {
        if (csiBuilder_ == null) {
          return csi_ == null ? io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.getDefaultInstance() : csi_;
        } else {
          return csiBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * csi represents storage that is handled by an external CSI driver (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
       */
      public Builder setCsi(io.kubernetes.client.proto.V1.CSIPersistentVolumeSource value) {
        if (csiBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          csi_ = value;
        } else {
          csiBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * csi represents storage that is handled by an external CSI driver (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
       */
      public Builder setCsi(
          io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.Builder builderForValue) {
        if (csiBuilder_ == null) {
          csi_ = builderForValue.build();
        } else {
          csiBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * csi represents storage that is handled by an external CSI driver (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
       */
      public Builder mergeCsi(io.kubernetes.client.proto.V1.CSIPersistentVolumeSource value) {
        if (csiBuilder_ == null) {
          if (((bitField0_ & 0x00200000) != 0) &&
            csi_ != null &&
            csi_ != io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.getDefaultInstance()) {
            getCsiBuilder().mergeFrom(value);
          } else {
            csi_ = value;
          }
        } else {
          csiBuilder_.mergeFrom(value);
        }
        if (csi_ != null) {
          bitField0_ |= 0x00200000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * csi represents storage that is handled by an external CSI driver (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
       */
      public Builder clearCsi() {
        bitField0_ = (bitField0_ & ~0x00200000);
        csi_ = null;
        if (csiBuilder_ != null) {
          csiBuilder_.dispose();
          csiBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * csi represents storage that is handled by an external CSI driver (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
       */
      public io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.Builder getCsiBuilder() {
        bitField0_ |= 0x00200000;
        onChanged();
        return getCsiFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * csi represents storage that is handled by an external CSI driver (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
       */
      public io.kubernetes.client.proto.V1.CSIPersistentVolumeSourceOrBuilder getCsiOrBuilder() {
        if (csiBuilder_ != null) {
          return csiBuilder_.getMessageOrBuilder();
        } else {
          return csi_ == null ?
              io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.getDefaultInstance() : csi_;
        }
      }
      /**
       * <pre>
       * csi represents storage that is handled by an external CSI driver (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIPersistentVolumeSource csi = 22;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CSIPersistentVolumeSource, io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.CSIPersistentVolumeSourceOrBuilder> 
          getCsiFieldBuilder() {
        if (csiBuilder_ == null) {
          csiBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.CSIPersistentVolumeSource, io.kubernetes.client.proto.V1.CSIPersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.CSIPersistentVolumeSourceOrBuilder>(
                  getCsi(),
                  getParentForChildren(),
                  isClean());
          csi_ = null;
        }
        return csiBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeSource)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeSource>() {
      @java.lang.Override
      public PersistentVolumeSource 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<PersistentVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * capacity is the description of the persistent volume's resources and capacity.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    int getCapacityCount();
    /**
     * <pre>
     * capacity is the description of the persistent volume's resources and capacity.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    boolean containsCapacity(
        java.lang.String key);
    /**
     * Use {@link #getCapacityMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getCapacity();
    /**
     * <pre>
     * capacity is the description of the persistent volume's resources and capacity.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getCapacityMap();
    /**
     * <pre>
     * capacity is the description of the persistent volume's resources and capacity.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getCapacityOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * capacity is the description of the persistent volume's resources and capacity.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getCapacityOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * persistentVolumeSource is the actual volume backing the persistent volume.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
     * @return Whether the persistentVolumeSource field is set.
     */
    boolean hasPersistentVolumeSource();
    /**
     * <pre>
     * persistentVolumeSource is the actual volume backing the persistent volume.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
     * @return The persistentVolumeSource.
     */
    io.kubernetes.client.proto.V1.PersistentVolumeSource getPersistentVolumeSource();
    /**
     * <pre>
     * persistentVolumeSource is the actual volume backing the persistent volume.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeSourceOrBuilder getPersistentVolumeSourceOrBuilder();

    /**
     * <pre>
     * accessModes contains all ways the volume can be mounted.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 3;</code>
     * @return A list containing the accessModes.
     */
    java.util.List<java.lang.String>
        getAccessModesList();
    /**
     * <pre>
     * accessModes contains all ways the volume can be mounted.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 3;</code>
     * @return The count of accessModes.
     */
    int getAccessModesCount();
    /**
     * <pre>
     * accessModes contains all ways the volume can be mounted.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 3;</code>
     * @param index The index of the element to return.
     * @return The accessModes at the given index.
     */
    java.lang.String getAccessModes(int index);
    /**
     * <pre>
     * accessModes contains all ways the volume can be mounted.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the accessModes at the given index.
     */
    com.google.protobuf.ByteString
        getAccessModesBytes(int index);

    /**
     * <pre>
     * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
     * Expected to be non-nil when bound.
     * claim.VolumeName is the authoritative bind between PV and PVC.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
     * +optional
     * +structType=granular
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
     * @return Whether the claimRef field is set.
     */
    boolean hasClaimRef();
    /**
     * <pre>
     * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
     * Expected to be non-nil when bound.
     * claim.VolumeName is the authoritative bind between PV and PVC.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
     * +optional
     * +structType=granular
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
     * @return The claimRef.
     */
    io.kubernetes.client.proto.V1.ObjectReference getClaimRef();
    /**
     * <pre>
     * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
     * Expected to be non-nil when bound.
     * claim.VolumeName is the authoritative bind between PV and PVC.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
     * +optional
     * +structType=granular
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getClaimRefOrBuilder();

    /**
     * <pre>
     * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
     * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
     * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
     * Recycle must be supported by the volume plugin underlying this PersistentVolume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
     * +optional
     * </pre>
     *
     * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
     * @return Whether the persistentVolumeReclaimPolicy field is set.
     */
    boolean hasPersistentVolumeReclaimPolicy();
    /**
     * <pre>
     * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
     * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
     * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
     * Recycle must be supported by the volume plugin underlying this PersistentVolume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
     * +optional
     * </pre>
     *
     * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
     * @return The persistentVolumeReclaimPolicy.
     */
    java.lang.String getPersistentVolumeReclaimPolicy();
    /**
     * <pre>
     * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
     * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
     * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
     * Recycle must be supported by the volume plugin underlying this PersistentVolume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
     * +optional
     * </pre>
     *
     * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
     * @return The bytes for persistentVolumeReclaimPolicy.
     */
    com.google.protobuf.ByteString
        getPersistentVolumeReclaimPolicyBytes();

    /**
     * <pre>
     * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
     * means that this volume does not belong to any StorageClass.
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 6;</code>
     * @return Whether the storageClassName field is set.
     */
    boolean hasStorageClassName();
    /**
     * <pre>
     * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
     * means that this volume does not belong to any StorageClass.
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 6;</code>
     * @return The storageClassName.
     */
    java.lang.String getStorageClassName();
    /**
     * <pre>
     * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
     * means that this volume does not belong to any StorageClass.
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 6;</code>
     * @return The bytes for storageClassName.
     */
    com.google.protobuf.ByteString
        getStorageClassNameBytes();

    /**
     * <pre>
     * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
     * simply fail if one is invalid.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string mountOptions = 7;</code>
     * @return A list containing the mountOptions.
     */
    java.util.List<java.lang.String>
        getMountOptionsList();
    /**
     * <pre>
     * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
     * simply fail if one is invalid.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string mountOptions = 7;</code>
     * @return The count of mountOptions.
     */
    int getMountOptionsCount();
    /**
     * <pre>
     * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
     * simply fail if one is invalid.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string mountOptions = 7;</code>
     * @param index The index of the element to return.
     * @return The mountOptions at the given index.
     */
    java.lang.String getMountOptions(int index);
    /**
     * <pre>
     * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
     * simply fail if one is invalid.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string mountOptions = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the mountOptions at the given index.
     */
    com.google.protobuf.ByteString
        getMountOptionsBytes(int index);

    /**
     * <pre>
     * volumeMode defines if a volume is intended to be used with a formatted filesystem
     * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 8;</code>
     * @return Whether the volumeMode field is set.
     */
    boolean hasVolumeMode();
    /**
     * <pre>
     * volumeMode defines if a volume is intended to be used with a formatted filesystem
     * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 8;</code>
     * @return The volumeMode.
     */
    java.lang.String getVolumeMode();
    /**
     * <pre>
     * volumeMode defines if a volume is intended to be used with a formatted filesystem
     * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 8;</code>
     * @return The bytes for volumeMode.
     */
    com.google.protobuf.ByteString
        getVolumeModeBytes();

    /**
     * <pre>
     * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
     * This field influences the scheduling of pods that use this volume.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
     * @return Whether the nodeAffinity field is set.
     */
    boolean hasNodeAffinity();
    /**
     * <pre>
     * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
     * This field influences the scheduling of pods that use this volume.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
     * @return The nodeAffinity.
     */
    io.kubernetes.client.proto.V1.VolumeNodeAffinity getNodeAffinity();
    /**
     * <pre>
     * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
     * This field influences the scheduling of pods that use this volume.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
     */
    io.kubernetes.client.proto.V1.VolumeNodeAffinityOrBuilder getNodeAffinityOrBuilder();

    /**
     * <pre>
     * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
     * is not allowed. When this field is not set, it indicates that this volume does not belong to any
     * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
     * after a volume has been updated successfully to a new class.
     * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
     * PersistentVolumeClaims during the binding process.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 10;</code>
     * @return Whether the volumeAttributesClassName field is set.
     */
    boolean hasVolumeAttributesClassName();
    /**
     * <pre>
     * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
     * is not allowed. When this field is not set, it indicates that this volume does not belong to any
     * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
     * after a volume has been updated successfully to a new class.
     * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
     * PersistentVolumeClaims during the binding process.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 10;</code>
     * @return The volumeAttributesClassName.
     */
    java.lang.String getVolumeAttributesClassName();
    /**
     * <pre>
     * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
     * is not allowed. When this field is not set, it indicates that this volume does not belong to any
     * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
     * after a volume has been updated successfully to a new class.
     * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
     * PersistentVolumeClaims during the binding process.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 10;</code>
     * @return The bytes for volumeAttributesClassName.
     */
    com.google.protobuf.ByteString
        getVolumeAttributesClassNameBytes();
  }
  /**
   * <pre>
   * PersistentVolumeSpec is the specification of a persistent volume.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeSpec}
   */
  public static final class PersistentVolumeSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeSpec)
      PersistentVolumeSpecOrBuilder {
  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= */ "",
        PersistentVolumeSpec.class.getName());
    }
    // Use PersistentVolumeSpec.newBuilder() to construct.
    private PersistentVolumeSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeSpec() {
      accessModes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      persistentVolumeReclaimPolicy_ = "";
      storageClassName_ = "";
      mountOptions_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      volumeMode_ = "";
      volumeAttributesClassName_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 1:
          return internalGetCapacity();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeSpec.class, io.kubernetes.client.proto.V1.PersistentVolumeSpec.Builder.class);
    }

    private int bitField0_;
    public static final int CAPACITY_FIELD_NUMBER = 1;
    private static final class CapacityDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_CapacityEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> capacity_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetCapacity() {
      if (capacity_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            CapacityDefaultEntryHolder.defaultEntry);
      }
      return capacity_;
    }
    public int getCapacityCount() {
      return internalGetCapacity().getMap().size();
    }
    /**
     * <pre>
     * capacity is the description of the persistent volume's resources and capacity.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    @java.lang.Override
    public boolean containsCapacity(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetCapacity().getMap().containsKey(key);
    }
    /**
     * Use {@link #getCapacityMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacity() {
      return getCapacityMap();
    }
    /**
     * <pre>
     * capacity is the description of the persistent volume's resources and capacity.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacityMap() {
      return internalGetCapacity().getMap();
    }
    /**
     * <pre>
     * capacity is the description of the persistent volume's resources and capacity.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getCapacityOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetCapacity().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * capacity is the description of the persistent volume's resources and capacity.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getCapacityOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetCapacity().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int PERSISTENTVOLUMESOURCE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.PersistentVolumeSource persistentVolumeSource_;
    /**
     * <pre>
     * persistentVolumeSource is the actual volume backing the persistent volume.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
     * @return Whether the persistentVolumeSource field is set.
     */
    @java.lang.Override
    public boolean hasPersistentVolumeSource() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * persistentVolumeSource is the actual volume backing the persistent volume.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
     * @return The persistentVolumeSource.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeSource getPersistentVolumeSource() {
      return persistentVolumeSource_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeSource.getDefaultInstance() : persistentVolumeSource_;
    }
    /**
     * <pre>
     * persistentVolumeSource is the actual volume backing the persistent volume.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeSourceOrBuilder getPersistentVolumeSourceOrBuilder() {
      return persistentVolumeSource_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeSource.getDefaultInstance() : persistentVolumeSource_;
    }

    public static final int ACCESSMODES_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList accessModes_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * accessModes contains all ways the volume can be mounted.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 3;</code>
     * @return A list containing the accessModes.
     */
    public com.google.protobuf.ProtocolStringList
        getAccessModesList() {
      return accessModes_;
    }
    /**
     * <pre>
     * accessModes contains all ways the volume can be mounted.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 3;</code>
     * @return The count of accessModes.
     */
    public int getAccessModesCount() {
      return accessModes_.size();
    }
    /**
     * <pre>
     * accessModes contains all ways the volume can be mounted.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 3;</code>
     * @param index The index of the element to return.
     * @return The accessModes at the given index.
     */
    public java.lang.String getAccessModes(int index) {
      return accessModes_.get(index);
    }
    /**
     * <pre>
     * accessModes contains all ways the volume can be mounted.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string accessModes = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the accessModes at the given index.
     */
    public com.google.protobuf.ByteString
        getAccessModesBytes(int index) {
      return accessModes_.getByteString(index);
    }

    public static final int CLAIMREF_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.V1.ObjectReference claimRef_;
    /**
     * <pre>
     * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
     * Expected to be non-nil when bound.
     * claim.VolumeName is the authoritative bind between PV and PVC.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
     * +optional
     * +structType=granular
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
     * @return Whether the claimRef field is set.
     */
    @java.lang.Override
    public boolean hasClaimRef() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
     * Expected to be non-nil when bound.
     * claim.VolumeName is the authoritative bind between PV and PVC.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
     * +optional
     * +structType=granular
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
     * @return The claimRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReference getClaimRef() {
      return claimRef_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : claimRef_;
    }
    /**
     * <pre>
     * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
     * Expected to be non-nil when bound.
     * claim.VolumeName is the authoritative bind between PV and PVC.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
     * +optional
     * +structType=granular
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getClaimRefOrBuilder() {
      return claimRef_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : claimRef_;
    }

    public static final int PERSISTENTVOLUMERECLAIMPOLICY_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object persistentVolumeReclaimPolicy_ = "";
    /**
     * <pre>
     * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
     * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
     * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
     * Recycle must be supported by the volume plugin underlying this PersistentVolume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
     * +optional
     * </pre>
     *
     * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
     * @return Whether the persistentVolumeReclaimPolicy field is set.
     */
    @java.lang.Override
    public boolean hasPersistentVolumeReclaimPolicy() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
     * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
     * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
     * Recycle must be supported by the volume plugin underlying this PersistentVolume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
     * +optional
     * </pre>
     *
     * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
     * @return The persistentVolumeReclaimPolicy.
     */
    @java.lang.Override
    public java.lang.String getPersistentVolumeReclaimPolicy() {
      java.lang.Object ref = persistentVolumeReclaimPolicy_;
      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()) {
          persistentVolumeReclaimPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
     * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
     * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
     * Recycle must be supported by the volume plugin underlying this PersistentVolume.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
     * +optional
     * </pre>
     *
     * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
     * @return The bytes for persistentVolumeReclaimPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPersistentVolumeReclaimPolicyBytes() {
      java.lang.Object ref = persistentVolumeReclaimPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        persistentVolumeReclaimPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STORAGECLASSNAME_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object storageClassName_ = "";
    /**
     * <pre>
     * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
     * means that this volume does not belong to any StorageClass.
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 6;</code>
     * @return Whether the storageClassName field is set.
     */
    @java.lang.Override
    public boolean hasStorageClassName() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
     * means that this volume does not belong to any StorageClass.
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 6;</code>
     * @return The storageClassName.
     */
    @java.lang.Override
    public java.lang.String getStorageClassName() {
      java.lang.Object ref = storageClassName_;
      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()) {
          storageClassName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
     * means that this volume does not belong to any StorageClass.
     * +optional
     * </pre>
     *
     * <code>optional string storageClassName = 6;</code>
     * @return The bytes for storageClassName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStorageClassNameBytes() {
      java.lang.Object ref = storageClassName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storageClassName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MOUNTOPTIONS_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList mountOptions_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
     * simply fail if one is invalid.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string mountOptions = 7;</code>
     * @return A list containing the mountOptions.
     */
    public com.google.protobuf.ProtocolStringList
        getMountOptionsList() {
      return mountOptions_;
    }
    /**
     * <pre>
     * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
     * simply fail if one is invalid.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string mountOptions = 7;</code>
     * @return The count of mountOptions.
     */
    public int getMountOptionsCount() {
      return mountOptions_.size();
    }
    /**
     * <pre>
     * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
     * simply fail if one is invalid.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string mountOptions = 7;</code>
     * @param index The index of the element to return.
     * @return The mountOptions at the given index.
     */
    public java.lang.String getMountOptions(int index) {
      return mountOptions_.get(index);
    }
    /**
     * <pre>
     * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
     * simply fail if one is invalid.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string mountOptions = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the mountOptions at the given index.
     */
    public com.google.protobuf.ByteString
        getMountOptionsBytes(int index) {
      return mountOptions_.getByteString(index);
    }

    public static final int VOLUMEMODE_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeMode_ = "";
    /**
     * <pre>
     * volumeMode defines if a volume is intended to be used with a formatted filesystem
     * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 8;</code>
     * @return Whether the volumeMode field is set.
     */
    @java.lang.Override
    public boolean hasVolumeMode() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * volumeMode defines if a volume is intended to be used with a formatted filesystem
     * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 8;</code>
     * @return The volumeMode.
     */
    @java.lang.Override
    public java.lang.String getVolumeMode() {
      java.lang.Object ref = volumeMode_;
      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()) {
          volumeMode_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeMode defines if a volume is intended to be used with a formatted filesystem
     * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
     * +optional
     * </pre>
     *
     * <code>optional string volumeMode = 8;</code>
     * @return The bytes for volumeMode.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeModeBytes() {
      java.lang.Object ref = volumeMode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeMode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NODEAFFINITY_FIELD_NUMBER = 9;
    private io.kubernetes.client.proto.V1.VolumeNodeAffinity nodeAffinity_;
    /**
     * <pre>
     * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
     * This field influences the scheduling of pods that use this volume.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
     * @return Whether the nodeAffinity field is set.
     */
    @java.lang.Override
    public boolean hasNodeAffinity() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
     * This field influences the scheduling of pods that use this volume.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
     * @return The nodeAffinity.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeNodeAffinity getNodeAffinity() {
      return nodeAffinity_ == null ? io.kubernetes.client.proto.V1.VolumeNodeAffinity.getDefaultInstance() : nodeAffinity_;
    }
    /**
     * <pre>
     * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
     * This field influences the scheduling of pods that use this volume.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeNodeAffinityOrBuilder getNodeAffinityOrBuilder() {
      return nodeAffinity_ == null ? io.kubernetes.client.proto.V1.VolumeNodeAffinity.getDefaultInstance() : nodeAffinity_;
    }

    public static final int VOLUMEATTRIBUTESCLASSNAME_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeAttributesClassName_ = "";
    /**
     * <pre>
     * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
     * is not allowed. When this field is not set, it indicates that this volume does not belong to any
     * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
     * after a volume has been updated successfully to a new class.
     * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
     * PersistentVolumeClaims during the binding process.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 10;</code>
     * @return Whether the volumeAttributesClassName field is set.
     */
    @java.lang.Override
    public boolean hasVolumeAttributesClassName() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
     * is not allowed. When this field is not set, it indicates that this volume does not belong to any
     * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
     * after a volume has been updated successfully to a new class.
     * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
     * PersistentVolumeClaims during the binding process.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 10;</code>
     * @return The volumeAttributesClassName.
     */
    @java.lang.Override
    public java.lang.String getVolumeAttributesClassName() {
      java.lang.Object ref = volumeAttributesClassName_;
      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()) {
          volumeAttributesClassName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
     * is not allowed. When this field is not set, it indicates that this volume does not belong to any
     * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
     * after a volume has been updated successfully to a new class.
     * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
     * PersistentVolumeClaims during the binding process.
     * This is an alpha field and requires enabling VolumeAttributesClass feature.
     * +featureGate=VolumeAttributesClass
     * +optional
     * </pre>
     *
     * <code>optional string volumeAttributesClassName = 10;</code>
     * @return The bytes for volumeAttributesClassName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeAttributesClassNameBytes() {
      java.lang.Object ref = volumeAttributesClassName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeAttributesClassName_ = 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 {
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetCapacity(),
          CapacityDefaultEntryHolder.defaultEntry,
          1);
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(2, getPersistentVolumeSource());
      }
      for (int i = 0; i < accessModes_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, accessModes_.getRaw(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(4, getClaimRef());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, persistentVolumeReclaimPolicy_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, storageClassName_);
      }
      for (int i = 0; i < mountOptions_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, mountOptions_.getRaw(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, volumeMode_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(9, getNodeAffinity());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 10, volumeAttributesClassName_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetCapacity().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        capacity__ = CapacityDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, capacity__);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPersistentVolumeSource());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < accessModes_.size(); i++) {
          dataSize += computeStringSizeNoTag(accessModes_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAccessModesList().size();
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getClaimRef());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, persistentVolumeReclaimPolicy_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, storageClassName_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < mountOptions_.size(); i++) {
          dataSize += computeStringSizeNoTag(mountOptions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getMountOptionsList().size();
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(8, volumeMode_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getNodeAffinity());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(10, volumeAttributesClassName_);
      }
      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.V1.PersistentVolumeSpec)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeSpec other = (io.kubernetes.client.proto.V1.PersistentVolumeSpec) obj;

      if (!internalGetCapacity().equals(
          other.internalGetCapacity())) return false;
      if (hasPersistentVolumeSource() != other.hasPersistentVolumeSource()) return false;
      if (hasPersistentVolumeSource()) {
        if (!getPersistentVolumeSource()
            .equals(other.getPersistentVolumeSource())) return false;
      }
      if (!getAccessModesList()
          .equals(other.getAccessModesList())) return false;
      if (hasClaimRef() != other.hasClaimRef()) return false;
      if (hasClaimRef()) {
        if (!getClaimRef()
            .equals(other.getClaimRef())) return false;
      }
      if (hasPersistentVolumeReclaimPolicy() != other.hasPersistentVolumeReclaimPolicy()) return false;
      if (hasPersistentVolumeReclaimPolicy()) {
        if (!getPersistentVolumeReclaimPolicy()
            .equals(other.getPersistentVolumeReclaimPolicy())) return false;
      }
      if (hasStorageClassName() != other.hasStorageClassName()) return false;
      if (hasStorageClassName()) {
        if (!getStorageClassName()
            .equals(other.getStorageClassName())) return false;
      }
      if (!getMountOptionsList()
          .equals(other.getMountOptionsList())) return false;
      if (hasVolumeMode() != other.hasVolumeMode()) return false;
      if (hasVolumeMode()) {
        if (!getVolumeMode()
            .equals(other.getVolumeMode())) return false;
      }
      if (hasNodeAffinity() != other.hasNodeAffinity()) return false;
      if (hasNodeAffinity()) {
        if (!getNodeAffinity()
            .equals(other.getNodeAffinity())) return false;
      }
      if (hasVolumeAttributesClassName() != other.hasVolumeAttributesClassName()) return false;
      if (hasVolumeAttributesClassName()) {
        if (!getVolumeAttributesClassName()
            .equals(other.getVolumeAttributesClassName())) 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 (!internalGetCapacity().getMap().isEmpty()) {
        hash = (37 * hash) + CAPACITY_FIELD_NUMBER;
        hash = (53 * hash) + internalGetCapacity().hashCode();
      }
      if (hasPersistentVolumeSource()) {
        hash = (37 * hash) + PERSISTENTVOLUMESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getPersistentVolumeSource().hashCode();
      }
      if (getAccessModesCount() > 0) {
        hash = (37 * hash) + ACCESSMODES_FIELD_NUMBER;
        hash = (53 * hash) + getAccessModesList().hashCode();
      }
      if (hasClaimRef()) {
        hash = (37 * hash) + CLAIMREF_FIELD_NUMBER;
        hash = (53 * hash) + getClaimRef().hashCode();
      }
      if (hasPersistentVolumeReclaimPolicy()) {
        hash = (37 * hash) + PERSISTENTVOLUMERECLAIMPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getPersistentVolumeReclaimPolicy().hashCode();
      }
      if (hasStorageClassName()) {
        hash = (37 * hash) + STORAGECLASSNAME_FIELD_NUMBER;
        hash = (53 * hash) + getStorageClassName().hashCode();
      }
      if (getMountOptionsCount() > 0) {
        hash = (37 * hash) + MOUNTOPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getMountOptionsList().hashCode();
      }
      if (hasVolumeMode()) {
        hash = (37 * hash) + VOLUMEMODE_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeMode().hashCode();
      }
      if (hasNodeAffinity()) {
        hash = (37 * hash) + NODEAFFINITY_FIELD_NUMBER;
        hash = (53 * hash) + getNodeAffinity().hashCode();
      }
      if (hasVolumeAttributesClassName()) {
        hash = (37 * hash) + VOLUMEATTRIBUTESCLASSNAME_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeAttributesClassName().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSpec 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.V1.PersistentVolumeSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSpec 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.V1.PersistentVolumeSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSpec 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.V1.PersistentVolumeSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeSpec 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.V1.PersistentVolumeSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeSpec 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.V1.PersistentVolumeSpec 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>
     * PersistentVolumeSpec is the specification of a persistent volume.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeSpec)
        io.kubernetes.client.proto.V1.PersistentVolumeSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetCapacity();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableCapacity();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeSpec.class, io.kubernetes.client.proto.V1.PersistentVolumeSpec.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeSpec.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPersistentVolumeSourceFieldBuilder();
          getClaimRefFieldBuilder();
          getNodeAffinityFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableCapacity().clear();
        persistentVolumeSource_ = null;
        if (persistentVolumeSourceBuilder_ != null) {
          persistentVolumeSourceBuilder_.dispose();
          persistentVolumeSourceBuilder_ = null;
        }
        accessModes_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        claimRef_ = null;
        if (claimRefBuilder_ != null) {
          claimRefBuilder_.dispose();
          claimRefBuilder_ = null;
        }
        persistentVolumeReclaimPolicy_ = "";
        storageClassName_ = "";
        mountOptions_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        volumeMode_ = "";
        nodeAffinity_ = null;
        if (nodeAffinityBuilder_ != null) {
          nodeAffinityBuilder_.dispose();
          nodeAffinityBuilder_ = null;
        }
        volumeAttributesClassName_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeSpec build() {
        io.kubernetes.client.proto.V1.PersistentVolumeSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeSpec buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeSpec result = new io.kubernetes.client.proto.V1.PersistentVolumeSpec(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PersistentVolumeSpec result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.capacity_ = internalGetCapacity().build(CapacityDefaultEntryHolder.defaultEntry);
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.persistentVolumeSource_ = persistentVolumeSourceBuilder_ == null
              ? persistentVolumeSource_
              : persistentVolumeSourceBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          accessModes_.makeImmutable();
          result.accessModes_ = accessModes_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.claimRef_ = claimRefBuilder_ == null
              ? claimRef_
              : claimRefBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.persistentVolumeReclaimPolicy_ = persistentVolumeReclaimPolicy_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.storageClassName_ = storageClassName_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          mountOptions_.makeImmutable();
          result.mountOptions_ = mountOptions_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.volumeMode_ = volumeMode_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.nodeAffinity_ = nodeAffinityBuilder_ == null
              ? nodeAffinity_
              : nodeAffinityBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.volumeAttributesClassName_ = volumeAttributesClassName_;
          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.V1.PersistentVolumeSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeSpec other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeSpec.getDefaultInstance()) return this;
        internalGetMutableCapacity().mergeFrom(
            other.internalGetCapacity());
        bitField0_ |= 0x00000001;
        if (other.hasPersistentVolumeSource()) {
          mergePersistentVolumeSource(other.getPersistentVolumeSource());
        }
        if (!other.accessModes_.isEmpty()) {
          if (accessModes_.isEmpty()) {
            accessModes_ = other.accessModes_;
            bitField0_ |= 0x00000004;
          } else {
            ensureAccessModesIsMutable();
            accessModes_.addAll(other.accessModes_);
          }
          onChanged();
        }
        if (other.hasClaimRef()) {
          mergeClaimRef(other.getClaimRef());
        }
        if (other.hasPersistentVolumeReclaimPolicy()) {
          persistentVolumeReclaimPolicy_ = other.persistentVolumeReclaimPolicy_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasStorageClassName()) {
          storageClassName_ = other.storageClassName_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (!other.mountOptions_.isEmpty()) {
          if (mountOptions_.isEmpty()) {
            mountOptions_ = other.mountOptions_;
            bitField0_ |= 0x00000040;
          } else {
            ensureMountOptionsIsMutable();
            mountOptions_.addAll(other.mountOptions_);
          }
          onChanged();
        }
        if (other.hasVolumeMode()) {
          volumeMode_ = other.volumeMode_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (other.hasNodeAffinity()) {
          mergeNodeAffinity(other.getNodeAffinity());
        }
        if (other.hasVolumeAttributesClassName()) {
          volumeAttributesClassName_ = other.volumeAttributesClassName_;
          bitField0_ |= 0x00000200;
          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: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                capacity__ = input.readMessage(
                    CapacityDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableCapacity().ensureBuilderMap().put(
                    capacity__.getKey(), capacity__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getPersistentVolumeSourceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureAccessModesIsMutable();
                accessModes_.add(bs);
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getClaimRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                persistentVolumeReclaimPolicy_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                storageClassName_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureMountOptionsIsMutable();
                mountOptions_.add(bs);
                break;
              } // case 58
              case 66: {
                volumeMode_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getNodeAffinityFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                volumeAttributesClassName_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              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 static final class CapacityConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return CapacityDefaultEntryHolder.defaultEntry;
        }
      };
      private static final CapacityConverter capacityConverter = new CapacityConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> capacity_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetCapacity() {
        if (capacity_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(capacityConverter);
        }
        return capacity_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableCapacity() {
        if (capacity_ == null) {
          capacity_ = new com.google.protobuf.MapFieldBuilder<>(capacityConverter);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return capacity_;
      }
      public int getCapacityCount() {
        return internalGetCapacity().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * capacity is the description of the persistent volume's resources and capacity.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      @java.lang.Override
      public boolean containsCapacity(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetCapacity().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getCapacityMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacity() {
        return getCapacityMap();
      }
      /**
       * <pre>
       * capacity is the description of the persistent volume's resources and capacity.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getCapacityMap() {
        return internalGetCapacity().getImmutableMap();
      }
      /**
       * <pre>
       * capacity is the description of the persistent volume's resources and capacity.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getCapacityOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableCapacity().ensureBuilderMap();
        return map.containsKey(key) ? capacityConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * capacity is the description of the persistent volume's resources and capacity.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getCapacityOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableCapacity().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return capacityConverter.build(map.get(key));
      }
      public Builder clearCapacity() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableCapacity().clear();
        return this;
      }
      /**
       * <pre>
       * capacity is the description of the persistent volume's resources and capacity.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      public Builder removeCapacity(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableCapacity().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableCapacity() {
        bitField0_ |= 0x00000001;
        return internalGetMutableCapacity().ensureMessageMap();
      }
      /**
       * <pre>
       * capacity is the description of the persistent volume's resources and capacity.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      public Builder putCapacity(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableCapacity().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * capacity is the description of the persistent volume's resources and capacity.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      public Builder putAllCapacity(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableCapacity().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * capacity is the description of the persistent volume's resources and capacity.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; capacity = 1;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putCapacityBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableCapacity().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private io.kubernetes.client.proto.V1.PersistentVolumeSource persistentVolumeSource_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeSource, io.kubernetes.client.proto.V1.PersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.PersistentVolumeSourceOrBuilder> persistentVolumeSourceBuilder_;
      /**
       * <pre>
       * persistentVolumeSource is the actual volume backing the persistent volume.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
       * @return Whether the persistentVolumeSource field is set.
       */
      public boolean hasPersistentVolumeSource() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * persistentVolumeSource is the actual volume backing the persistent volume.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
       * @return The persistentVolumeSource.
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeSource getPersistentVolumeSource() {
        if (persistentVolumeSourceBuilder_ == null) {
          return persistentVolumeSource_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeSource.getDefaultInstance() : persistentVolumeSource_;
        } else {
          return persistentVolumeSourceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * persistentVolumeSource is the actual volume backing the persistent volume.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
       */
      public Builder setPersistentVolumeSource(io.kubernetes.client.proto.V1.PersistentVolumeSource value) {
        if (persistentVolumeSourceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          persistentVolumeSource_ = value;
        } else {
          persistentVolumeSourceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persistentVolumeSource is the actual volume backing the persistent volume.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
       */
      public Builder setPersistentVolumeSource(
          io.kubernetes.client.proto.V1.PersistentVolumeSource.Builder builderForValue) {
        if (persistentVolumeSourceBuilder_ == null) {
          persistentVolumeSource_ = builderForValue.build();
        } else {
          persistentVolumeSourceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persistentVolumeSource is the actual volume backing the persistent volume.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
       */
      public Builder mergePersistentVolumeSource(io.kubernetes.client.proto.V1.PersistentVolumeSource value) {
        if (persistentVolumeSourceBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            persistentVolumeSource_ != null &&
            persistentVolumeSource_ != io.kubernetes.client.proto.V1.PersistentVolumeSource.getDefaultInstance()) {
            getPersistentVolumeSourceBuilder().mergeFrom(value);
          } else {
            persistentVolumeSource_ = value;
          }
        } else {
          persistentVolumeSourceBuilder_.mergeFrom(value);
        }
        if (persistentVolumeSource_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * persistentVolumeSource is the actual volume backing the persistent volume.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
       */
      public Builder clearPersistentVolumeSource() {
        bitField0_ = (bitField0_ & ~0x00000002);
        persistentVolumeSource_ = null;
        if (persistentVolumeSourceBuilder_ != null) {
          persistentVolumeSourceBuilder_.dispose();
          persistentVolumeSourceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persistentVolumeSource is the actual volume backing the persistent volume.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeSource.Builder getPersistentVolumeSourceBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPersistentVolumeSourceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * persistentVolumeSource is the actual volume backing the persistent volume.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeSourceOrBuilder getPersistentVolumeSourceOrBuilder() {
        if (persistentVolumeSourceBuilder_ != null) {
          return persistentVolumeSourceBuilder_.getMessageOrBuilder();
        } else {
          return persistentVolumeSource_ == null ?
              io.kubernetes.client.proto.V1.PersistentVolumeSource.getDefaultInstance() : persistentVolumeSource_;
        }
      }
      /**
       * <pre>
       * persistentVolumeSource is the actual volume backing the persistent volume.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeSource persistentVolumeSource = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeSource, io.kubernetes.client.proto.V1.PersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.PersistentVolumeSourceOrBuilder> 
          getPersistentVolumeSourceFieldBuilder() {
        if (persistentVolumeSourceBuilder_ == null) {
          persistentVolumeSourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolumeSource, io.kubernetes.client.proto.V1.PersistentVolumeSource.Builder, io.kubernetes.client.proto.V1.PersistentVolumeSourceOrBuilder>(
                  getPersistentVolumeSource(),
                  getParentForChildren(),
                  isClean());
          persistentVolumeSource_ = null;
        }
        return persistentVolumeSourceBuilder_;
      }

      private com.google.protobuf.LazyStringArrayList accessModes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureAccessModesIsMutable() {
        if (!accessModes_.isModifiable()) {
          accessModes_ = new com.google.protobuf.LazyStringArrayList(accessModes_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <pre>
       * accessModes contains all ways the volume can be mounted.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 3;</code>
       * @return A list containing the accessModes.
       */
      public com.google.protobuf.ProtocolStringList
          getAccessModesList() {
        accessModes_.makeImmutable();
        return accessModes_;
      }
      /**
       * <pre>
       * accessModes contains all ways the volume can be mounted.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 3;</code>
       * @return The count of accessModes.
       */
      public int getAccessModesCount() {
        return accessModes_.size();
      }
      /**
       * <pre>
       * accessModes contains all ways the volume can be mounted.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 3;</code>
       * @param index The index of the element to return.
       * @return The accessModes at the given index.
       */
      public java.lang.String getAccessModes(int index) {
        return accessModes_.get(index);
      }
      /**
       * <pre>
       * accessModes contains all ways the volume can be mounted.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the accessModes at the given index.
       */
      public com.google.protobuf.ByteString
          getAccessModesBytes(int index) {
        return accessModes_.getByteString(index);
      }
      /**
       * <pre>
       * accessModes contains all ways the volume can be mounted.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 3;</code>
       * @param index The index to set the value at.
       * @param value The accessModes to set.
       * @return This builder for chaining.
       */
      public Builder setAccessModes(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAccessModesIsMutable();
        accessModes_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains all ways the volume can be mounted.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 3;</code>
       * @param value The accessModes to add.
       * @return This builder for chaining.
       */
      public Builder addAccessModes(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAccessModesIsMutable();
        accessModes_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains all ways the volume can be mounted.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 3;</code>
       * @param values The accessModes to add.
       * @return This builder for chaining.
       */
      public Builder addAllAccessModes(
          java.lang.Iterable<java.lang.String> values) {
        ensureAccessModesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, accessModes_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains all ways the volume can be mounted.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccessModes() {
        accessModes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * accessModes contains all ways the volume can be mounted.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string accessModes = 3;</code>
       * @param value The bytes of the accessModes to add.
       * @return This builder for chaining.
       */
      public Builder addAccessModesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAccessModesIsMutable();
        accessModes_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.ObjectReference claimRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> claimRefBuilder_;
      /**
       * <pre>
       * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
       * Expected to be non-nil when bound.
       * claim.VolumeName is the authoritative bind between PV and PVC.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
       * +optional
       * +structType=granular
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
       * @return Whether the claimRef field is set.
       */
      public boolean hasClaimRef() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
       * Expected to be non-nil when bound.
       * claim.VolumeName is the authoritative bind between PV and PVC.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
       * +optional
       * +structType=granular
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
       * @return The claimRef.
       */
      public io.kubernetes.client.proto.V1.ObjectReference getClaimRef() {
        if (claimRefBuilder_ == null) {
          return claimRef_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : claimRef_;
        } else {
          return claimRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
       * Expected to be non-nil when bound.
       * claim.VolumeName is the authoritative bind between PV and PVC.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
       * +optional
       * +structType=granular
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
       */
      public Builder setClaimRef(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (claimRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          claimRef_ = value;
        } else {
          claimRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
       * Expected to be non-nil when bound.
       * claim.VolumeName is the authoritative bind between PV and PVC.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
       * +optional
       * +structType=granular
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
       */
      public Builder setClaimRef(
          io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (claimRefBuilder_ == null) {
          claimRef_ = builderForValue.build();
        } else {
          claimRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
       * Expected to be non-nil when bound.
       * claim.VolumeName is the authoritative bind between PV and PVC.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
       * +optional
       * +structType=granular
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
       */
      public Builder mergeClaimRef(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (claimRefBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            claimRef_ != null &&
            claimRef_ != io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance()) {
            getClaimRefBuilder().mergeFrom(value);
          } else {
            claimRef_ = value;
          }
        } else {
          claimRefBuilder_.mergeFrom(value);
        }
        if (claimRef_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
       * Expected to be non-nil when bound.
       * claim.VolumeName is the authoritative bind between PV and PVC.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
       * +optional
       * +structType=granular
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
       */
      public Builder clearClaimRef() {
        bitField0_ = (bitField0_ & ~0x00000008);
        claimRef_ = null;
        if (claimRefBuilder_ != null) {
          claimRefBuilder_.dispose();
          claimRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
       * Expected to be non-nil when bound.
       * claim.VolumeName is the authoritative bind between PV and PVC.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
       * +optional
       * +structType=granular
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder getClaimRefBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getClaimRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
       * Expected to be non-nil when bound.
       * claim.VolumeName is the authoritative bind between PV and PVC.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
       * +optional
       * +structType=granular
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getClaimRefOrBuilder() {
        if (claimRefBuilder_ != null) {
          return claimRefBuilder_.getMessageOrBuilder();
        } else {
          return claimRef_ == null ?
              io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : claimRef_;
        }
      }
      /**
       * <pre>
       * claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
       * Expected to be non-nil when bound.
       * claim.VolumeName is the authoritative bind between PV and PVC.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
       * +optional
       * +structType=granular
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference claimRef = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
          getClaimRefFieldBuilder() {
        if (claimRefBuilder_ == null) {
          claimRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder>(
                  getClaimRef(),
                  getParentForChildren(),
                  isClean());
          claimRef_ = null;
        }
        return claimRefBuilder_;
      }

      private java.lang.Object persistentVolumeReclaimPolicy_ = "";
      /**
       * <pre>
       * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
       * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
       * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
       * Recycle must be supported by the volume plugin underlying this PersistentVolume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
       * +optional
       * </pre>
       *
       * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
       * @return Whether the persistentVolumeReclaimPolicy field is set.
       */
      public boolean hasPersistentVolumeReclaimPolicy() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
       * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
       * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
       * Recycle must be supported by the volume plugin underlying this PersistentVolume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
       * +optional
       * </pre>
       *
       * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
       * @return The persistentVolumeReclaimPolicy.
       */
      public java.lang.String getPersistentVolumeReclaimPolicy() {
        java.lang.Object ref = persistentVolumeReclaimPolicy_;
        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()) {
            persistentVolumeReclaimPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
       * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
       * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
       * Recycle must be supported by the volume plugin underlying this PersistentVolume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
       * +optional
       * </pre>
       *
       * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
       * @return The bytes for persistentVolumeReclaimPolicy.
       */
      public com.google.protobuf.ByteString
          getPersistentVolumeReclaimPolicyBytes() {
        java.lang.Object ref = persistentVolumeReclaimPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          persistentVolumeReclaimPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
       * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
       * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
       * Recycle must be supported by the volume plugin underlying this PersistentVolume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
       * +optional
       * </pre>
       *
       * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
       * @param value The persistentVolumeReclaimPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setPersistentVolumeReclaimPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        persistentVolumeReclaimPolicy_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
       * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
       * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
       * Recycle must be supported by the volume plugin underlying this PersistentVolume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
       * +optional
       * </pre>
       *
       * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearPersistentVolumeReclaimPolicy() {
        persistentVolumeReclaimPolicy_ = getDefaultInstance().getPersistentVolumeReclaimPolicy();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim.
       * Valid options are Retain (default for manually created PersistentVolumes), Delete (default
       * for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
       * Recycle must be supported by the volume plugin underlying this PersistentVolume.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
       * +optional
       * </pre>
       *
       * <code>optional string persistentVolumeReclaimPolicy = 5;</code>
       * @param value The bytes for persistentVolumeReclaimPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setPersistentVolumeReclaimPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        persistentVolumeReclaimPolicy_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object storageClassName_ = "";
      /**
       * <pre>
       * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
       * means that this volume does not belong to any StorageClass.
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 6;</code>
       * @return Whether the storageClassName field is set.
       */
      public boolean hasStorageClassName() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
       * means that this volume does not belong to any StorageClass.
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 6;</code>
       * @return The storageClassName.
       */
      public java.lang.String getStorageClassName() {
        java.lang.Object ref = storageClassName_;
        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()) {
            storageClassName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
       * means that this volume does not belong to any StorageClass.
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 6;</code>
       * @return The bytes for storageClassName.
       */
      public com.google.protobuf.ByteString
          getStorageClassNameBytes() {
        java.lang.Object ref = storageClassName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storageClassName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
       * means that this volume does not belong to any StorageClass.
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 6;</code>
       * @param value The storageClassName to set.
       * @return This builder for chaining.
       */
      public Builder setStorageClassName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        storageClassName_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
       * means that this volume does not belong to any StorageClass.
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearStorageClassName() {
        storageClassName_ = getDefaultInstance().getStorageClassName();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value
       * means that this volume does not belong to any StorageClass.
       * +optional
       * </pre>
       *
       * <code>optional string storageClassName = 6;</code>
       * @param value The bytes for storageClassName to set.
       * @return This builder for chaining.
       */
      public Builder setStorageClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        storageClassName_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList mountOptions_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureMountOptionsIsMutable() {
        if (!mountOptions_.isModifiable()) {
          mountOptions_ = new com.google.protobuf.LazyStringArrayList(mountOptions_);
        }
        bitField0_ |= 0x00000040;
      }
      /**
       * <pre>
       * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
       * simply fail if one is invalid.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string mountOptions = 7;</code>
       * @return A list containing the mountOptions.
       */
      public com.google.protobuf.ProtocolStringList
          getMountOptionsList() {
        mountOptions_.makeImmutable();
        return mountOptions_;
      }
      /**
       * <pre>
       * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
       * simply fail if one is invalid.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string mountOptions = 7;</code>
       * @return The count of mountOptions.
       */
      public int getMountOptionsCount() {
        return mountOptions_.size();
      }
      /**
       * <pre>
       * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
       * simply fail if one is invalid.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string mountOptions = 7;</code>
       * @param index The index of the element to return.
       * @return The mountOptions at the given index.
       */
      public java.lang.String getMountOptions(int index) {
        return mountOptions_.get(index);
      }
      /**
       * <pre>
       * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
       * simply fail if one is invalid.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string mountOptions = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the mountOptions at the given index.
       */
      public com.google.protobuf.ByteString
          getMountOptionsBytes(int index) {
        return mountOptions_.getByteString(index);
      }
      /**
       * <pre>
       * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
       * simply fail if one is invalid.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string mountOptions = 7;</code>
       * @param index The index to set the value at.
       * @param value The mountOptions to set.
       * @return This builder for chaining.
       */
      public Builder setMountOptions(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMountOptionsIsMutable();
        mountOptions_.set(index, value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
       * simply fail if one is invalid.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string mountOptions = 7;</code>
       * @param value The mountOptions to add.
       * @return This builder for chaining.
       */
      public Builder addMountOptions(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMountOptionsIsMutable();
        mountOptions_.add(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
       * simply fail if one is invalid.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string mountOptions = 7;</code>
       * @param values The mountOptions to add.
       * @return This builder for chaining.
       */
      public Builder addAllMountOptions(
          java.lang.Iterable<java.lang.String> values) {
        ensureMountOptionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, mountOptions_);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
       * simply fail if one is invalid.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string mountOptions = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearMountOptions() {
        mountOptions_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
       * simply fail if one is invalid.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string mountOptions = 7;</code>
       * @param value The bytes of the mountOptions to add.
       * @return This builder for chaining.
       */
      public Builder addMountOptionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMountOptionsIsMutable();
        mountOptions_.add(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object volumeMode_ = "";
      /**
       * <pre>
       * volumeMode defines if a volume is intended to be used with a formatted filesystem
       * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 8;</code>
       * @return Whether the volumeMode field is set.
       */
      public boolean hasVolumeMode() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * volumeMode defines if a volume is intended to be used with a formatted filesystem
       * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 8;</code>
       * @return The volumeMode.
       */
      public java.lang.String getVolumeMode() {
        java.lang.Object ref = volumeMode_;
        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()) {
            volumeMode_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeMode defines if a volume is intended to be used with a formatted filesystem
       * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 8;</code>
       * @return The bytes for volumeMode.
       */
      public com.google.protobuf.ByteString
          getVolumeModeBytes() {
        java.lang.Object ref = volumeMode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeMode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeMode defines if a volume is intended to be used with a formatted filesystem
       * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 8;</code>
       * @param value The volumeMode to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeMode(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeMode_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeMode defines if a volume is intended to be used with a formatted filesystem
       * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeMode() {
        volumeMode_ = getDefaultInstance().getVolumeMode();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeMode defines if a volume is intended to be used with a formatted filesystem
       * or to remain in raw block state. Value of Filesystem is implied when not included in spec.
       * +optional
       * </pre>
       *
       * <code>optional string volumeMode = 8;</code>
       * @param value The bytes for volumeMode to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeModeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeMode_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.VolumeNodeAffinity nodeAffinity_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeNodeAffinity, io.kubernetes.client.proto.V1.VolumeNodeAffinity.Builder, io.kubernetes.client.proto.V1.VolumeNodeAffinityOrBuilder> nodeAffinityBuilder_;
      /**
       * <pre>
       * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
       * This field influences the scheduling of pods that use this volume.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
       * @return Whether the nodeAffinity field is set.
       */
      public boolean hasNodeAffinity() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
       * This field influences the scheduling of pods that use this volume.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
       * @return The nodeAffinity.
       */
      public io.kubernetes.client.proto.V1.VolumeNodeAffinity getNodeAffinity() {
        if (nodeAffinityBuilder_ == null) {
          return nodeAffinity_ == null ? io.kubernetes.client.proto.V1.VolumeNodeAffinity.getDefaultInstance() : nodeAffinity_;
        } else {
          return nodeAffinityBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
       * This field influences the scheduling of pods that use this volume.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
       */
      public Builder setNodeAffinity(io.kubernetes.client.proto.V1.VolumeNodeAffinity value) {
        if (nodeAffinityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nodeAffinity_ = value;
        } else {
          nodeAffinityBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
       * This field influences the scheduling of pods that use this volume.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
       */
      public Builder setNodeAffinity(
          io.kubernetes.client.proto.V1.VolumeNodeAffinity.Builder builderForValue) {
        if (nodeAffinityBuilder_ == null) {
          nodeAffinity_ = builderForValue.build();
        } else {
          nodeAffinityBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
       * This field influences the scheduling of pods that use this volume.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
       */
      public Builder mergeNodeAffinity(io.kubernetes.client.proto.V1.VolumeNodeAffinity value) {
        if (nodeAffinityBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
            nodeAffinity_ != null &&
            nodeAffinity_ != io.kubernetes.client.proto.V1.VolumeNodeAffinity.getDefaultInstance()) {
            getNodeAffinityBuilder().mergeFrom(value);
          } else {
            nodeAffinity_ = value;
          }
        } else {
          nodeAffinityBuilder_.mergeFrom(value);
        }
        if (nodeAffinity_ != null) {
          bitField0_ |= 0x00000100;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
       * This field influences the scheduling of pods that use this volume.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
       */
      public Builder clearNodeAffinity() {
        bitField0_ = (bitField0_ & ~0x00000100);
        nodeAffinity_ = null;
        if (nodeAffinityBuilder_ != null) {
          nodeAffinityBuilder_.dispose();
          nodeAffinityBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
       * This field influences the scheduling of pods that use this volume.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeNodeAffinity.Builder getNodeAffinityBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getNodeAffinityFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
       * This field influences the scheduling of pods that use this volume.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeNodeAffinityOrBuilder getNodeAffinityOrBuilder() {
        if (nodeAffinityBuilder_ != null) {
          return nodeAffinityBuilder_.getMessageOrBuilder();
        } else {
          return nodeAffinity_ == null ?
              io.kubernetes.client.proto.V1.VolumeNodeAffinity.getDefaultInstance() : nodeAffinity_;
        }
      }
      /**
       * <pre>
       * nodeAffinity defines constraints that limit what nodes this volume can be accessed from.
       * This field influences the scheduling of pods that use this volume.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeNodeAffinity nodeAffinity = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeNodeAffinity, io.kubernetes.client.proto.V1.VolumeNodeAffinity.Builder, io.kubernetes.client.proto.V1.VolumeNodeAffinityOrBuilder> 
          getNodeAffinityFieldBuilder() {
        if (nodeAffinityBuilder_ == null) {
          nodeAffinityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.VolumeNodeAffinity, io.kubernetes.client.proto.V1.VolumeNodeAffinity.Builder, io.kubernetes.client.proto.V1.VolumeNodeAffinityOrBuilder>(
                  getNodeAffinity(),
                  getParentForChildren(),
                  isClean());
          nodeAffinity_ = null;
        }
        return nodeAffinityBuilder_;
      }

      private java.lang.Object volumeAttributesClassName_ = "";
      /**
       * <pre>
       * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
       * is not allowed. When this field is not set, it indicates that this volume does not belong to any
       * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
       * after a volume has been updated successfully to a new class.
       * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
       * PersistentVolumeClaims during the binding process.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 10;</code>
       * @return Whether the volumeAttributesClassName field is set.
       */
      public boolean hasVolumeAttributesClassName() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
       * is not allowed. When this field is not set, it indicates that this volume does not belong to any
       * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
       * after a volume has been updated successfully to a new class.
       * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
       * PersistentVolumeClaims during the binding process.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 10;</code>
       * @return The volumeAttributesClassName.
       */
      public java.lang.String getVolumeAttributesClassName() {
        java.lang.Object ref = volumeAttributesClassName_;
        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()) {
            volumeAttributesClassName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
       * is not allowed. When this field is not set, it indicates that this volume does not belong to any
       * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
       * after a volume has been updated successfully to a new class.
       * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
       * PersistentVolumeClaims during the binding process.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 10;</code>
       * @return The bytes for volumeAttributesClassName.
       */
      public com.google.protobuf.ByteString
          getVolumeAttributesClassNameBytes() {
        java.lang.Object ref = volumeAttributesClassName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeAttributesClassName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
       * is not allowed. When this field is not set, it indicates that this volume does not belong to any
       * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
       * after a volume has been updated successfully to a new class.
       * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
       * PersistentVolumeClaims during the binding process.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 10;</code>
       * @param value The volumeAttributesClassName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeAttributesClassName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeAttributesClassName_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
       * is not allowed. When this field is not set, it indicates that this volume does not belong to any
       * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
       * after a volume has been updated successfully to a new class.
       * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
       * PersistentVolumeClaims during the binding process.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeAttributesClassName() {
        volumeAttributesClassName_ = getDefaultInstance().getVolumeAttributesClassName();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value
       * is not allowed. When this field is not set, it indicates that this volume does not belong to any
       * VolumeAttributesClass. This field is mutable and can be changed by the CSI driver
       * after a volume has been updated successfully to a new class.
       * For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
       * PersistentVolumeClaims during the binding process.
       * This is an alpha field and requires enabling VolumeAttributesClass feature.
       * +featureGate=VolumeAttributesClass
       * +optional
       * </pre>
       *
       * <code>optional string volumeAttributesClassName = 10;</code>
       * @param value The bytes for volumeAttributesClassName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeAttributesClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeAttributesClassName_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeSpec)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeSpec();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeSpec>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeSpec>() {
      @java.lang.Override
      public PersistentVolumeSpec 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<PersistentVolumeSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PersistentVolumeStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PersistentVolumeStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * phase indicates if a volume is available, bound to a claim, or released by a claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return Whether the phase field is set.
     */
    boolean hasPhase();
    /**
     * <pre>
     * phase indicates if a volume is available, bound to a claim, or released by a claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The phase.
     */
    java.lang.String getPhase();
    /**
     * <pre>
     * phase indicates if a volume is available, bound to a claim, or released by a claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The bytes for phase.
     */
    com.google.protobuf.ByteString
        getPhaseBytes();

    /**
     * <pre>
     * message is a human-readable message indicating details about why the volume is in this state.
     * +optional
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * message is a human-readable message indicating details about why the volume is in this state.
     * +optional
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * message is a human-readable message indicating details about why the volume is in this state.
     * +optional
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    /**
     * <pre>
     * reason is a brief CamelCase string that describes any failure and is meant
     * for machine parsing and tidy display in the CLI.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * reason is a brief CamelCase string that describes any failure and is meant
     * for machine parsing and tidy display in the CLI.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * reason is a brief CamelCase string that describes any failure and is meant
     * for machine parsing and tidy display in the CLI.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * lastPhaseTransitionTime is the time the phase transitioned from one to another
     * and automatically resets to current time everytime a volume phase transitions.
     * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
     * +featureGate=PersistentVolumeLastPhaseTransitionTime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
     * @return Whether the lastPhaseTransitionTime field is set.
     */
    boolean hasLastPhaseTransitionTime();
    /**
     * <pre>
     * lastPhaseTransitionTime is the time the phase transitioned from one to another
     * and automatically resets to current time everytime a volume phase transitions.
     * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
     * +featureGate=PersistentVolumeLastPhaseTransitionTime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
     * @return The lastPhaseTransitionTime.
     */
    io.kubernetes.client.proto.Meta.Time getLastPhaseTransitionTime();
    /**
     * <pre>
     * lastPhaseTransitionTime is the time the phase transitioned from one to another
     * and automatically resets to current time everytime a volume phase transitions.
     * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
     * +featureGate=PersistentVolumeLastPhaseTransitionTime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastPhaseTransitionTimeOrBuilder();
  }
  /**
   * <pre>
   * PersistentVolumeStatus is the current status of a persistent volume.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeStatus}
   */
  public static final class PersistentVolumeStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PersistentVolumeStatus)
      PersistentVolumeStatusOrBuilder {
  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= */ "",
        PersistentVolumeStatus.class.getName());
    }
    // Use PersistentVolumeStatus.newBuilder() to construct.
    private PersistentVolumeStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PersistentVolumeStatus() {
      phase_ = "";
      message_ = "";
      reason_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PersistentVolumeStatus.class, io.kubernetes.client.proto.V1.PersistentVolumeStatus.Builder.class);
    }

    private int bitField0_;
    public static final int PHASE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object phase_ = "";
    /**
     * <pre>
     * phase indicates if a volume is available, bound to a claim, or released by a claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return Whether the phase field is set.
     */
    @java.lang.Override
    public boolean hasPhase() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * phase indicates if a volume is available, bound to a claim, or released by a claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The phase.
     */
    @java.lang.Override
    public java.lang.String getPhase() {
      java.lang.Object ref = phase_;
      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()) {
          phase_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * phase indicates if a volume is available, bound to a claim, or released by a claim.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The bytes for phase.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPhaseBytes() {
      java.lang.Object ref = phase_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        phase_ = 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 is a human-readable message indicating details about why the volume is in this state.
     * +optional
     * </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 is a human-readable message indicating details about why the volume is in this state.
     * +optional
     * </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 is a human-readable message indicating details about why the volume is in this state.
     * +optional
     * </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 REASON_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * reason is a brief CamelCase string that describes any failure and is meant
     * for machine parsing and tidy display in the CLI.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * reason is a brief CamelCase string that describes any failure and is meant
     * for machine parsing and tidy display in the CLI.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</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 brief CamelCase string that describes any failure and is meant
     * for machine parsing and tidy display in the CLI.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</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 LASTPHASETRANSITIONTIME_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.Meta.Time lastPhaseTransitionTime_;
    /**
     * <pre>
     * lastPhaseTransitionTime is the time the phase transitioned from one to another
     * and automatically resets to current time everytime a volume phase transitions.
     * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
     * +featureGate=PersistentVolumeLastPhaseTransitionTime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
     * @return Whether the lastPhaseTransitionTime field is set.
     */
    @java.lang.Override
    public boolean hasLastPhaseTransitionTime() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * lastPhaseTransitionTime is the time the phase transitioned from one to another
     * and automatically resets to current time everytime a volume phase transitions.
     * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
     * +featureGate=PersistentVolumeLastPhaseTransitionTime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
     * @return The lastPhaseTransitionTime.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getLastPhaseTransitionTime() {
      return lastPhaseTransitionTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastPhaseTransitionTime_;
    }
    /**
     * <pre>
     * lastPhaseTransitionTime is the time the phase transitioned from one to another
     * and automatically resets to current time everytime a volume phase transitions.
     * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
     * +featureGate=PersistentVolumeLastPhaseTransitionTime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastPhaseTransitionTimeOrBuilder() {
      return lastPhaseTransitionTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastPhaseTransitionTime_;
    }

    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, phase_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, message_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, reason_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getLastPhaseTransitionTime());
      }
      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, phase_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, message_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, reason_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getLastPhaseTransitionTime());
      }
      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.V1.PersistentVolumeStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PersistentVolumeStatus other = (io.kubernetes.client.proto.V1.PersistentVolumeStatus) obj;

      if (hasPhase() != other.hasPhase()) return false;
      if (hasPhase()) {
        if (!getPhase()
            .equals(other.getPhase())) return false;
      }
      if (hasMessage() != other.hasMessage()) return false;
      if (hasMessage()) {
        if (!getMessage()
            .equals(other.getMessage())) return false;
      }
      if (hasReason() != other.hasReason()) return false;
      if (hasReason()) {
        if (!getReason()
            .equals(other.getReason())) return false;
      }
      if (hasLastPhaseTransitionTime() != other.hasLastPhaseTransitionTime()) return false;
      if (hasLastPhaseTransitionTime()) {
        if (!getLastPhaseTransitionTime()
            .equals(other.getLastPhaseTransitionTime())) 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 (hasPhase()) {
        hash = (37 * hash) + PHASE_FIELD_NUMBER;
        hash = (53 * hash) + getPhase().hashCode();
      }
      if (hasMessage()) {
        hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getMessage().hashCode();
      }
      if (hasReason()) {
        hash = (37 * hash) + REASON_FIELD_NUMBER;
        hash = (53 * hash) + getReason().hashCode();
      }
      if (hasLastPhaseTransitionTime()) {
        hash = (37 * hash) + LASTPHASETRANSITIONTIME_FIELD_NUMBER;
        hash = (53 * hash) + getLastPhaseTransitionTime().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeStatus 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.V1.PersistentVolumeStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeStatus 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.V1.PersistentVolumeStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeStatus 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.V1.PersistentVolumeStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeStatus 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.V1.PersistentVolumeStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PersistentVolumeStatus 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.V1.PersistentVolumeStatus 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>
     * PersistentVolumeStatus is the current status of a persistent volume.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PersistentVolumeStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PersistentVolumeStatus)
        io.kubernetes.client.proto.V1.PersistentVolumeStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PersistentVolumeStatus.class, io.kubernetes.client.proto.V1.PersistentVolumeStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PersistentVolumeStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLastPhaseTransitionTimeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        phase_ = "";
        message_ = "";
        reason_ = "";
        lastPhaseTransitionTime_ = null;
        if (lastPhaseTransitionTimeBuilder_ != null) {
          lastPhaseTransitionTimeBuilder_.dispose();
          lastPhaseTransitionTimeBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PersistentVolumeStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PersistentVolumeStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeStatus build() {
        io.kubernetes.client.proto.V1.PersistentVolumeStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PersistentVolumeStatus buildPartial() {
        io.kubernetes.client.proto.V1.PersistentVolumeStatus result = new io.kubernetes.client.proto.V1.PersistentVolumeStatus(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PersistentVolumeStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.phase_ = phase_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.message_ = message_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.lastPhaseTransitionTime_ = lastPhaseTransitionTimeBuilder_ == null
              ? lastPhaseTransitionTime_
              : lastPhaseTransitionTimeBuilder_.build();
          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.V1.PersistentVolumeStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.PersistentVolumeStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PersistentVolumeStatus other) {
        if (other == io.kubernetes.client.proto.V1.PersistentVolumeStatus.getDefaultInstance()) return this;
        if (other.hasPhase()) {
          phase_ = other.phase_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasLastPhaseTransitionTime()) {
          mergeLastPhaseTransitionTime(other.getLastPhaseTransitionTime());
        }
        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: {
                phase_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                message_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                reason_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getLastPhaseTransitionTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object phase_ = "";
      /**
       * <pre>
       * phase indicates if a volume is available, bound to a claim, or released by a claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return Whether the phase field is set.
       */
      public boolean hasPhase() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * phase indicates if a volume is available, bound to a claim, or released by a claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return The phase.
       */
      public java.lang.String getPhase() {
        java.lang.Object ref = phase_;
        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()) {
            phase_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * phase indicates if a volume is available, bound to a claim, or released by a claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return The bytes for phase.
       */
      public com.google.protobuf.ByteString
          getPhaseBytes() {
        java.lang.Object ref = phase_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          phase_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * phase indicates if a volume is available, bound to a claim, or released by a claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @param value The phase to set.
       * @return This builder for chaining.
       */
      public Builder setPhase(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        phase_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * phase indicates if a volume is available, bound to a claim, or released by a claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPhase() {
        phase_ = getDefaultInstance().getPhase();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * phase indicates if a volume is available, bound to a claim, or released by a claim.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @param value The bytes for phase to set.
       * @return This builder for chaining.
       */
      public Builder setPhaseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        phase_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * message is a human-readable message indicating details about why the volume is in this state.
       * +optional
       * </pre>
       *
       * <code>optional string message = 2;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * message is a human-readable message indicating details about why the volume is in this state.
       * +optional
       * </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 is a human-readable message indicating details about why the volume is in this state.
       * +optional
       * </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 is a human-readable message indicating details about why the volume is in this state.
       * +optional
       * </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 is a human-readable message indicating details about why the volume is in this state.
       * +optional
       * </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 is a human-readable message indicating details about why the volume is in this state.
       * +optional
       * </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 reason_ = "";
      /**
       * <pre>
       * reason is a brief CamelCase string that describes any failure and is meant
       * for machine parsing and tidy display in the CLI.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * reason is a brief CamelCase string that describes any failure and is meant
       * for machine parsing and tidy display in the CLI.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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 brief CamelCase string that describes any failure and is meant
       * for machine parsing and tidy display in the CLI.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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 brief CamelCase string that describes any failure and is meant
       * for machine parsing and tidy display in the CLI.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * reason is a brief CamelCase string that describes any failure and is meant
       * for machine parsing and tidy display in the CLI.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * reason is a brief CamelCase string that describes any failure and is meant
       * for machine parsing and tidy display in the CLI.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.Time lastPhaseTransitionTime_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> lastPhaseTransitionTimeBuilder_;
      /**
       * <pre>
       * lastPhaseTransitionTime is the time the phase transitioned from one to another
       * and automatically resets to current time everytime a volume phase transitions.
       * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
       * +featureGate=PersistentVolumeLastPhaseTransitionTime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
       * @return Whether the lastPhaseTransitionTime field is set.
       */
      public boolean hasLastPhaseTransitionTime() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * lastPhaseTransitionTime is the time the phase transitioned from one to another
       * and automatically resets to current time everytime a volume phase transitions.
       * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
       * +featureGate=PersistentVolumeLastPhaseTransitionTime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
       * @return The lastPhaseTransitionTime.
       */
      public io.kubernetes.client.proto.Meta.Time getLastPhaseTransitionTime() {
        if (lastPhaseTransitionTimeBuilder_ == null) {
          return lastPhaseTransitionTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastPhaseTransitionTime_;
        } else {
          return lastPhaseTransitionTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * lastPhaseTransitionTime is the time the phase transitioned from one to another
       * and automatically resets to current time everytime a volume phase transitions.
       * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
       * +featureGate=PersistentVolumeLastPhaseTransitionTime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
       */
      public Builder setLastPhaseTransitionTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastPhaseTransitionTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastPhaseTransitionTime_ = value;
        } else {
          lastPhaseTransitionTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastPhaseTransitionTime is the time the phase transitioned from one to another
       * and automatically resets to current time everytime a volume phase transitions.
       * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
       * +featureGate=PersistentVolumeLastPhaseTransitionTime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
       */
      public Builder setLastPhaseTransitionTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (lastPhaseTransitionTimeBuilder_ == null) {
          lastPhaseTransitionTime_ = builderForValue.build();
        } else {
          lastPhaseTransitionTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastPhaseTransitionTime is the time the phase transitioned from one to another
       * and automatically resets to current time everytime a volume phase transitions.
       * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
       * +featureGate=PersistentVolumeLastPhaseTransitionTime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
       */
      public Builder mergeLastPhaseTransitionTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastPhaseTransitionTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            lastPhaseTransitionTime_ != null &&
            lastPhaseTransitionTime_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getLastPhaseTransitionTimeBuilder().mergeFrom(value);
          } else {
            lastPhaseTransitionTime_ = value;
          }
        } else {
          lastPhaseTransitionTimeBuilder_.mergeFrom(value);
        }
        if (lastPhaseTransitionTime_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * lastPhaseTransitionTime is the time the phase transitioned from one to another
       * and automatically resets to current time everytime a volume phase transitions.
       * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
       * +featureGate=PersistentVolumeLastPhaseTransitionTime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
       */
      public Builder clearLastPhaseTransitionTime() {
        bitField0_ = (bitField0_ & ~0x00000008);
        lastPhaseTransitionTime_ = null;
        if (lastPhaseTransitionTimeBuilder_ != null) {
          lastPhaseTransitionTimeBuilder_.dispose();
          lastPhaseTransitionTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastPhaseTransitionTime is the time the phase transitioned from one to another
       * and automatically resets to current time everytime a volume phase transitions.
       * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
       * +featureGate=PersistentVolumeLastPhaseTransitionTime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastPhaseTransitionTimeBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getLastPhaseTransitionTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * lastPhaseTransitionTime is the time the phase transitioned from one to another
       * and automatically resets to current time everytime a volume phase transitions.
       * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
       * +featureGate=PersistentVolumeLastPhaseTransitionTime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastPhaseTransitionTimeOrBuilder() {
        if (lastPhaseTransitionTimeBuilder_ != null) {
          return lastPhaseTransitionTimeBuilder_.getMessageOrBuilder();
        } else {
          return lastPhaseTransitionTime_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastPhaseTransitionTime_;
        }
      }
      /**
       * <pre>
       * lastPhaseTransitionTime is the time the phase transitioned from one to another
       * and automatically resets to current time everytime a volume phase transitions.
       * This is a beta field and requires the PersistentVolumeLastPhaseTransitionTime feature to be enabled (enabled by default).
       * +featureGate=PersistentVolumeLastPhaseTransitionTime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastPhaseTransitionTime = 4;</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> 
          getLastPhaseTransitionTimeFieldBuilder() {
        if (lastPhaseTransitionTimeBuilder_ == null) {
          lastPhaseTransitionTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getLastPhaseTransitionTime(),
                  getParentForChildren(),
                  isClean());
          lastPhaseTransitionTime_ = null;
        }
        return lastPhaseTransitionTimeBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PersistentVolumeStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PersistentVolumeStatus)
    private static final io.kubernetes.client.proto.V1.PersistentVolumeStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PersistentVolumeStatus();
    }

    public static io.kubernetes.client.proto.V1.PersistentVolumeStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PersistentVolumeStatus>
        PARSER = new com.google.protobuf.AbstractParser<PersistentVolumeStatus>() {
      @java.lang.Override
      public PersistentVolumeStatus 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<PersistentVolumeStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PersistentVolumeStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PhotonPersistentDiskVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * pdID is the ID that identifies Photon Controller persistent disk
     * </pre>
     *
     * <code>optional string pdID = 1;</code>
     * @return Whether the pdID field is set.
     */
    boolean hasPdID();
    /**
     * <pre>
     * pdID is the ID that identifies Photon Controller persistent disk
     * </pre>
     *
     * <code>optional string pdID = 1;</code>
     * @return The pdID.
     */
    java.lang.String getPdID();
    /**
     * <pre>
     * pdID is the ID that identifies Photon Controller persistent disk
     * </pre>
     *
     * <code>optional string pdID = 1;</code>
     * @return The bytes for pdID.
     */
    com.google.protobuf.ByteString
        getPdIDBytes();

    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();
  }
  /**
   * <pre>
   * Represents a Photon Controller persistent disk resource.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource}
   */
  public static final class PhotonPersistentDiskVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource)
      PhotonPersistentDiskVolumeSourceOrBuilder {
  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= */ "",
        PhotonPersistentDiskVolumeSource.class.getName());
    }
    // Use PhotonPersistentDiskVolumeSource.newBuilder() to construct.
    private PhotonPersistentDiskVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PhotonPersistentDiskVolumeSource() {
      pdID_ = "";
      fsType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PhotonPersistentDiskVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PhotonPersistentDiskVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.class, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int PDID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object pdID_ = "";
    /**
     * <pre>
     * pdID is the ID that identifies Photon Controller persistent disk
     * </pre>
     *
     * <code>optional string pdID = 1;</code>
     * @return Whether the pdID field is set.
     */
    @java.lang.Override
    public boolean hasPdID() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * pdID is the ID that identifies Photon Controller persistent disk
     * </pre>
     *
     * <code>optional string pdID = 1;</code>
     * @return The pdID.
     */
    @java.lang.Override
    public java.lang.String getPdID() {
      java.lang.Object ref = pdID_;
      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()) {
          pdID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * pdID is the ID that identifies Photon Controller persistent disk
     * </pre>
     *
     * <code>optional string pdID = 1;</code>
     * @return The bytes for pdID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPdIDBytes() {
      java.lang.Object ref = pdID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pdID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = 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, pdID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fsType_);
      }
      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, pdID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fsType_);
      }
      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.V1.PhotonPersistentDiskVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource other = (io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource) obj;

      if (hasPdID() != other.hasPdID()) return false;
      if (hasPdID()) {
        if (!getPdID()
            .equals(other.getPdID())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) 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 (hasPdID()) {
        hash = (37 * hash) + PDID_FIELD_NUMBER;
        hash = (53 * hash) + getPdID().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource 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.V1.PhotonPersistentDiskVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource 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.V1.PhotonPersistentDiskVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource 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.V1.PhotonPersistentDiskVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource 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.V1.PhotonPersistentDiskVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource 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.V1.PhotonPersistentDiskVolumeSource 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>
     * Represents a Photon Controller persistent disk resource.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource)
        io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PhotonPersistentDiskVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PhotonPersistentDiskVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.class, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        pdID_ = "";
        fsType_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PhotonPersistentDiskVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource build() {
        io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource result = new io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.pdID_ = pdID_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fsType_ = fsType_;
          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.V1.PhotonPersistentDiskVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance()) return this;
        if (other.hasPdID()) {
          pdID_ = other.pdID_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          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: {
                pdID_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fsType_ = 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 pdID_ = "";
      /**
       * <pre>
       * pdID is the ID that identifies Photon Controller persistent disk
       * </pre>
       *
       * <code>optional string pdID = 1;</code>
       * @return Whether the pdID field is set.
       */
      public boolean hasPdID() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * pdID is the ID that identifies Photon Controller persistent disk
       * </pre>
       *
       * <code>optional string pdID = 1;</code>
       * @return The pdID.
       */
      public java.lang.String getPdID() {
        java.lang.Object ref = pdID_;
        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()) {
            pdID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * pdID is the ID that identifies Photon Controller persistent disk
       * </pre>
       *
       * <code>optional string pdID = 1;</code>
       * @return The bytes for pdID.
       */
      public com.google.protobuf.ByteString
          getPdIDBytes() {
        java.lang.Object ref = pdID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pdID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * pdID is the ID that identifies Photon Controller persistent disk
       * </pre>
       *
       * <code>optional string pdID = 1;</code>
       * @param value The pdID to set.
       * @return This builder for chaining.
       */
      public Builder setPdID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        pdID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pdID is the ID that identifies Photon Controller persistent disk
       * </pre>
       *
       * <code>optional string pdID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPdID() {
        pdID_ = getDefaultInstance().getPdID();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pdID is the ID that identifies Photon Controller persistent disk
       * </pre>
       *
       * <code>optional string pdID = 1;</code>
       * @param value The bytes for pdID to set.
       * @return This builder for chaining.
       */
      public Builder setPdIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        pdID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource)
    private static final io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PhotonPersistentDiskVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<PhotonPersistentDiskVolumeSource>() {
      @java.lang.Override
      public PhotonPersistentDiskVolumeSource 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<PhotonPersistentDiskVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PhotonPersistentDiskVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Pod)
      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>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.PodSpec getSpec();
    /**
     * <pre>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodSpecOrBuilder getSpecOrBuilder();

    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1.PodStatus getStatus();
    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V1.PodStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * Pod is a collection of containers that can run on a host. This resource is created
   * by clients and scheduled onto hosts.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Pod}
   */
  public static final class Pod extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Pod)
      PodOrBuilder {
  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= */ "",
        Pod.class.getName());
    }
    // Use Pod.newBuilder() to construct.
    private Pod(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Pod() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Pod_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Pod_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Pod.class, io.kubernetes.client.proto.V1.Pod.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.V1.PodSpec spec_;
    /**
     * <pre>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance() : spec_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.PodStatus status_;
    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1.PodStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1.PodStatus.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.V1.Pod)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Pod other = (io.kubernetes.client.proto.V1.Pod) 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.V1.Pod parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Pod 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.V1.Pod parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Pod 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.V1.Pod parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Pod parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Pod parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Pod 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.V1.Pod parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Pod 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.V1.Pod parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Pod 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.V1.Pod 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>
     * Pod is a collection of containers that can run on a host. This resource is created
     * by clients and scheduled onto hosts.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Pod}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Pod)
        io.kubernetes.client.proto.V1.PodOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Pod_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Pod_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Pod.class, io.kubernetes.client.proto.V1.Pod.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Pod.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.V1.internal_static_k8s_io_api_core_v1_Pod_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Pod getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Pod.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Pod build() {
        io.kubernetes.client.proto.V1.Pod result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Pod buildPartial() {
        io.kubernetes.client.proto.V1.Pod result = new io.kubernetes.client.proto.V1.Pod(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Pod 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.V1.Pod) {
          return mergeFrom((io.kubernetes.client.proto.V1.Pod)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Pod other) {
        if (other == io.kubernetes.client.proto.V1.Pod.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.V1.PodSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodSpec, io.kubernetes.client.proto.V1.PodSpec.Builder, io.kubernetes.client.proto.V1.PodSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.PodSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.PodSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.PodSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.PodSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodSpec, io.kubernetes.client.proto.V1.PodSpec.Builder, io.kubernetes.client.proto.V1.PodSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodSpec, io.kubernetes.client.proto.V1.PodSpec.Builder, io.kubernetes.client.proto.V1.PodSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      private io.kubernetes.client.proto.V1.PodStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodStatus, io.kubernetes.client.proto.V1.PodStatus.Builder, io.kubernetes.client.proto.V1.PodStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1.PodStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1.PodStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1.PodStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1.PodStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1.PodStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1.PodStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1.PodStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodStatus, io.kubernetes.client.proto.V1.PodStatus.Builder, io.kubernetes.client.proto.V1.PodStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodStatus, io.kubernetes.client.proto.V1.PodStatus.Builder, io.kubernetes.client.proto.V1.PodStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Pod)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Pod)
    private static final io.kubernetes.client.proto.V1.Pod DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Pod();
    }

    public static io.kubernetes.client.proto.V1.Pod getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Pod>
        PARSER = new com.google.protobuf.AbstractParser<Pod>() {
      @java.lang.Override
      public Pod 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<Pod> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Pod> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Pod getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodAffinityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodAffinity)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm> 
        getRequiredDuringSchedulingIgnoredDuringExecutionList();
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    io.kubernetes.client.proto.V1.PodAffinityTerm getRequiredDuringSchedulingIgnoredDuringExecution(int index);
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    int getRequiredDuringSchedulingIgnoredDuringExecutionCount();
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> 
        getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilderList();
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilder(
        int index);

    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> 
        getPreferredDuringSchedulingIgnoredDuringExecutionList();
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    io.kubernetes.client.proto.V1.WeightedPodAffinityTerm getPreferredDuringSchedulingIgnoredDuringExecution(int index);
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    int getPreferredDuringSchedulingIgnoredDuringExecutionCount();
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder> 
        getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilderList();
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Pod affinity is a group of inter pod affinity scheduling rules.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodAffinity}
   */
  public static final class PodAffinity extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodAffinity)
      PodAffinityOrBuilder {
  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= */ "",
        PodAffinity.class.getName());
    }
    // Use PodAffinity.newBuilder() to construct.
    private PodAffinity(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodAffinity() {
      requiredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
      preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAffinity_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAffinity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodAffinity.class, io.kubernetes.client.proto.V1.PodAffinity.Builder.class);
    }

    public static final int REQUIREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm> requiredDuringSchedulingIgnoredDuringExecution_;
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm> getRequiredDuringSchedulingIgnoredDuringExecutionList() {
      return requiredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> 
        getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilderList() {
      return requiredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public int getRequiredDuringSchedulingIgnoredDuringExecutionCount() {
      return requiredDuringSchedulingIgnoredDuringExecution_.size();
    }
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAffinityTerm getRequiredDuringSchedulingIgnoredDuringExecution(int index) {
      return requiredDuringSchedulingIgnoredDuringExecution_.get(index);
    }
    /**
     * <pre>
     * If the affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilder(
        int index) {
      return requiredDuringSchedulingIgnoredDuringExecution_.get(index);
    }

    public static final int PREFERREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> preferredDuringSchedulingIgnoredDuringExecution_;
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> getPreferredDuringSchedulingIgnoredDuringExecutionList() {
      return preferredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder> 
        getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilderList() {
      return preferredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public int getPreferredDuringSchedulingIgnoredDuringExecutionCount() {
      return preferredDuringSchedulingIgnoredDuringExecution_.size();
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm getPreferredDuringSchedulingIgnoredDuringExecution(int index) {
      return preferredDuringSchedulingIgnoredDuringExecution_.get(index);
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilder(
        int index) {
      return preferredDuringSchedulingIgnoredDuringExecution_.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 {
      for (int i = 0; i < requiredDuringSchedulingIgnoredDuringExecution_.size(); i++) {
        output.writeMessage(1, requiredDuringSchedulingIgnoredDuringExecution_.get(i));
      }
      for (int i = 0; i < preferredDuringSchedulingIgnoredDuringExecution_.size(); i++) {
        output.writeMessage(2, preferredDuringSchedulingIgnoredDuringExecution_.get(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 < requiredDuringSchedulingIgnoredDuringExecution_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, requiredDuringSchedulingIgnoredDuringExecution_.get(i));
      }
      for (int i = 0; i < preferredDuringSchedulingIgnoredDuringExecution_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, preferredDuringSchedulingIgnoredDuringExecution_.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.V1.PodAffinity)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodAffinity other = (io.kubernetes.client.proto.V1.PodAffinity) obj;

      if (!getRequiredDuringSchedulingIgnoredDuringExecutionList()
          .equals(other.getRequiredDuringSchedulingIgnoredDuringExecutionList())) return false;
      if (!getPreferredDuringSchedulingIgnoredDuringExecutionList()
          .equals(other.getPreferredDuringSchedulingIgnoredDuringExecutionList())) 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 (getRequiredDuringSchedulingIgnoredDuringExecutionCount() > 0) {
        hash = (37 * hash) + REQUIREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER;
        hash = (53 * hash) + getRequiredDuringSchedulingIgnoredDuringExecutionList().hashCode();
      }
      if (getPreferredDuringSchedulingIgnoredDuringExecutionCount() > 0) {
        hash = (37 * hash) + PREFERREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER;
        hash = (53 * hash) + getPreferredDuringSchedulingIgnoredDuringExecutionList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodAffinity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAffinity 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.V1.PodAffinity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAffinity 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.V1.PodAffinity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAffinity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodAffinity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodAffinity 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.V1.PodAffinity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodAffinity 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.V1.PodAffinity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodAffinity 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.V1.PodAffinity 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>
     * Pod affinity is a group of inter pod affinity scheduling rules.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodAffinity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodAffinity)
        io.kubernetes.client.proto.V1.PodAffinityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAffinity_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAffinity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodAffinity.class, io.kubernetes.client.proto.V1.PodAffinity.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodAffinity.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          requiredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
        } else {
          requiredDuringSchedulingIgnoredDuringExecution_ = null;
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
        } else {
          preferredDuringSchedulingIgnoredDuringExecution_ = null;
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAffinity_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAffinity getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodAffinity.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAffinity build() {
        io.kubernetes.client.proto.V1.PodAffinity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAffinity buildPartial() {
        io.kubernetes.client.proto.V1.PodAffinity result = new io.kubernetes.client.proto.V1.PodAffinity(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PodAffinity result) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            requiredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.unmodifiableList(requiredDuringSchedulingIgnoredDuringExecution_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.requiredDuringSchedulingIgnoredDuringExecution_ = requiredDuringSchedulingIgnoredDuringExecution_;
        } else {
          result.requiredDuringSchedulingIgnoredDuringExecution_ = requiredDuringSchedulingIgnoredDuringExecutionBuilder_.build();
        }
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.unmodifiableList(preferredDuringSchedulingIgnoredDuringExecution_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.preferredDuringSchedulingIgnoredDuringExecution_ = preferredDuringSchedulingIgnoredDuringExecution_;
        } else {
          result.preferredDuringSchedulingIgnoredDuringExecution_ = preferredDuringSchedulingIgnoredDuringExecutionBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodAffinity result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodAffinity) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodAffinity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodAffinity other) {
        if (other == io.kubernetes.client.proto.V1.PodAffinity.getDefaultInstance()) return this;
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (!other.requiredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
            if (requiredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
              requiredDuringSchedulingIgnoredDuringExecution_ = other.requiredDuringSchedulingIgnoredDuringExecution_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
              requiredDuringSchedulingIgnoredDuringExecution_.addAll(other.requiredDuringSchedulingIgnoredDuringExecution_);
            }
            onChanged();
          }
        } else {
          if (!other.requiredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
            if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_.isEmpty()) {
              requiredDuringSchedulingIgnoredDuringExecutionBuilder_.dispose();
              requiredDuringSchedulingIgnoredDuringExecutionBuilder_ = null;
              requiredDuringSchedulingIgnoredDuringExecution_ = other.requiredDuringSchedulingIgnoredDuringExecution_;
              bitField0_ = (bitField0_ & ~0x00000001);
              requiredDuringSchedulingIgnoredDuringExecutionBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder() : null;
            } else {
              requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addAllMessages(other.requiredDuringSchedulingIgnoredDuringExecution_);
            }
          }
        }
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (!other.preferredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
            if (preferredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
              preferredDuringSchedulingIgnoredDuringExecution_ = other.preferredDuringSchedulingIgnoredDuringExecution_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
              preferredDuringSchedulingIgnoredDuringExecution_.addAll(other.preferredDuringSchedulingIgnoredDuringExecution_);
            }
            onChanged();
          }
        } else {
          if (!other.preferredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
            if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_.isEmpty()) {
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_.dispose();
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_ = null;
              preferredDuringSchedulingIgnoredDuringExecution_ = other.preferredDuringSchedulingIgnoredDuringExecution_;
              bitField0_ = (bitField0_ & ~0x00000002);
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder() : null;
            } else {
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addAllMessages(other.preferredDuringSchedulingIgnoredDuringExecution_);
            }
          }
        }
        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.V1.PodAffinityTerm m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PodAffinityTerm.parser(),
                        extensionRegistry);
                if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
                  ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
                  requiredDuringSchedulingIgnoredDuringExecution_.add(m);
                } else {
                  requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.WeightedPodAffinityTerm m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.parser(),
                        extensionRegistry);
                if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
                  ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
                  preferredDuringSchedulingIgnoredDuringExecution_.add(m);
                } else {
                  preferredDuringSchedulingIgnoredDuringExecutionBuilder_.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 java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm> requiredDuringSchedulingIgnoredDuringExecution_ =
        java.util.Collections.emptyList();
      private void ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          requiredDuringSchedulingIgnoredDuringExecution_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PodAffinityTerm>(requiredDuringSchedulingIgnoredDuringExecution_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodAffinityTerm, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder, io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> requiredDuringSchedulingIgnoredDuringExecutionBuilder_;

      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm> getRequiredDuringSchedulingIgnoredDuringExecutionList() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(requiredDuringSchedulingIgnoredDuringExecution_);
        } else {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public int getRequiredDuringSchedulingIgnoredDuringExecutionCount() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return requiredDuringSchedulingIgnoredDuringExecution_.size();
        } else {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTerm getRequiredDuringSchedulingIgnoredDuringExecution(int index) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return requiredDuringSchedulingIgnoredDuringExecution_.get(index);
        } else {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder setRequiredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PodAffinityTerm value) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.set(index, value);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder setRequiredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder builderForValue) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.set(index, builderForValue.build());
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder addRequiredDuringSchedulingIgnoredDuringExecution(io.kubernetes.client.proto.V1.PodAffinityTerm value) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.add(value);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder addRequiredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PodAffinityTerm value) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.add(index, value);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder addRequiredDuringSchedulingIgnoredDuringExecution(
          io.kubernetes.client.proto.V1.PodAffinityTerm.Builder builderForValue) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.add(builderForValue.build());
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder addRequiredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder builderForValue) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.add(index, builderForValue.build());
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder addAllRequiredDuringSchedulingIgnoredDuringExecution(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PodAffinityTerm> values) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, requiredDuringSchedulingIgnoredDuringExecution_);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder clearRequiredDuringSchedulingIgnoredDuringExecution() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          requiredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder removeRequiredDuringSchedulingIgnoredDuringExecution(int index) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.remove(index);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTerm.Builder getRequiredDuringSchedulingIgnoredDuringExecutionBuilder(
          int index) {
        return getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilder(
          int index) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return requiredDuringSchedulingIgnoredDuringExecution_.get(index);  } else {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> 
           getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilderList() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ != null) {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(requiredDuringSchedulingIgnoredDuringExecution_);
        }
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTerm.Builder addRequiredDuringSchedulingIgnoredDuringExecutionBuilder() {
        return getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTerm.Builder addRequiredDuringSchedulingIgnoredDuringExecutionBuilder(
          int index) {
        return getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * If the affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm.Builder> 
           getRequiredDuringSchedulingIgnoredDuringExecutionBuilderList() {
        return getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodAffinityTerm, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder, io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> 
          getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PodAffinityTerm, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder, io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder>(
                  requiredDuringSchedulingIgnoredDuringExecution_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          requiredDuringSchedulingIgnoredDuringExecution_ = null;
        }
        return requiredDuringSchedulingIgnoredDuringExecutionBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> preferredDuringSchedulingIgnoredDuringExecution_ =
        java.util.Collections.emptyList();
      private void ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          preferredDuringSchedulingIgnoredDuringExecution_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm>(preferredDuringSchedulingIgnoredDuringExecution_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.WeightedPodAffinityTerm, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder, io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder> preferredDuringSchedulingIgnoredDuringExecutionBuilder_;

      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> getPreferredDuringSchedulingIgnoredDuringExecutionList() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(preferredDuringSchedulingIgnoredDuringExecution_);
        } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public int getPreferredDuringSchedulingIgnoredDuringExecutionCount() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return preferredDuringSchedulingIgnoredDuringExecution_.size();
        } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm getPreferredDuringSchedulingIgnoredDuringExecution(int index) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return preferredDuringSchedulingIgnoredDuringExecution_.get(index);
        } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder setPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm value) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.set(index, value);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder setPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder builderForValue) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.set(index, builderForValue.build());
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(io.kubernetes.client.proto.V1.WeightedPodAffinityTerm value) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(value);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm value) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(index, value);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(
          io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder builderForValue) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(builderForValue.build());
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder builderForValue) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(index, builderForValue.build());
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addAllPreferredDuringSchedulingIgnoredDuringExecution(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> values) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, preferredDuringSchedulingIgnoredDuringExecution_);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder clearPreferredDuringSchedulingIgnoredDuringExecution() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder removePreferredDuringSchedulingIgnoredDuringExecution(int index) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.remove(index);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder getPreferredDuringSchedulingIgnoredDuringExecutionBuilder(
          int index) {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilder(
          int index) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return preferredDuringSchedulingIgnoredDuringExecution_.get(index);  } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder> 
           getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilderList() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ != null) {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(preferredDuringSchedulingIgnoredDuringExecution_);
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder addPreferredDuringSchedulingIgnoredDuringExecutionBuilder() {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder addPreferredDuringSchedulingIgnoredDuringExecutionBuilder(
          int index) {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder> 
           getPreferredDuringSchedulingIgnoredDuringExecutionBuilderList() {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.WeightedPodAffinityTerm, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder, io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder> 
          getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.WeightedPodAffinityTerm, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder, io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder>(
                  preferredDuringSchedulingIgnoredDuringExecution_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          preferredDuringSchedulingIgnoredDuringExecution_ = null;
        }
        return preferredDuringSchedulingIgnoredDuringExecutionBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodAffinity)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodAffinity)
    private static final io.kubernetes.client.proto.V1.PodAffinity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodAffinity();
    }

    public static io.kubernetes.client.proto.V1.PodAffinity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodAffinity>
        PARSER = new com.google.protobuf.AbstractParser<PodAffinity>() {
      @java.lang.Override
      public PodAffinity 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<PodAffinity> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodAffinity> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAffinity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodAffinityTermOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodAffinityTerm)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A label query over a set of resources, in this case pods.
     * If it's null, this PodAffinityTerm matches with no Pods.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
     * @return Whether the labelSelector field is set.
     */
    boolean hasLabelSelector();
    /**
     * <pre>
     * A label query over a set of resources, in this case pods.
     * If it's null, this PodAffinityTerm matches with no Pods.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
     * @return The labelSelector.
     */
    io.kubernetes.client.proto.Meta.LabelSelector getLabelSelector();
    /**
     * <pre>
     * A label query over a set of resources, in this case pods.
     * If it's null, this PodAffinityTerm matches with no Pods.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
     */
    io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getLabelSelectorOrBuilder();

    /**
     * <pre>
     * namespaces specifies a static list of namespace names that the term applies to.
     * The term is applied to the union of the namespaces listed in this field
     * and the ones selected by namespaceSelector.
     * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string namespaces = 2;</code>
     * @return A list containing the namespaces.
     */
    java.util.List<java.lang.String>
        getNamespacesList();
    /**
     * <pre>
     * namespaces specifies a static list of namespace names that the term applies to.
     * The term is applied to the union of the namespaces listed in this field
     * and the ones selected by namespaceSelector.
     * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string namespaces = 2;</code>
     * @return The count of namespaces.
     */
    int getNamespacesCount();
    /**
     * <pre>
     * namespaces specifies a static list of namespace names that the term applies to.
     * The term is applied to the union of the namespaces listed in this field
     * and the ones selected by namespaceSelector.
     * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string namespaces = 2;</code>
     * @param index The index of the element to return.
     * @return The namespaces at the given index.
     */
    java.lang.String getNamespaces(int index);
    /**
     * <pre>
     * namespaces specifies a static list of namespace names that the term applies to.
     * The term is applied to the union of the namespaces listed in this field
     * and the ones selected by namespaceSelector.
     * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string namespaces = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the namespaces at the given index.
     */
    com.google.protobuf.ByteString
        getNamespacesBytes(int index);

    /**
     * <pre>
     * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
     * the labelSelector in the specified namespaces, where co-located is defined as running on a node
     * whose value of the label with key topologyKey matches that of any node on which any of the
     * selected pods is running.
     * Empty topologyKey is not allowed.
     * </pre>
     *
     * <code>optional string topologyKey = 3;</code>
     * @return Whether the topologyKey field is set.
     */
    boolean hasTopologyKey();
    /**
     * <pre>
     * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
     * the labelSelector in the specified namespaces, where co-located is defined as running on a node
     * whose value of the label with key topologyKey matches that of any node on which any of the
     * selected pods is running.
     * Empty topologyKey is not allowed.
     * </pre>
     *
     * <code>optional string topologyKey = 3;</code>
     * @return The topologyKey.
     */
    java.lang.String getTopologyKey();
    /**
     * <pre>
     * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
     * the labelSelector in the specified namespaces, where co-located is defined as running on a node
     * whose value of the label with key topologyKey matches that of any node on which any of the
     * selected pods is running.
     * Empty topologyKey is not allowed.
     * </pre>
     *
     * <code>optional string topologyKey = 3;</code>
     * @return The bytes for topologyKey.
     */
    com.google.protobuf.ByteString
        getTopologyKeyBytes();

    /**
     * <pre>
     * A label query over the set of namespaces that the term applies to.
     * The term is applied to the union of the namespaces selected by this field
     * and the ones listed in the namespaces field.
     * null selector and null or empty namespaces list means "this pod's namespace".
     * An empty selector ({}) matches all namespaces.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
     * @return Whether the namespaceSelector field is set.
     */
    boolean hasNamespaceSelector();
    /**
     * <pre>
     * A label query over the set of namespaces that the term applies to.
     * The term is applied to the union of the namespaces selected by this field
     * and the ones listed in the namespaces field.
     * null selector and null or empty namespaces list means "this pod's namespace".
     * An empty selector ({}) matches all namespaces.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
     * @return The namespaceSelector.
     */
    io.kubernetes.client.proto.Meta.LabelSelector getNamespaceSelector();
    /**
     * <pre>
     * A label query over the set of namespaces that the term applies to.
     * The term is applied to the union of the namespaces selected by this field
     * and the ones listed in the namespaces field.
     * null selector and null or empty namespaces list means "this pod's namespace".
     * An empty selector ({}) matches all namespaces.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
     */
    io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getNamespaceSelectorOrBuilder();

    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
     * Also, matchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 5;</code>
     * @return A list containing the matchLabelKeys.
     */
    java.util.List<java.lang.String>
        getMatchLabelKeysList();
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
     * Also, matchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 5;</code>
     * @return The count of matchLabelKeys.
     */
    int getMatchLabelKeysCount();
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
     * Also, matchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 5;</code>
     * @param index The index of the element to return.
     * @return The matchLabelKeys at the given index.
     */
    java.lang.String getMatchLabelKeys(int index);
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
     * Also, matchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the matchLabelKeys at the given index.
     */
    com.google.protobuf.ByteString
        getMatchLabelKeysBytes(int index);

    /**
     * <pre>
     * MismatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
     * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string mismatchLabelKeys = 6;</code>
     * @return A list containing the mismatchLabelKeys.
     */
    java.util.List<java.lang.String>
        getMismatchLabelKeysList();
    /**
     * <pre>
     * MismatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
     * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string mismatchLabelKeys = 6;</code>
     * @return The count of mismatchLabelKeys.
     */
    int getMismatchLabelKeysCount();
    /**
     * <pre>
     * MismatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
     * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string mismatchLabelKeys = 6;</code>
     * @param index The index of the element to return.
     * @return The mismatchLabelKeys at the given index.
     */
    java.lang.String getMismatchLabelKeys(int index);
    /**
     * <pre>
     * MismatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
     * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string mismatchLabelKeys = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the mismatchLabelKeys at the given index.
     */
    com.google.protobuf.ByteString
        getMismatchLabelKeysBytes(int index);
  }
  /**
   * <pre>
   * Defines a set of pods (namely those matching the labelSelector
   * relative to the given namespace(s)) that this pod should be
   * co-located (affinity) or not co-located (anti-affinity) with,
   * where co-located is defined as running on a node whose value of
   * the label with key &lt;topologyKey&gt; matches that of any node on which
   * a pod of the set of pods is running
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodAffinityTerm}
   */
  public static final class PodAffinityTerm extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodAffinityTerm)
      PodAffinityTermOrBuilder {
  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= */ "",
        PodAffinityTerm.class.getName());
    }
    // Use PodAffinityTerm.newBuilder() to construct.
    private PodAffinityTerm(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodAffinityTerm() {
      namespaces_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      topologyKey_ = "";
      matchLabelKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      mismatchLabelKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAffinityTerm_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAffinityTerm_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodAffinityTerm.class, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder.class);
    }

    private int bitField0_;
    public static final int LABELSELECTOR_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.LabelSelector labelSelector_;
    /**
     * <pre>
     * A label query over a set of resources, in this case pods.
     * If it's null, this PodAffinityTerm matches with no Pods.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
     * @return Whether the labelSelector field is set.
     */
    @java.lang.Override
    public boolean hasLabelSelector() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * A label query over a set of resources, in this case pods.
     * If it's null, this PodAffinityTerm matches with no Pods.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
     * @return The labelSelector.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.LabelSelector getLabelSelector() {
      return labelSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
    }
    /**
     * <pre>
     * A label query over a set of resources, in this case pods.
     * If it's null, this PodAffinityTerm matches with no Pods.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getLabelSelectorOrBuilder() {
      return labelSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
    }

    public static final int NAMESPACES_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList namespaces_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * namespaces specifies a static list of namespace names that the term applies to.
     * The term is applied to the union of the namespaces listed in this field
     * and the ones selected by namespaceSelector.
     * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string namespaces = 2;</code>
     * @return A list containing the namespaces.
     */
    public com.google.protobuf.ProtocolStringList
        getNamespacesList() {
      return namespaces_;
    }
    /**
     * <pre>
     * namespaces specifies a static list of namespace names that the term applies to.
     * The term is applied to the union of the namespaces listed in this field
     * and the ones selected by namespaceSelector.
     * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string namespaces = 2;</code>
     * @return The count of namespaces.
     */
    public int getNamespacesCount() {
      return namespaces_.size();
    }
    /**
     * <pre>
     * namespaces specifies a static list of namespace names that the term applies to.
     * The term is applied to the union of the namespaces listed in this field
     * and the ones selected by namespaceSelector.
     * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string namespaces = 2;</code>
     * @param index The index of the element to return.
     * @return The namespaces at the given index.
     */
    public java.lang.String getNamespaces(int index) {
      return namespaces_.get(index);
    }
    /**
     * <pre>
     * namespaces specifies a static list of namespace names that the term applies to.
     * The term is applied to the union of the namespaces listed in this field
     * and the ones selected by namespaceSelector.
     * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string namespaces = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the namespaces at the given index.
     */
    public com.google.protobuf.ByteString
        getNamespacesBytes(int index) {
      return namespaces_.getByteString(index);
    }

    public static final int TOPOLOGYKEY_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object topologyKey_ = "";
    /**
     * <pre>
     * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
     * the labelSelector in the specified namespaces, where co-located is defined as running on a node
     * whose value of the label with key topologyKey matches that of any node on which any of the
     * selected pods is running.
     * Empty topologyKey is not allowed.
     * </pre>
     *
     * <code>optional string topologyKey = 3;</code>
     * @return Whether the topologyKey field is set.
     */
    @java.lang.Override
    public boolean hasTopologyKey() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
     * the labelSelector in the specified namespaces, where co-located is defined as running on a node
     * whose value of the label with key topologyKey matches that of any node on which any of the
     * selected pods is running.
     * Empty topologyKey is not allowed.
     * </pre>
     *
     * <code>optional string topologyKey = 3;</code>
     * @return The topologyKey.
     */
    @java.lang.Override
    public java.lang.String getTopologyKey() {
      java.lang.Object ref = topologyKey_;
      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()) {
          topologyKey_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
     * the labelSelector in the specified namespaces, where co-located is defined as running on a node
     * whose value of the label with key topologyKey matches that of any node on which any of the
     * selected pods is running.
     * Empty topologyKey is not allowed.
     * </pre>
     *
     * <code>optional string topologyKey = 3;</code>
     * @return The bytes for topologyKey.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTopologyKeyBytes() {
      java.lang.Object ref = topologyKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        topologyKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAMESPACESELECTOR_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.Meta.LabelSelector namespaceSelector_;
    /**
     * <pre>
     * A label query over the set of namespaces that the term applies to.
     * The term is applied to the union of the namespaces selected by this field
     * and the ones listed in the namespaces field.
     * null selector and null or empty namespaces list means "this pod's namespace".
     * An empty selector ({}) matches all namespaces.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
     * @return Whether the namespaceSelector field is set.
     */
    @java.lang.Override
    public boolean hasNamespaceSelector() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * A label query over the set of namespaces that the term applies to.
     * The term is applied to the union of the namespaces selected by this field
     * and the ones listed in the namespaces field.
     * null selector and null or empty namespaces list means "this pod's namespace".
     * An empty selector ({}) matches all namespaces.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
     * @return The namespaceSelector.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.LabelSelector getNamespaceSelector() {
      return namespaceSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : namespaceSelector_;
    }
    /**
     * <pre>
     * A label query over the set of namespaces that the term applies to.
     * The term is applied to the union of the namespaces selected by this field
     * and the ones listed in the namespaces field.
     * null selector and null or empty namespaces list means "this pod's namespace".
     * An empty selector ({}) matches all namespaces.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getNamespaceSelectorOrBuilder() {
      return namespaceSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : namespaceSelector_;
    }

    public static final int MATCHLABELKEYS_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList matchLabelKeys_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
     * Also, matchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 5;</code>
     * @return A list containing the matchLabelKeys.
     */
    public com.google.protobuf.ProtocolStringList
        getMatchLabelKeysList() {
      return matchLabelKeys_;
    }
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
     * Also, matchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 5;</code>
     * @return The count of matchLabelKeys.
     */
    public int getMatchLabelKeysCount() {
      return matchLabelKeys_.size();
    }
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
     * Also, matchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 5;</code>
     * @param index The index of the element to return.
     * @return The matchLabelKeys at the given index.
     */
    public java.lang.String getMatchLabelKeys(int index) {
      return matchLabelKeys_.get(index);
    }
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
     * Also, matchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the matchLabelKeys at the given index.
     */
    public com.google.protobuf.ByteString
        getMatchLabelKeysBytes(int index) {
      return matchLabelKeys_.getByteString(index);
    }

    public static final int MISMATCHLABELKEYS_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList mismatchLabelKeys_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * MismatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
     * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string mismatchLabelKeys = 6;</code>
     * @return A list containing the mismatchLabelKeys.
     */
    public com.google.protobuf.ProtocolStringList
        getMismatchLabelKeysList() {
      return mismatchLabelKeys_;
    }
    /**
     * <pre>
     * MismatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
     * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string mismatchLabelKeys = 6;</code>
     * @return The count of mismatchLabelKeys.
     */
    public int getMismatchLabelKeysCount() {
      return mismatchLabelKeys_.size();
    }
    /**
     * <pre>
     * MismatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
     * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string mismatchLabelKeys = 6;</code>
     * @param index The index of the element to return.
     * @return The mismatchLabelKeys at the given index.
     */
    public java.lang.String getMismatchLabelKeys(int index) {
      return mismatchLabelKeys_.get(index);
    }
    /**
     * <pre>
     * MismatchLabelKeys is a set of pod label keys to select which pods will
     * be taken into consideration. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
     * to select the group of existing pods which pods will be taken into consideration
     * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
     * pod labels will be ignored. The default value is empty.
     * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
     * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
     * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string mismatchLabelKeys = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the mismatchLabelKeys at the given index.
     */
    public com.google.protobuf.ByteString
        getMismatchLabelKeysBytes(int index) {
      return mismatchLabelKeys_.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, getLabelSelector());
      }
      for (int i = 0; i < namespaces_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, namespaces_.getRaw(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, topologyKey_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(4, getNamespaceSelector());
      }
      for (int i = 0; i < matchLabelKeys_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, matchLabelKeys_.getRaw(i));
      }
      for (int i = 0; i < mismatchLabelKeys_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, mismatchLabelKeys_.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, getLabelSelector());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < namespaces_.size(); i++) {
          dataSize += computeStringSizeNoTag(namespaces_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getNamespacesList().size();
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, topologyKey_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getNamespaceSelector());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < matchLabelKeys_.size(); i++) {
          dataSize += computeStringSizeNoTag(matchLabelKeys_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getMatchLabelKeysList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < mismatchLabelKeys_.size(); i++) {
          dataSize += computeStringSizeNoTag(mismatchLabelKeys_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getMismatchLabelKeysList().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.V1.PodAffinityTerm)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodAffinityTerm other = (io.kubernetes.client.proto.V1.PodAffinityTerm) obj;

      if (hasLabelSelector() != other.hasLabelSelector()) return false;
      if (hasLabelSelector()) {
        if (!getLabelSelector()
            .equals(other.getLabelSelector())) return false;
      }
      if (!getNamespacesList()
          .equals(other.getNamespacesList())) return false;
      if (hasTopologyKey() != other.hasTopologyKey()) return false;
      if (hasTopologyKey()) {
        if (!getTopologyKey()
            .equals(other.getTopologyKey())) return false;
      }
      if (hasNamespaceSelector() != other.hasNamespaceSelector()) return false;
      if (hasNamespaceSelector()) {
        if (!getNamespaceSelector()
            .equals(other.getNamespaceSelector())) return false;
      }
      if (!getMatchLabelKeysList()
          .equals(other.getMatchLabelKeysList())) return false;
      if (!getMismatchLabelKeysList()
          .equals(other.getMismatchLabelKeysList())) 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 (hasLabelSelector()) {
        hash = (37 * hash) + LABELSELECTOR_FIELD_NUMBER;
        hash = (53 * hash) + getLabelSelector().hashCode();
      }
      if (getNamespacesCount() > 0) {
        hash = (37 * hash) + NAMESPACES_FIELD_NUMBER;
        hash = (53 * hash) + getNamespacesList().hashCode();
      }
      if (hasTopologyKey()) {
        hash = (37 * hash) + TOPOLOGYKEY_FIELD_NUMBER;
        hash = (53 * hash) + getTopologyKey().hashCode();
      }
      if (hasNamespaceSelector()) {
        hash = (37 * hash) + NAMESPACESELECTOR_FIELD_NUMBER;
        hash = (53 * hash) + getNamespaceSelector().hashCode();
      }
      if (getMatchLabelKeysCount() > 0) {
        hash = (37 * hash) + MATCHLABELKEYS_FIELD_NUMBER;
        hash = (53 * hash) + getMatchLabelKeysList().hashCode();
      }
      if (getMismatchLabelKeysCount() > 0) {
        hash = (37 * hash) + MISMATCHLABELKEYS_FIELD_NUMBER;
        hash = (53 * hash) + getMismatchLabelKeysList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodAffinityTerm parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAffinityTerm 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.V1.PodAffinityTerm parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAffinityTerm 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.V1.PodAffinityTerm parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAffinityTerm parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodAffinityTerm parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodAffinityTerm 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.V1.PodAffinityTerm parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodAffinityTerm 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.V1.PodAffinityTerm parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodAffinityTerm 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.V1.PodAffinityTerm 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>
     * Defines a set of pods (namely those matching the labelSelector
     * relative to the given namespace(s)) that this pod should be
     * co-located (affinity) or not co-located (anti-affinity) with,
     * where co-located is defined as running on a node whose value of
     * the label with key &lt;topologyKey&gt; matches that of any node on which
     * a pod of the set of pods is running
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodAffinityTerm}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodAffinityTerm)
        io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAffinityTerm_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAffinityTerm_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodAffinityTerm.class, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodAffinityTerm.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLabelSelectorFieldBuilder();
          getNamespaceSelectorFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        labelSelector_ = null;
        if (labelSelectorBuilder_ != null) {
          labelSelectorBuilder_.dispose();
          labelSelectorBuilder_ = null;
        }
        namespaces_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        topologyKey_ = "";
        namespaceSelector_ = null;
        if (namespaceSelectorBuilder_ != null) {
          namespaceSelectorBuilder_.dispose();
          namespaceSelectorBuilder_ = null;
        }
        matchLabelKeys_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        mismatchLabelKeys_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAffinityTerm_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAffinityTerm getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAffinityTerm build() {
        io.kubernetes.client.proto.V1.PodAffinityTerm result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAffinityTerm buildPartial() {
        io.kubernetes.client.proto.V1.PodAffinityTerm result = new io.kubernetes.client.proto.V1.PodAffinityTerm(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodAffinityTerm result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.labelSelector_ = labelSelectorBuilder_ == null
              ? labelSelector_
              : labelSelectorBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          namespaces_.makeImmutable();
          result.namespaces_ = namespaces_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.topologyKey_ = topologyKey_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.namespaceSelector_ = namespaceSelectorBuilder_ == null
              ? namespaceSelector_
              : namespaceSelectorBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          matchLabelKeys_.makeImmutable();
          result.matchLabelKeys_ = matchLabelKeys_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          mismatchLabelKeys_.makeImmutable();
          result.mismatchLabelKeys_ = mismatchLabelKeys_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodAffinityTerm) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodAffinityTerm)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodAffinityTerm other) {
        if (other == io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance()) return this;
        if (other.hasLabelSelector()) {
          mergeLabelSelector(other.getLabelSelector());
        }
        if (!other.namespaces_.isEmpty()) {
          if (namespaces_.isEmpty()) {
            namespaces_ = other.namespaces_;
            bitField0_ |= 0x00000002;
          } else {
            ensureNamespacesIsMutable();
            namespaces_.addAll(other.namespaces_);
          }
          onChanged();
        }
        if (other.hasTopologyKey()) {
          topologyKey_ = other.topologyKey_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasNamespaceSelector()) {
          mergeNamespaceSelector(other.getNamespaceSelector());
        }
        if (!other.matchLabelKeys_.isEmpty()) {
          if (matchLabelKeys_.isEmpty()) {
            matchLabelKeys_ = other.matchLabelKeys_;
            bitField0_ |= 0x00000010;
          } else {
            ensureMatchLabelKeysIsMutable();
            matchLabelKeys_.addAll(other.matchLabelKeys_);
          }
          onChanged();
        }
        if (!other.mismatchLabelKeys_.isEmpty()) {
          if (mismatchLabelKeys_.isEmpty()) {
            mismatchLabelKeys_ = other.mismatchLabelKeys_;
            bitField0_ |= 0x00000020;
          } else {
            ensureMismatchLabelKeysIsMutable();
            mismatchLabelKeys_.addAll(other.mismatchLabelKeys_);
          }
          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(
                    getLabelSelectorFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureNamespacesIsMutable();
                namespaces_.add(bs);
                break;
              } // case 18
              case 26: {
                topologyKey_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getNamespaceSelectorFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureMatchLabelKeysIsMutable();
                matchLabelKeys_.add(bs);
                break;
              } // case 42
              case 50: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureMismatchLabelKeysIsMutable();
                mismatchLabelKeys_.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 io.kubernetes.client.proto.Meta.LabelSelector labelSelector_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder> labelSelectorBuilder_;
      /**
       * <pre>
       * A label query over a set of resources, in this case pods.
       * If it's null, this PodAffinityTerm matches with no Pods.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
       * @return Whether the labelSelector field is set.
       */
      public boolean hasLabelSelector() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * A label query over a set of resources, in this case pods.
       * If it's null, this PodAffinityTerm matches with no Pods.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
       * @return The labelSelector.
       */
      public io.kubernetes.client.proto.Meta.LabelSelector getLabelSelector() {
        if (labelSelectorBuilder_ == null) {
          return labelSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
        } else {
          return labelSelectorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A label query over a set of resources, in this case pods.
       * If it's null, this PodAffinityTerm matches with no Pods.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
       */
      public Builder setLabelSelector(io.kubernetes.client.proto.Meta.LabelSelector value) {
        if (labelSelectorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          labelSelector_ = value;
        } else {
          labelSelectorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A label query over a set of resources, in this case pods.
       * If it's null, this PodAffinityTerm matches with no Pods.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
       */
      public Builder setLabelSelector(
          io.kubernetes.client.proto.Meta.LabelSelector.Builder builderForValue) {
        if (labelSelectorBuilder_ == null) {
          labelSelector_ = builderForValue.build();
        } else {
          labelSelectorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A label query over a set of resources, in this case pods.
       * If it's null, this PodAffinityTerm matches with no Pods.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
       */
      public Builder mergeLabelSelector(io.kubernetes.client.proto.Meta.LabelSelector value) {
        if (labelSelectorBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            labelSelector_ != null &&
            labelSelector_ != io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance()) {
            getLabelSelectorBuilder().mergeFrom(value);
          } else {
            labelSelector_ = value;
          }
        } else {
          labelSelectorBuilder_.mergeFrom(value);
        }
        if (labelSelector_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * A label query over a set of resources, in this case pods.
       * If it's null, this PodAffinityTerm matches with no Pods.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
       */
      public Builder clearLabelSelector() {
        bitField0_ = (bitField0_ & ~0x00000001);
        labelSelector_ = null;
        if (labelSelectorBuilder_ != null) {
          labelSelectorBuilder_.dispose();
          labelSelectorBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A label query over a set of resources, in this case pods.
       * If it's null, this PodAffinityTerm matches with no Pods.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.LabelSelector.Builder getLabelSelectorBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLabelSelectorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A label query over a set of resources, in this case pods.
       * If it's null, this PodAffinityTerm matches with no Pods.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getLabelSelectorOrBuilder() {
        if (labelSelectorBuilder_ != null) {
          return labelSelectorBuilder_.getMessageOrBuilder();
        } else {
          return labelSelector_ == null ?
              io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
        }
      }
      /**
       * <pre>
       * A label query over a set of resources, in this case pods.
       * If it's null, this PodAffinityTerm matches with no Pods.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder> 
          getLabelSelectorFieldBuilder() {
        if (labelSelectorBuilder_ == null) {
          labelSelectorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder>(
                  getLabelSelector(),
                  getParentForChildren(),
                  isClean());
          labelSelector_ = null;
        }
        return labelSelectorBuilder_;
      }

      private com.google.protobuf.LazyStringArrayList namespaces_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureNamespacesIsMutable() {
        if (!namespaces_.isModifiable()) {
          namespaces_ = new com.google.protobuf.LazyStringArrayList(namespaces_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * namespaces specifies a static list of namespace names that the term applies to.
       * The term is applied to the union of the namespaces listed in this field
       * and the ones selected by namespaceSelector.
       * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string namespaces = 2;</code>
       * @return A list containing the namespaces.
       */
      public com.google.protobuf.ProtocolStringList
          getNamespacesList() {
        namespaces_.makeImmutable();
        return namespaces_;
      }
      /**
       * <pre>
       * namespaces specifies a static list of namespace names that the term applies to.
       * The term is applied to the union of the namespaces listed in this field
       * and the ones selected by namespaceSelector.
       * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string namespaces = 2;</code>
       * @return The count of namespaces.
       */
      public int getNamespacesCount() {
        return namespaces_.size();
      }
      /**
       * <pre>
       * namespaces specifies a static list of namespace names that the term applies to.
       * The term is applied to the union of the namespaces listed in this field
       * and the ones selected by namespaceSelector.
       * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string namespaces = 2;</code>
       * @param index The index of the element to return.
       * @return The namespaces at the given index.
       */
      public java.lang.String getNamespaces(int index) {
        return namespaces_.get(index);
      }
      /**
       * <pre>
       * namespaces specifies a static list of namespace names that the term applies to.
       * The term is applied to the union of the namespaces listed in this field
       * and the ones selected by namespaceSelector.
       * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string namespaces = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the namespaces at the given index.
       */
      public com.google.protobuf.ByteString
          getNamespacesBytes(int index) {
        return namespaces_.getByteString(index);
      }
      /**
       * <pre>
       * namespaces specifies a static list of namespace names that the term applies to.
       * The term is applied to the union of the namespaces listed in this field
       * and the ones selected by namespaceSelector.
       * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string namespaces = 2;</code>
       * @param index The index to set the value at.
       * @param value The namespaces to set.
       * @return This builder for chaining.
       */
      public Builder setNamespaces(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNamespacesIsMutable();
        namespaces_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * namespaces specifies a static list of namespace names that the term applies to.
       * The term is applied to the union of the namespaces listed in this field
       * and the ones selected by namespaceSelector.
       * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string namespaces = 2;</code>
       * @param value The namespaces to add.
       * @return This builder for chaining.
       */
      public Builder addNamespaces(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNamespacesIsMutable();
        namespaces_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * namespaces specifies a static list of namespace names that the term applies to.
       * The term is applied to the union of the namespaces listed in this field
       * and the ones selected by namespaceSelector.
       * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string namespaces = 2;</code>
       * @param values The namespaces to add.
       * @return This builder for chaining.
       */
      public Builder addAllNamespaces(
          java.lang.Iterable<java.lang.String> values) {
        ensureNamespacesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, namespaces_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * namespaces specifies a static list of namespace names that the term applies to.
       * The term is applied to the union of the namespaces listed in this field
       * and the ones selected by namespaceSelector.
       * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string namespaces = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNamespaces() {
        namespaces_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * namespaces specifies a static list of namespace names that the term applies to.
       * The term is applied to the union of the namespaces listed in this field
       * and the ones selected by namespaceSelector.
       * null or empty namespaces list and null namespaceSelector means "this pod's namespace".
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string namespaces = 2;</code>
       * @param value The bytes of the namespaces to add.
       * @return This builder for chaining.
       */
      public Builder addNamespacesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNamespacesIsMutable();
        namespaces_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object topologyKey_ = "";
      /**
       * <pre>
       * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
       * the labelSelector in the specified namespaces, where co-located is defined as running on a node
       * whose value of the label with key topologyKey matches that of any node on which any of the
       * selected pods is running.
       * Empty topologyKey is not allowed.
       * </pre>
       *
       * <code>optional string topologyKey = 3;</code>
       * @return Whether the topologyKey field is set.
       */
      public boolean hasTopologyKey() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
       * the labelSelector in the specified namespaces, where co-located is defined as running on a node
       * whose value of the label with key topologyKey matches that of any node on which any of the
       * selected pods is running.
       * Empty topologyKey is not allowed.
       * </pre>
       *
       * <code>optional string topologyKey = 3;</code>
       * @return The topologyKey.
       */
      public java.lang.String getTopologyKey() {
        java.lang.Object ref = topologyKey_;
        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()) {
            topologyKey_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
       * the labelSelector in the specified namespaces, where co-located is defined as running on a node
       * whose value of the label with key topologyKey matches that of any node on which any of the
       * selected pods is running.
       * Empty topologyKey is not allowed.
       * </pre>
       *
       * <code>optional string topologyKey = 3;</code>
       * @return The bytes for topologyKey.
       */
      public com.google.protobuf.ByteString
          getTopologyKeyBytes() {
        java.lang.Object ref = topologyKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          topologyKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
       * the labelSelector in the specified namespaces, where co-located is defined as running on a node
       * whose value of the label with key topologyKey matches that of any node on which any of the
       * selected pods is running.
       * Empty topologyKey is not allowed.
       * </pre>
       *
       * <code>optional string topologyKey = 3;</code>
       * @param value The topologyKey to set.
       * @return This builder for chaining.
       */
      public Builder setTopologyKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        topologyKey_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
       * the labelSelector in the specified namespaces, where co-located is defined as running on a node
       * whose value of the label with key topologyKey matches that of any node on which any of the
       * selected pods is running.
       * Empty topologyKey is not allowed.
       * </pre>
       *
       * <code>optional string topologyKey = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTopologyKey() {
        topologyKey_ = getDefaultInstance().getTopologyKey();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
       * the labelSelector in the specified namespaces, where co-located is defined as running on a node
       * whose value of the label with key topologyKey matches that of any node on which any of the
       * selected pods is running.
       * Empty topologyKey is not allowed.
       * </pre>
       *
       * <code>optional string topologyKey = 3;</code>
       * @param value The bytes for topologyKey to set.
       * @return This builder for chaining.
       */
      public Builder setTopologyKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        topologyKey_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.LabelSelector namespaceSelector_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder> namespaceSelectorBuilder_;
      /**
       * <pre>
       * A label query over the set of namespaces that the term applies to.
       * The term is applied to the union of the namespaces selected by this field
       * and the ones listed in the namespaces field.
       * null selector and null or empty namespaces list means "this pod's namespace".
       * An empty selector ({}) matches all namespaces.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
       * @return Whether the namespaceSelector field is set.
       */
      public boolean hasNamespaceSelector() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * A label query over the set of namespaces that the term applies to.
       * The term is applied to the union of the namespaces selected by this field
       * and the ones listed in the namespaces field.
       * null selector and null or empty namespaces list means "this pod's namespace".
       * An empty selector ({}) matches all namespaces.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
       * @return The namespaceSelector.
       */
      public io.kubernetes.client.proto.Meta.LabelSelector getNamespaceSelector() {
        if (namespaceSelectorBuilder_ == null) {
          return namespaceSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : namespaceSelector_;
        } else {
          return namespaceSelectorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A label query over the set of namespaces that the term applies to.
       * The term is applied to the union of the namespaces selected by this field
       * and the ones listed in the namespaces field.
       * null selector and null or empty namespaces list means "this pod's namespace".
       * An empty selector ({}) matches all namespaces.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
       */
      public Builder setNamespaceSelector(io.kubernetes.client.proto.Meta.LabelSelector value) {
        if (namespaceSelectorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          namespaceSelector_ = value;
        } else {
          namespaceSelectorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A label query over the set of namespaces that the term applies to.
       * The term is applied to the union of the namespaces selected by this field
       * and the ones listed in the namespaces field.
       * null selector and null or empty namespaces list means "this pod's namespace".
       * An empty selector ({}) matches all namespaces.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
       */
      public Builder setNamespaceSelector(
          io.kubernetes.client.proto.Meta.LabelSelector.Builder builderForValue) {
        if (namespaceSelectorBuilder_ == null) {
          namespaceSelector_ = builderForValue.build();
        } else {
          namespaceSelectorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A label query over the set of namespaces that the term applies to.
       * The term is applied to the union of the namespaces selected by this field
       * and the ones listed in the namespaces field.
       * null selector and null or empty namespaces list means "this pod's namespace".
       * An empty selector ({}) matches all namespaces.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
       */
      public Builder mergeNamespaceSelector(io.kubernetes.client.proto.Meta.LabelSelector value) {
        if (namespaceSelectorBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            namespaceSelector_ != null &&
            namespaceSelector_ != io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance()) {
            getNamespaceSelectorBuilder().mergeFrom(value);
          } else {
            namespaceSelector_ = value;
          }
        } else {
          namespaceSelectorBuilder_.mergeFrom(value);
        }
        if (namespaceSelector_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * A label query over the set of namespaces that the term applies to.
       * The term is applied to the union of the namespaces selected by this field
       * and the ones listed in the namespaces field.
       * null selector and null or empty namespaces list means "this pod's namespace".
       * An empty selector ({}) matches all namespaces.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
       */
      public Builder clearNamespaceSelector() {
        bitField0_ = (bitField0_ & ~0x00000008);
        namespaceSelector_ = null;
        if (namespaceSelectorBuilder_ != null) {
          namespaceSelectorBuilder_.dispose();
          namespaceSelectorBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A label query over the set of namespaces that the term applies to.
       * The term is applied to the union of the namespaces selected by this field
       * and the ones listed in the namespaces field.
       * null selector and null or empty namespaces list means "this pod's namespace".
       * An empty selector ({}) matches all namespaces.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.LabelSelector.Builder getNamespaceSelectorBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getNamespaceSelectorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A label query over the set of namespaces that the term applies to.
       * The term is applied to the union of the namespaces selected by this field
       * and the ones listed in the namespaces field.
       * null selector and null or empty namespaces list means "this pod's namespace".
       * An empty selector ({}) matches all namespaces.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getNamespaceSelectorOrBuilder() {
        if (namespaceSelectorBuilder_ != null) {
          return namespaceSelectorBuilder_.getMessageOrBuilder();
        } else {
          return namespaceSelector_ == null ?
              io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : namespaceSelector_;
        }
      }
      /**
       * <pre>
       * A label query over the set of namespaces that the term applies to.
       * The term is applied to the union of the namespaces selected by this field
       * and the ones listed in the namespaces field.
       * null selector and null or empty namespaces list means "this pod's namespace".
       * An empty selector ({}) matches all namespaces.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder> 
          getNamespaceSelectorFieldBuilder() {
        if (namespaceSelectorBuilder_ == null) {
          namespaceSelectorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder>(
                  getNamespaceSelector(),
                  getParentForChildren(),
                  isClean());
          namespaceSelector_ = null;
        }
        return namespaceSelectorBuilder_;
      }

      private com.google.protobuf.LazyStringArrayList matchLabelKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureMatchLabelKeysIsMutable() {
        if (!matchLabelKeys_.isModifiable()) {
          matchLabelKeys_ = new com.google.protobuf.LazyStringArrayList(matchLabelKeys_);
        }
        bitField0_ |= 0x00000010;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
       * Also, matchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 5;</code>
       * @return A list containing the matchLabelKeys.
       */
      public com.google.protobuf.ProtocolStringList
          getMatchLabelKeysList() {
        matchLabelKeys_.makeImmutable();
        return matchLabelKeys_;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
       * Also, matchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 5;</code>
       * @return The count of matchLabelKeys.
       */
      public int getMatchLabelKeysCount() {
        return matchLabelKeys_.size();
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
       * Also, matchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 5;</code>
       * @param index The index of the element to return.
       * @return The matchLabelKeys at the given index.
       */
      public java.lang.String getMatchLabelKeys(int index) {
        return matchLabelKeys_.get(index);
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
       * Also, matchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 5;</code>
       * @param index The index of the value to return.
       * @return The bytes of the matchLabelKeys at the given index.
       */
      public com.google.protobuf.ByteString
          getMatchLabelKeysBytes(int index) {
        return matchLabelKeys_.getByteString(index);
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
       * Also, matchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 5;</code>
       * @param index The index to set the value at.
       * @param value The matchLabelKeys to set.
       * @return This builder for chaining.
       */
      public Builder setMatchLabelKeys(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMatchLabelKeysIsMutable();
        matchLabelKeys_.set(index, value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
       * Also, matchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 5;</code>
       * @param value The matchLabelKeys to add.
       * @return This builder for chaining.
       */
      public Builder addMatchLabelKeys(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMatchLabelKeysIsMutable();
        matchLabelKeys_.add(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
       * Also, matchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 5;</code>
       * @param values The matchLabelKeys to add.
       * @return This builder for chaining.
       */
      public Builder addAllMatchLabelKeys(
          java.lang.Iterable<java.lang.String> values) {
        ensureMatchLabelKeysIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, matchLabelKeys_);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
       * Also, matchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearMatchLabelKeys() {
        matchLabelKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both matchLabelKeys and labelSelector.
       * Also, matchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 5;</code>
       * @param value The bytes of the matchLabelKeys to add.
       * @return This builder for chaining.
       */
      public Builder addMatchLabelKeysBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMatchLabelKeysIsMutable();
        matchLabelKeys_.add(value);
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList mismatchLabelKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureMismatchLabelKeysIsMutable() {
        if (!mismatchLabelKeys_.isModifiable()) {
          mismatchLabelKeys_ = new com.google.protobuf.LazyStringArrayList(mismatchLabelKeys_);
        }
        bitField0_ |= 0x00000020;
      }
      /**
       * <pre>
       * MismatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
       * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string mismatchLabelKeys = 6;</code>
       * @return A list containing the mismatchLabelKeys.
       */
      public com.google.protobuf.ProtocolStringList
          getMismatchLabelKeysList() {
        mismatchLabelKeys_.makeImmutable();
        return mismatchLabelKeys_;
      }
      /**
       * <pre>
       * MismatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
       * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string mismatchLabelKeys = 6;</code>
       * @return The count of mismatchLabelKeys.
       */
      public int getMismatchLabelKeysCount() {
        return mismatchLabelKeys_.size();
      }
      /**
       * <pre>
       * MismatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
       * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string mismatchLabelKeys = 6;</code>
       * @param index The index of the element to return.
       * @return The mismatchLabelKeys at the given index.
       */
      public java.lang.String getMismatchLabelKeys(int index) {
        return mismatchLabelKeys_.get(index);
      }
      /**
       * <pre>
       * MismatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
       * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string mismatchLabelKeys = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the mismatchLabelKeys at the given index.
       */
      public com.google.protobuf.ByteString
          getMismatchLabelKeysBytes(int index) {
        return mismatchLabelKeys_.getByteString(index);
      }
      /**
       * <pre>
       * MismatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
       * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string mismatchLabelKeys = 6;</code>
       * @param index The index to set the value at.
       * @param value The mismatchLabelKeys to set.
       * @return This builder for chaining.
       */
      public Builder setMismatchLabelKeys(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMismatchLabelKeysIsMutable();
        mismatchLabelKeys_.set(index, value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MismatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
       * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string mismatchLabelKeys = 6;</code>
       * @param value The mismatchLabelKeys to add.
       * @return This builder for chaining.
       */
      public Builder addMismatchLabelKeys(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMismatchLabelKeysIsMutable();
        mismatchLabelKeys_.add(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MismatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
       * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string mismatchLabelKeys = 6;</code>
       * @param values The mismatchLabelKeys to add.
       * @return This builder for chaining.
       */
      public Builder addAllMismatchLabelKeys(
          java.lang.Iterable<java.lang.String> values) {
        ensureMismatchLabelKeysIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, mismatchLabelKeys_);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MismatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
       * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string mismatchLabelKeys = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearMismatchLabelKeys() {
        mismatchLabelKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MismatchLabelKeys is a set of pod label keys to select which pods will
       * be taken into consideration. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
       * to select the group of existing pods which pods will be taken into consideration
       * for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
       * pod labels will be ignored. The default value is empty.
       * The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
       * Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
       * This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string mismatchLabelKeys = 6;</code>
       * @param value The bytes of the mismatchLabelKeys to add.
       * @return This builder for chaining.
       */
      public Builder addMismatchLabelKeysBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMismatchLabelKeysIsMutable();
        mismatchLabelKeys_.add(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodAffinityTerm)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodAffinityTerm)
    private static final io.kubernetes.client.proto.V1.PodAffinityTerm DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodAffinityTerm();
    }

    public static io.kubernetes.client.proto.V1.PodAffinityTerm getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodAffinityTerm>
        PARSER = new com.google.protobuf.AbstractParser<PodAffinityTerm>() {
      @java.lang.Override
      public PodAffinityTerm 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<PodAffinityTerm> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodAffinityTerm> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAffinityTerm getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodAntiAffinityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodAntiAffinity)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * If the anti-affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the anti-affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm> 
        getRequiredDuringSchedulingIgnoredDuringExecutionList();
    /**
     * <pre>
     * If the anti-affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the anti-affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    io.kubernetes.client.proto.V1.PodAffinityTerm getRequiredDuringSchedulingIgnoredDuringExecution(int index);
    /**
     * <pre>
     * If the anti-affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the anti-affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    int getRequiredDuringSchedulingIgnoredDuringExecutionCount();
    /**
     * <pre>
     * If the anti-affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the anti-affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> 
        getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilderList();
    /**
     * <pre>
     * If the anti-affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the anti-affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilder(
        int index);

    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the anti-affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling anti-affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> 
        getPreferredDuringSchedulingIgnoredDuringExecutionList();
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the anti-affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling anti-affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    io.kubernetes.client.proto.V1.WeightedPodAffinityTerm getPreferredDuringSchedulingIgnoredDuringExecution(int index);
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the anti-affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling anti-affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    int getPreferredDuringSchedulingIgnoredDuringExecutionCount();
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the anti-affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling anti-affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder> 
        getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilderList();
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the anti-affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling anti-affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Pod anti affinity is a group of inter pod anti affinity scheduling rules.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodAntiAffinity}
   */
  public static final class PodAntiAffinity extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodAntiAffinity)
      PodAntiAffinityOrBuilder {
  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= */ "",
        PodAntiAffinity.class.getName());
    }
    // Use PodAntiAffinity.newBuilder() to construct.
    private PodAntiAffinity(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodAntiAffinity() {
      requiredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
      preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAntiAffinity_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAntiAffinity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodAntiAffinity.class, io.kubernetes.client.proto.V1.PodAntiAffinity.Builder.class);
    }

    public static final int REQUIREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm> requiredDuringSchedulingIgnoredDuringExecution_;
    /**
     * <pre>
     * If the anti-affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the anti-affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm> getRequiredDuringSchedulingIgnoredDuringExecutionList() {
      return requiredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * If the anti-affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the anti-affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> 
        getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilderList() {
      return requiredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * If the anti-affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the anti-affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public int getRequiredDuringSchedulingIgnoredDuringExecutionCount() {
      return requiredDuringSchedulingIgnoredDuringExecution_.size();
    }
    /**
     * <pre>
     * If the anti-affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the anti-affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAffinityTerm getRequiredDuringSchedulingIgnoredDuringExecution(int index) {
      return requiredDuringSchedulingIgnoredDuringExecution_.get(index);
    }
    /**
     * <pre>
     * If the anti-affinity requirements specified by this field are not met at
     * scheduling time, the pod will not be scheduled onto the node.
     * If the anti-affinity requirements specified by this field cease to be met
     * at some point during pod execution (e.g. due to a pod label update), the
     * system may or may not try to eventually evict the pod from its node.
     * When there are multiple elements, the lists of nodes corresponding to each
     * podAffinityTerm are intersected, i.e. all terms must be satisfied.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilder(
        int index) {
      return requiredDuringSchedulingIgnoredDuringExecution_.get(index);
    }

    public static final int PREFERREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> preferredDuringSchedulingIgnoredDuringExecution_;
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the anti-affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling anti-affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> getPreferredDuringSchedulingIgnoredDuringExecutionList() {
      return preferredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the anti-affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling anti-affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder> 
        getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilderList() {
      return preferredDuringSchedulingIgnoredDuringExecution_;
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the anti-affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling anti-affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public int getPreferredDuringSchedulingIgnoredDuringExecutionCount() {
      return preferredDuringSchedulingIgnoredDuringExecution_.size();
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the anti-affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling anti-affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm getPreferredDuringSchedulingIgnoredDuringExecution(int index) {
      return preferredDuringSchedulingIgnoredDuringExecution_.get(index);
    }
    /**
     * <pre>
     * The scheduler will prefer to schedule pods to nodes that satisfy
     * the anti-affinity expressions specified by this field, but it may choose
     * a node that violates one or more of the expressions. The node that is
     * most preferred is the one with the greatest sum of weights, i.e.
     * for each node that meets all of the scheduling requirements (resource
     * request, requiredDuringScheduling anti-affinity expressions, etc.),
     * compute a sum by iterating through the elements of this field and adding
     * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
     * node(s) with the highest sum are the most preferred.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilder(
        int index) {
      return preferredDuringSchedulingIgnoredDuringExecution_.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 {
      for (int i = 0; i < requiredDuringSchedulingIgnoredDuringExecution_.size(); i++) {
        output.writeMessage(1, requiredDuringSchedulingIgnoredDuringExecution_.get(i));
      }
      for (int i = 0; i < preferredDuringSchedulingIgnoredDuringExecution_.size(); i++) {
        output.writeMessage(2, preferredDuringSchedulingIgnoredDuringExecution_.get(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 < requiredDuringSchedulingIgnoredDuringExecution_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, requiredDuringSchedulingIgnoredDuringExecution_.get(i));
      }
      for (int i = 0; i < preferredDuringSchedulingIgnoredDuringExecution_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, preferredDuringSchedulingIgnoredDuringExecution_.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.V1.PodAntiAffinity)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodAntiAffinity other = (io.kubernetes.client.proto.V1.PodAntiAffinity) obj;

      if (!getRequiredDuringSchedulingIgnoredDuringExecutionList()
          .equals(other.getRequiredDuringSchedulingIgnoredDuringExecutionList())) return false;
      if (!getPreferredDuringSchedulingIgnoredDuringExecutionList()
          .equals(other.getPreferredDuringSchedulingIgnoredDuringExecutionList())) 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 (getRequiredDuringSchedulingIgnoredDuringExecutionCount() > 0) {
        hash = (37 * hash) + REQUIREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER;
        hash = (53 * hash) + getRequiredDuringSchedulingIgnoredDuringExecutionList().hashCode();
      }
      if (getPreferredDuringSchedulingIgnoredDuringExecutionCount() > 0) {
        hash = (37 * hash) + PREFERREDDURINGSCHEDULINGIGNOREDDURINGEXECUTION_FIELD_NUMBER;
        hash = (53 * hash) + getPreferredDuringSchedulingIgnoredDuringExecutionList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodAntiAffinity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAntiAffinity 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.V1.PodAntiAffinity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAntiAffinity 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.V1.PodAntiAffinity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAntiAffinity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodAntiAffinity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodAntiAffinity 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.V1.PodAntiAffinity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodAntiAffinity 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.V1.PodAntiAffinity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodAntiAffinity 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.V1.PodAntiAffinity 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>
     * Pod anti affinity is a group of inter pod anti affinity scheduling rules.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodAntiAffinity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodAntiAffinity)
        io.kubernetes.client.proto.V1.PodAntiAffinityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAntiAffinity_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAntiAffinity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodAntiAffinity.class, io.kubernetes.client.proto.V1.PodAntiAffinity.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodAntiAffinity.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          requiredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
        } else {
          requiredDuringSchedulingIgnoredDuringExecution_ = null;
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
        } else {
          preferredDuringSchedulingIgnoredDuringExecution_ = null;
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAntiAffinity_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAntiAffinity getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodAntiAffinity.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAntiAffinity build() {
        io.kubernetes.client.proto.V1.PodAntiAffinity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAntiAffinity buildPartial() {
        io.kubernetes.client.proto.V1.PodAntiAffinity result = new io.kubernetes.client.proto.V1.PodAntiAffinity(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PodAntiAffinity result) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            requiredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.unmodifiableList(requiredDuringSchedulingIgnoredDuringExecution_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.requiredDuringSchedulingIgnoredDuringExecution_ = requiredDuringSchedulingIgnoredDuringExecution_;
        } else {
          result.requiredDuringSchedulingIgnoredDuringExecution_ = requiredDuringSchedulingIgnoredDuringExecutionBuilder_.build();
        }
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.unmodifiableList(preferredDuringSchedulingIgnoredDuringExecution_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.preferredDuringSchedulingIgnoredDuringExecution_ = preferredDuringSchedulingIgnoredDuringExecution_;
        } else {
          result.preferredDuringSchedulingIgnoredDuringExecution_ = preferredDuringSchedulingIgnoredDuringExecutionBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodAntiAffinity result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodAntiAffinity) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodAntiAffinity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodAntiAffinity other) {
        if (other == io.kubernetes.client.proto.V1.PodAntiAffinity.getDefaultInstance()) return this;
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (!other.requiredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
            if (requiredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
              requiredDuringSchedulingIgnoredDuringExecution_ = other.requiredDuringSchedulingIgnoredDuringExecution_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
              requiredDuringSchedulingIgnoredDuringExecution_.addAll(other.requiredDuringSchedulingIgnoredDuringExecution_);
            }
            onChanged();
          }
        } else {
          if (!other.requiredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
            if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_.isEmpty()) {
              requiredDuringSchedulingIgnoredDuringExecutionBuilder_.dispose();
              requiredDuringSchedulingIgnoredDuringExecutionBuilder_ = null;
              requiredDuringSchedulingIgnoredDuringExecution_ = other.requiredDuringSchedulingIgnoredDuringExecution_;
              bitField0_ = (bitField0_ & ~0x00000001);
              requiredDuringSchedulingIgnoredDuringExecutionBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder() : null;
            } else {
              requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addAllMessages(other.requiredDuringSchedulingIgnoredDuringExecution_);
            }
          }
        }
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (!other.preferredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
            if (preferredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
              preferredDuringSchedulingIgnoredDuringExecution_ = other.preferredDuringSchedulingIgnoredDuringExecution_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
              preferredDuringSchedulingIgnoredDuringExecution_.addAll(other.preferredDuringSchedulingIgnoredDuringExecution_);
            }
            onChanged();
          }
        } else {
          if (!other.preferredDuringSchedulingIgnoredDuringExecution_.isEmpty()) {
            if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_.isEmpty()) {
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_.dispose();
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_ = null;
              preferredDuringSchedulingIgnoredDuringExecution_ = other.preferredDuringSchedulingIgnoredDuringExecution_;
              bitField0_ = (bitField0_ & ~0x00000002);
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder() : null;
            } else {
              preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addAllMessages(other.preferredDuringSchedulingIgnoredDuringExecution_);
            }
          }
        }
        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.V1.PodAffinityTerm m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PodAffinityTerm.parser(),
                        extensionRegistry);
                if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
                  ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
                  requiredDuringSchedulingIgnoredDuringExecution_.add(m);
                } else {
                  requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.WeightedPodAffinityTerm m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.parser(),
                        extensionRegistry);
                if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
                  ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
                  preferredDuringSchedulingIgnoredDuringExecution_.add(m);
                } else {
                  preferredDuringSchedulingIgnoredDuringExecutionBuilder_.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 java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm> requiredDuringSchedulingIgnoredDuringExecution_ =
        java.util.Collections.emptyList();
      private void ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          requiredDuringSchedulingIgnoredDuringExecution_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PodAffinityTerm>(requiredDuringSchedulingIgnoredDuringExecution_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodAffinityTerm, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder, io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> requiredDuringSchedulingIgnoredDuringExecutionBuilder_;

      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm> getRequiredDuringSchedulingIgnoredDuringExecutionList() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(requiredDuringSchedulingIgnoredDuringExecution_);
        } else {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public int getRequiredDuringSchedulingIgnoredDuringExecutionCount() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return requiredDuringSchedulingIgnoredDuringExecution_.size();
        } else {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTerm getRequiredDuringSchedulingIgnoredDuringExecution(int index) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return requiredDuringSchedulingIgnoredDuringExecution_.get(index);
        } else {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder setRequiredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PodAffinityTerm value) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.set(index, value);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder setRequiredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder builderForValue) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.set(index, builderForValue.build());
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder addRequiredDuringSchedulingIgnoredDuringExecution(io.kubernetes.client.proto.V1.PodAffinityTerm value) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.add(value);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder addRequiredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PodAffinityTerm value) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.add(index, value);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder addRequiredDuringSchedulingIgnoredDuringExecution(
          io.kubernetes.client.proto.V1.PodAffinityTerm.Builder builderForValue) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.add(builderForValue.build());
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder addRequiredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder builderForValue) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.add(index, builderForValue.build());
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder addAllRequiredDuringSchedulingIgnoredDuringExecution(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PodAffinityTerm> values) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, requiredDuringSchedulingIgnoredDuringExecution_);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder clearRequiredDuringSchedulingIgnoredDuringExecution() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          requiredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public Builder removeRequiredDuringSchedulingIgnoredDuringExecution(int index) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensureRequiredDuringSchedulingIgnoredDuringExecutionIsMutable();
          requiredDuringSchedulingIgnoredDuringExecution_.remove(index);
          onChanged();
        } else {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTerm.Builder getRequiredDuringSchedulingIgnoredDuringExecutionBuilder(
          int index) {
        return getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilder(
          int index) {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return requiredDuringSchedulingIgnoredDuringExecution_.get(index);  } else {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> 
           getRequiredDuringSchedulingIgnoredDuringExecutionOrBuilderList() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ != null) {
          return requiredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(requiredDuringSchedulingIgnoredDuringExecution_);
        }
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTerm.Builder addRequiredDuringSchedulingIgnoredDuringExecutionBuilder() {
        return getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTerm.Builder addRequiredDuringSchedulingIgnoredDuringExecutionBuilder(
          int index) {
        return getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * If the anti-affinity requirements specified by this field are not met at
       * scheduling time, the pod will not be scheduled onto the node.
       * If the anti-affinity requirements specified by this field cease to be met
       * at some point during pod execution (e.g. due to a pod label update), the
       * system may or may not try to eventually evict the pod from its node.
       * When there are multiple elements, the lists of nodes corresponding to each
       * podAffinityTerm are intersected, i.e. all terms must be satisfied.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodAffinityTerm.Builder> 
           getRequiredDuringSchedulingIgnoredDuringExecutionBuilderList() {
        return getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodAffinityTerm, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder, io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> 
          getRequiredDuringSchedulingIgnoredDuringExecutionFieldBuilder() {
        if (requiredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          requiredDuringSchedulingIgnoredDuringExecutionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PodAffinityTerm, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder, io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder>(
                  requiredDuringSchedulingIgnoredDuringExecution_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          requiredDuringSchedulingIgnoredDuringExecution_ = null;
        }
        return requiredDuringSchedulingIgnoredDuringExecutionBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> preferredDuringSchedulingIgnoredDuringExecution_ =
        java.util.Collections.emptyList();
      private void ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          preferredDuringSchedulingIgnoredDuringExecution_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm>(preferredDuringSchedulingIgnoredDuringExecution_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.WeightedPodAffinityTerm, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder, io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder> preferredDuringSchedulingIgnoredDuringExecutionBuilder_;

      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> getPreferredDuringSchedulingIgnoredDuringExecutionList() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(preferredDuringSchedulingIgnoredDuringExecution_);
        } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public int getPreferredDuringSchedulingIgnoredDuringExecutionCount() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return preferredDuringSchedulingIgnoredDuringExecution_.size();
        } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm getPreferredDuringSchedulingIgnoredDuringExecution(int index) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return preferredDuringSchedulingIgnoredDuringExecution_.get(index);
        } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder setPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm value) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.set(index, value);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder setPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder builderForValue) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.set(index, builderForValue.build());
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(io.kubernetes.client.proto.V1.WeightedPodAffinityTerm value) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(value);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm value) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(index, value);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(
          io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder builderForValue) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(builderForValue.build());
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addPreferredDuringSchedulingIgnoredDuringExecution(
          int index, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder builderForValue) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.add(index, builderForValue.build());
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder addAllPreferredDuringSchedulingIgnoredDuringExecution(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.WeightedPodAffinityTerm> values) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, preferredDuringSchedulingIgnoredDuringExecution_);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder clearPreferredDuringSchedulingIgnoredDuringExecution() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          preferredDuringSchedulingIgnoredDuringExecution_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public Builder removePreferredDuringSchedulingIgnoredDuringExecution(int index) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          ensurePreferredDuringSchedulingIgnoredDuringExecutionIsMutable();
          preferredDuringSchedulingIgnoredDuringExecution_.remove(index);
          onChanged();
        } else {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder getPreferredDuringSchedulingIgnoredDuringExecutionBuilder(
          int index) {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilder(
          int index) {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          return preferredDuringSchedulingIgnoredDuringExecution_.get(index);  } else {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder> 
           getPreferredDuringSchedulingIgnoredDuringExecutionOrBuilderList() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ != null) {
          return preferredDuringSchedulingIgnoredDuringExecutionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(preferredDuringSchedulingIgnoredDuringExecution_);
        }
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder addPreferredDuringSchedulingIgnoredDuringExecutionBuilder() {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder addPreferredDuringSchedulingIgnoredDuringExecutionBuilder(
          int index) {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.getDefaultInstance());
      }
      /**
       * <pre>
       * The scheduler will prefer to schedule pods to nodes that satisfy
       * the anti-affinity expressions specified by this field, but it may choose
       * a node that violates one or more of the expressions. The node that is
       * most preferred is the one with the greatest sum of weights, i.e.
       * for each node that meets all of the scheduling requirements (resource
       * request, requiredDuringScheduling anti-affinity expressions, etc.),
       * compute a sum by iterating through the elements of this field and adding
       * "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
       * node(s) with the highest sum are the most preferred.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder> 
           getPreferredDuringSchedulingIgnoredDuringExecutionBuilderList() {
        return getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.WeightedPodAffinityTerm, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder, io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder> 
          getPreferredDuringSchedulingIgnoredDuringExecutionFieldBuilder() {
        if (preferredDuringSchedulingIgnoredDuringExecutionBuilder_ == null) {
          preferredDuringSchedulingIgnoredDuringExecutionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.WeightedPodAffinityTerm, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder, io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder>(
                  preferredDuringSchedulingIgnoredDuringExecution_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          preferredDuringSchedulingIgnoredDuringExecution_ = null;
        }
        return preferredDuringSchedulingIgnoredDuringExecutionBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodAntiAffinity)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodAntiAffinity)
    private static final io.kubernetes.client.proto.V1.PodAntiAffinity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodAntiAffinity();
    }

    public static io.kubernetes.client.proto.V1.PodAntiAffinity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodAntiAffinity>
        PARSER = new com.google.protobuf.AbstractParser<PodAntiAffinity>() {
      @java.lang.Override
      public PodAntiAffinity 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<PodAntiAffinity> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodAntiAffinity> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAntiAffinity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodAttachOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodAttachOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Stdin if true, redirects the standard input stream of the pod for this call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 1;</code>
     * @return Whether the stdin field is set.
     */
    boolean hasStdin();
    /**
     * <pre>
     * Stdin if true, redirects the standard input stream of the pod for this call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 1;</code>
     * @return The stdin.
     */
    boolean getStdin();

    /**
     * <pre>
     * Stdout if true indicates that stdout is to be redirected for the attach call.
     * Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool stdout = 2;</code>
     * @return Whether the stdout field is set.
     */
    boolean hasStdout();
    /**
     * <pre>
     * Stdout if true indicates that stdout is to be redirected for the attach call.
     * Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool stdout = 2;</code>
     * @return The stdout.
     */
    boolean getStdout();

    /**
     * <pre>
     * Stderr if true indicates that stderr is to be redirected for the attach call.
     * Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool stderr = 3;</code>
     * @return Whether the stderr field is set.
     */
    boolean hasStderr();
    /**
     * <pre>
     * Stderr if true indicates that stderr is to be redirected for the attach call.
     * Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool stderr = 3;</code>
     * @return The stderr.
     */
    boolean getStderr();

    /**
     * <pre>
     * TTY if true indicates that a tty will be allocated for the attach call.
     * This is passed through the container runtime so the tty
     * is allocated on the worker node by the container runtime.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 4;</code>
     * @return Whether the tty field is set.
     */
    boolean hasTty();
    /**
     * <pre>
     * TTY if true indicates that a tty will be allocated for the attach call.
     * This is passed through the container runtime so the tty
     * is allocated on the worker node by the container runtime.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 4;</code>
     * @return The tty.
     */
    boolean getTty();

    /**
     * <pre>
     * The container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return Whether the container field is set.
     */
    boolean hasContainer();
    /**
     * <pre>
     * The container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return The container.
     */
    java.lang.String getContainer();
    /**
     * <pre>
     * The container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return The bytes for container.
     */
    com.google.protobuf.ByteString
        getContainerBytes();
  }
  /**
   * <pre>
   * PodAttachOptions is the query options to a Pod's remote attach call.
   * ---
   * TODO: merge w/ PodExecOptions below for stdin, stdout, etc
   * and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodAttachOptions}
   */
  public static final class PodAttachOptions extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodAttachOptions)
      PodAttachOptionsOrBuilder {
  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= */ "",
        PodAttachOptions.class.getName());
    }
    // Use PodAttachOptions.newBuilder() to construct.
    private PodAttachOptions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodAttachOptions() {
      container_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAttachOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAttachOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodAttachOptions.class, io.kubernetes.client.proto.V1.PodAttachOptions.Builder.class);
    }

    private int bitField0_;
    public static final int STDIN_FIELD_NUMBER = 1;
    private boolean stdin_ = false;
    /**
     * <pre>
     * Stdin if true, redirects the standard input stream of the pod for this call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 1;</code>
     * @return Whether the stdin field is set.
     */
    @java.lang.Override
    public boolean hasStdin() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Stdin if true, redirects the standard input stream of the pod for this call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 1;</code>
     * @return The stdin.
     */
    @java.lang.Override
    public boolean getStdin() {
      return stdin_;
    }

    public static final int STDOUT_FIELD_NUMBER = 2;
    private boolean stdout_ = false;
    /**
     * <pre>
     * Stdout if true indicates that stdout is to be redirected for the attach call.
     * Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool stdout = 2;</code>
     * @return Whether the stdout field is set.
     */
    @java.lang.Override
    public boolean hasStdout() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Stdout if true indicates that stdout is to be redirected for the attach call.
     * Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool stdout = 2;</code>
     * @return The stdout.
     */
    @java.lang.Override
    public boolean getStdout() {
      return stdout_;
    }

    public static final int STDERR_FIELD_NUMBER = 3;
    private boolean stderr_ = false;
    /**
     * <pre>
     * Stderr if true indicates that stderr is to be redirected for the attach call.
     * Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool stderr = 3;</code>
     * @return Whether the stderr field is set.
     */
    @java.lang.Override
    public boolean hasStderr() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Stderr if true indicates that stderr is to be redirected for the attach call.
     * Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool stderr = 3;</code>
     * @return The stderr.
     */
    @java.lang.Override
    public boolean getStderr() {
      return stderr_;
    }

    public static final int TTY_FIELD_NUMBER = 4;
    private boolean tty_ = false;
    /**
     * <pre>
     * TTY if true indicates that a tty will be allocated for the attach call.
     * This is passed through the container runtime so the tty
     * is allocated on the worker node by the container runtime.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 4;</code>
     * @return Whether the tty field is set.
     */
    @java.lang.Override
    public boolean hasTty() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * TTY if true indicates that a tty will be allocated for the attach call.
     * This is passed through the container runtime so the tty
     * is allocated on the worker node by the container runtime.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 4;</code>
     * @return The tty.
     */
    @java.lang.Override
    public boolean getTty() {
      return tty_;
    }

    public static final int CONTAINER_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object container_ = "";
    /**
     * <pre>
     * The container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return Whether the container field is set.
     */
    @java.lang.Override
    public boolean hasContainer() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * The container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return The container.
     */
    @java.lang.Override
    public java.lang.String getContainer() {
      java.lang.Object ref = container_;
      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()) {
          container_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return The bytes for container.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getContainerBytes() {
      java.lang.Object ref = container_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        container_ = 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)) {
        output.writeBool(1, stdin_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, stdout_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, stderr_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, tty_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, container_);
      }
      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, stdin_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, stdout_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, stderr_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, tty_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, container_);
      }
      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.V1.PodAttachOptions)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodAttachOptions other = (io.kubernetes.client.proto.V1.PodAttachOptions) obj;

      if (hasStdin() != other.hasStdin()) return false;
      if (hasStdin()) {
        if (getStdin()
            != other.getStdin()) return false;
      }
      if (hasStdout() != other.hasStdout()) return false;
      if (hasStdout()) {
        if (getStdout()
            != other.getStdout()) return false;
      }
      if (hasStderr() != other.hasStderr()) return false;
      if (hasStderr()) {
        if (getStderr()
            != other.getStderr()) return false;
      }
      if (hasTty() != other.hasTty()) return false;
      if (hasTty()) {
        if (getTty()
            != other.getTty()) return false;
      }
      if (hasContainer() != other.hasContainer()) return false;
      if (hasContainer()) {
        if (!getContainer()
            .equals(other.getContainer())) 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 (hasStdin()) {
        hash = (37 * hash) + STDIN_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStdin());
      }
      if (hasStdout()) {
        hash = (37 * hash) + STDOUT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStdout());
      }
      if (hasStderr()) {
        hash = (37 * hash) + STDERR_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStderr());
      }
      if (hasTty()) {
        hash = (37 * hash) + TTY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getTty());
      }
      if (hasContainer()) {
        hash = (37 * hash) + CONTAINER_FIELD_NUMBER;
        hash = (53 * hash) + getContainer().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodAttachOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAttachOptions 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.V1.PodAttachOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAttachOptions 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.V1.PodAttachOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodAttachOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodAttachOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodAttachOptions 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.V1.PodAttachOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodAttachOptions 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.V1.PodAttachOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodAttachOptions 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.V1.PodAttachOptions 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>
     * PodAttachOptions is the query options to a Pod's remote attach call.
     * ---
     * TODO: merge w/ PodExecOptions below for stdin, stdout, etc
     * and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodAttachOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodAttachOptions)
        io.kubernetes.client.proto.V1.PodAttachOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAttachOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAttachOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodAttachOptions.class, io.kubernetes.client.proto.V1.PodAttachOptions.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodAttachOptions.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        stdin_ = false;
        stdout_ = false;
        stderr_ = false;
        tty_ = false;
        container_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodAttachOptions_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAttachOptions getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodAttachOptions.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAttachOptions build() {
        io.kubernetes.client.proto.V1.PodAttachOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodAttachOptions buildPartial() {
        io.kubernetes.client.proto.V1.PodAttachOptions result = new io.kubernetes.client.proto.V1.PodAttachOptions(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodAttachOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.stdin_ = stdin_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.stdout_ = stdout_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.stderr_ = stderr_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.tty_ = tty_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.container_ = container_;
          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.V1.PodAttachOptions) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodAttachOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodAttachOptions other) {
        if (other == io.kubernetes.client.proto.V1.PodAttachOptions.getDefaultInstance()) return this;
        if (other.hasStdin()) {
          setStdin(other.getStdin());
        }
        if (other.hasStdout()) {
          setStdout(other.getStdout());
        }
        if (other.hasStderr()) {
          setStderr(other.getStderr());
        }
        if (other.hasTty()) {
          setTty(other.getTty());
        }
        if (other.hasContainer()) {
          container_ = other.container_;
          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 8: {
                stdin_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                stdout_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                stderr_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                tty_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                container_ = 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 boolean stdin_ ;
      /**
       * <pre>
       * Stdin if true, redirects the standard input stream of the pod for this call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 1;</code>
       * @return Whether the stdin field is set.
       */
      @java.lang.Override
      public boolean hasStdin() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Stdin if true, redirects the standard input stream of the pod for this call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 1;</code>
       * @return The stdin.
       */
      @java.lang.Override
      public boolean getStdin() {
        return stdin_;
      }
      /**
       * <pre>
       * Stdin if true, redirects the standard input stream of the pod for this call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 1;</code>
       * @param value The stdin to set.
       * @return This builder for chaining.
       */
      public Builder setStdin(boolean value) {

        stdin_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Stdin if true, redirects the standard input stream of the pod for this call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStdin() {
        bitField0_ = (bitField0_ & ~0x00000001);
        stdin_ = false;
        onChanged();
        return this;
      }

      private boolean stdout_ ;
      /**
       * <pre>
       * Stdout if true indicates that stdout is to be redirected for the attach call.
       * Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool stdout = 2;</code>
       * @return Whether the stdout field is set.
       */
      @java.lang.Override
      public boolean hasStdout() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Stdout if true indicates that stdout is to be redirected for the attach call.
       * Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool stdout = 2;</code>
       * @return The stdout.
       */
      @java.lang.Override
      public boolean getStdout() {
        return stdout_;
      }
      /**
       * <pre>
       * Stdout if true indicates that stdout is to be redirected for the attach call.
       * Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool stdout = 2;</code>
       * @param value The stdout to set.
       * @return This builder for chaining.
       */
      public Builder setStdout(boolean value) {

        stdout_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Stdout if true indicates that stdout is to be redirected for the attach call.
       * Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool stdout = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStdout() {
        bitField0_ = (bitField0_ & ~0x00000002);
        stdout_ = false;
        onChanged();
        return this;
      }

      private boolean stderr_ ;
      /**
       * <pre>
       * Stderr if true indicates that stderr is to be redirected for the attach call.
       * Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool stderr = 3;</code>
       * @return Whether the stderr field is set.
       */
      @java.lang.Override
      public boolean hasStderr() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Stderr if true indicates that stderr is to be redirected for the attach call.
       * Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool stderr = 3;</code>
       * @return The stderr.
       */
      @java.lang.Override
      public boolean getStderr() {
        return stderr_;
      }
      /**
       * <pre>
       * Stderr if true indicates that stderr is to be redirected for the attach call.
       * Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool stderr = 3;</code>
       * @param value The stderr to set.
       * @return This builder for chaining.
       */
      public Builder setStderr(boolean value) {

        stderr_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Stderr if true indicates that stderr is to be redirected for the attach call.
       * Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool stderr = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStderr() {
        bitField0_ = (bitField0_ & ~0x00000004);
        stderr_ = false;
        onChanged();
        return this;
      }

      private boolean tty_ ;
      /**
       * <pre>
       * TTY if true indicates that a tty will be allocated for the attach call.
       * This is passed through the container runtime so the tty
       * is allocated on the worker node by the container runtime.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 4;</code>
       * @return Whether the tty field is set.
       */
      @java.lang.Override
      public boolean hasTty() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * TTY if true indicates that a tty will be allocated for the attach call.
       * This is passed through the container runtime so the tty
       * is allocated on the worker node by the container runtime.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 4;</code>
       * @return The tty.
       */
      @java.lang.Override
      public boolean getTty() {
        return tty_;
      }
      /**
       * <pre>
       * TTY if true indicates that a tty will be allocated for the attach call.
       * This is passed through the container runtime so the tty
       * is allocated on the worker node by the container runtime.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 4;</code>
       * @param value The tty to set.
       * @return This builder for chaining.
       */
      public Builder setTty(boolean value) {

        tty_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TTY if true indicates that a tty will be allocated for the attach call.
       * This is passed through the container runtime so the tty
       * is allocated on the worker node by the container runtime.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTty() {
        bitField0_ = (bitField0_ & ~0x00000008);
        tty_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object container_ = "";
      /**
       * <pre>
       * The container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @return Whether the container field is set.
       */
      public boolean hasContainer() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * The container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @return The container.
       */
      public java.lang.String getContainer() {
        java.lang.Object ref = container_;
        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()) {
            container_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @return The bytes for container.
       */
      public com.google.protobuf.ByteString
          getContainerBytes() {
        java.lang.Object ref = container_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          container_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @param value The container to set.
       * @return This builder for chaining.
       */
      public Builder setContainer(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        container_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearContainer() {
        container_ = getDefaultInstance().getContainer();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @param value The bytes for container to set.
       * @return This builder for chaining.
       */
      public Builder setContainerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        container_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodAttachOptions)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodAttachOptions)
    private static final io.kubernetes.client.proto.V1.PodAttachOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodAttachOptions();
    }

    public static io.kubernetes.client.proto.V1.PodAttachOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodAttachOptions>
        PARSER = new com.google.protobuf.AbstractParser<PodAttachOptions>() {
      @java.lang.Override
      public PodAttachOptions 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<PodAttachOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodAttachOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAttachOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodConditionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodCondition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Type is the type of the condition.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * Type is the type of the condition.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * Type is the type of the condition.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </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.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </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.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </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.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The bytes for status.
     */
    com.google.protobuf.ByteString
        getStatusBytes();

    /**
     * <pre>
     * Last time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     * @return Whether the lastProbeTime field is set.
     */
    boolean hasLastProbeTime();
    /**
     * <pre>
     * Last time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     * @return The lastProbeTime.
     */
    io.kubernetes.client.proto.Meta.Time getLastProbeTime();
    /**
     * <pre>
     * Last time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastProbeTimeOrBuilder();

    /**
     * <pre>
     * Last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return Whether the lastTransitionTime field is set.
     */
    boolean hasLastTransitionTime();
    /**
     * <pre>
     * Last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return The lastTransitionTime.
     */
    io.kubernetes.client.proto.Meta.Time getLastTransitionTime();
    /**
     * <pre>
     * Last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastTransitionTimeOrBuilder();

    /**
     * <pre>
     * Unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * Unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * Unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * Human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * Human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * Human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * <pre>
   * PodCondition contains details for the current condition of this pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodCondition}
   */
  public static final class PodCondition extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodCondition)
      PodConditionOrBuilder {
  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= */ "",
        PodCondition.class.getName());
    }
    // Use PodCondition.newBuilder() to construct.
    private PodCondition(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodCondition() {
      type_ = "";
      status_ = "";
      reason_ = "";
      message_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodCondition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodCondition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodCondition.class, io.kubernetes.client.proto.V1.PodCondition.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.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </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.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </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.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </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.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </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.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </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.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * </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 LASTPROBETIME_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.Meta.Time lastProbeTime_;
    /**
     * <pre>
     * Last time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     * @return Whether the lastProbeTime field is set.
     */
    @java.lang.Override
    public boolean hasLastProbeTime() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Last time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     * @return The lastProbeTime.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getLastProbeTime() {
      return lastProbeTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastProbeTime_;
    }
    /**
     * <pre>
     * Last time we probed the condition.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastProbeTimeOrBuilder() {
      return lastProbeTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastProbeTime_;
    }

    public static final int LASTTRANSITIONTIME_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.Meta.Time lastTransitionTime_;
    /**
     * <pre>
     * Last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
     * @return Whether the lastTransitionTime field is set.
     */
    @java.lang.Override
    public boolean hasLastTransitionTime() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
     * Last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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 = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * Unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * Unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</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>
     * Unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 5;</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 = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * Human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</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>
     * Human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 6;</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, getLastProbeTime());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getLastTransitionTime());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, reason_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, 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, getLastProbeTime());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getLastTransitionTime());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, reason_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, 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.V1.PodCondition)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodCondition other = (io.kubernetes.client.proto.V1.PodCondition) 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 (hasLastProbeTime() != other.hasLastProbeTime()) return false;
      if (hasLastProbeTime()) {
        if (!getLastProbeTime()
            .equals(other.getLastProbeTime())) 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 (hasLastProbeTime()) {
        hash = (37 * hash) + LASTPROBETIME_FIELD_NUMBER;
        hash = (53 * hash) + getLastProbeTime().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.V1.PodCondition parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodCondition 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.V1.PodCondition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodCondition 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.V1.PodCondition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodCondition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodCondition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodCondition 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.V1.PodCondition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodCondition 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.V1.PodCondition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodCondition 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.V1.PodCondition 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>
     * PodCondition contains details for the current condition of this pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodCondition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodCondition)
        io.kubernetes.client.proto.V1.PodConditionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodCondition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodCondition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodCondition.class, io.kubernetes.client.proto.V1.PodCondition.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodCondition.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLastProbeTimeFieldBuilder();
          getLastTransitionTimeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = "";
        status_ = "";
        lastProbeTime_ = null;
        if (lastProbeTimeBuilder_ != null) {
          lastProbeTimeBuilder_.dispose();
          lastProbeTimeBuilder_ = null;
        }
        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.V1.internal_static_k8s_io_api_core_v1_PodCondition_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodCondition getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodCondition.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodCondition build() {
        io.kubernetes.client.proto.V1.PodCondition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodCondition buildPartial() {
        io.kubernetes.client.proto.V1.PodCondition result = new io.kubernetes.client.proto.V1.PodCondition(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodCondition 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.lastProbeTime_ = lastProbeTimeBuilder_ == null
              ? lastProbeTime_
              : lastProbeTimeBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.lastTransitionTime_ = lastTransitionTimeBuilder_ == null
              ? lastTransitionTime_
              : lastTransitionTimeBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.message_ = message_;
          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.V1.PodCondition) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodCondition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodCondition other) {
        if (other == io.kubernetes.client.proto.V1.PodCondition.getDefaultInstance()) return this;
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasStatus()) {
          status_ = other.status_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasLastProbeTime()) {
          mergeLastProbeTime(other.getLastProbeTime());
        }
        if (other.hasLastTransitionTime()) {
          mergeLastTransitionTime(other.getLastTransitionTime());
        }
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          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: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                status_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getLastProbeTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getLastTransitionTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                reason_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                message_ = 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 type_ = "";
      /**
       * <pre>
       * Type is the type of the condition.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * </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 lastProbeTime_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> lastProbeTimeBuilder_;
      /**
       * <pre>
       * Last time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       * @return Whether the lastProbeTime field is set.
       */
      public boolean hasLastProbeTime() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Last time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       * @return The lastProbeTime.
       */
      public io.kubernetes.client.proto.Meta.Time getLastProbeTime() {
        if (lastProbeTimeBuilder_ == null) {
          return lastProbeTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastProbeTime_;
        } else {
          return lastProbeTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Last time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public Builder setLastProbeTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastProbeTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastProbeTime_ = value;
        } else {
          lastProbeTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public Builder setLastProbeTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (lastProbeTimeBuilder_ == null) {
          lastProbeTime_ = builderForValue.build();
        } else {
          lastProbeTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public Builder mergeLastProbeTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastProbeTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            lastProbeTime_ != null &&
            lastProbeTime_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getLastProbeTimeBuilder().mergeFrom(value);
          } else {
            lastProbeTime_ = value;
          }
        } else {
          lastProbeTimeBuilder_.mergeFrom(value);
        }
        if (lastProbeTime_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Last time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public Builder clearLastProbeTime() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lastProbeTime_ = null;
        if (lastProbeTimeBuilder_ != null) {
          lastProbeTimeBuilder_.dispose();
          lastProbeTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastProbeTimeBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getLastProbeTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Last time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastProbeTimeOrBuilder() {
        if (lastProbeTimeBuilder_ != null) {
          return lastProbeTimeBuilder_.getMessageOrBuilder();
        } else {
          return lastProbeTime_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastProbeTime_;
        }
      }
      /**
       * <pre>
       * Last time we probed the condition.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 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> 
          getLastProbeTimeFieldBuilder() {
        if (lastProbeTimeBuilder_ == null) {
          lastProbeTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getLastProbeTime(),
                  getParentForChildren(),
                  isClean());
          lastProbeTime_ = null;
        }
        return lastProbeTimeBuilder_;
      }

      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>
       * Last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       * @return Whether the lastTransitionTime field is set.
       */
      public boolean hasLastTransitionTime() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * Last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public Builder setLastTransitionTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (lastTransitionTimeBuilder_ == null) {
          lastTransitionTime_ = builderForValue.build();
        } else {
          lastTransitionTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public Builder mergeLastTransitionTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastTransitionTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 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_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public Builder clearLastTransitionTime() {
        bitField0_ = (bitField0_ & ~0x00000008);
        lastTransitionTime_ = null;
        if (lastTransitionTimeBuilder_ != null) {
          lastTransitionTimeBuilder_.dispose();
          lastTransitionTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastTransitionTimeBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getLastTransitionTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * Last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;</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>
       * Unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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>
       * Unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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>
       * Unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 5;</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_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * Human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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>
       * Human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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>
       * Human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 6;</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_ |= 0x00000020;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodCondition)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodCondition)
    private static final io.kubernetes.client.proto.V1.PodCondition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodCondition();
    }

    public static io.kubernetes.client.proto.V1.PodCondition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodCondition>
        PARSER = new com.google.protobuf.AbstractParser<PodCondition>() {
      @java.lang.Override
      public PodCondition 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<PodCondition> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodCondition> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodCondition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodDNSConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodDNSConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A list of DNS name server IP addresses.
     * This will be appended to the base nameservers generated from DNSPolicy.
     * Duplicated nameservers will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string nameservers = 1;</code>
     * @return A list containing the nameservers.
     */
    java.util.List<java.lang.String>
        getNameserversList();
    /**
     * <pre>
     * A list of DNS name server IP addresses.
     * This will be appended to the base nameservers generated from DNSPolicy.
     * Duplicated nameservers will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string nameservers = 1;</code>
     * @return The count of nameservers.
     */
    int getNameserversCount();
    /**
     * <pre>
     * A list of DNS name server IP addresses.
     * This will be appended to the base nameservers generated from DNSPolicy.
     * Duplicated nameservers will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string nameservers = 1;</code>
     * @param index The index of the element to return.
     * @return The nameservers at the given index.
     */
    java.lang.String getNameservers(int index);
    /**
     * <pre>
     * A list of DNS name server IP addresses.
     * This will be appended to the base nameservers generated from DNSPolicy.
     * Duplicated nameservers will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string nameservers = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the nameservers at the given index.
     */
    com.google.protobuf.ByteString
        getNameserversBytes(int index);

    /**
     * <pre>
     * A list of DNS search domains for host-name lookup.
     * This will be appended to the base search paths generated from DNSPolicy.
     * Duplicated search paths will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string searches = 2;</code>
     * @return A list containing the searches.
     */
    java.util.List<java.lang.String>
        getSearchesList();
    /**
     * <pre>
     * A list of DNS search domains for host-name lookup.
     * This will be appended to the base search paths generated from DNSPolicy.
     * Duplicated search paths will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string searches = 2;</code>
     * @return The count of searches.
     */
    int getSearchesCount();
    /**
     * <pre>
     * A list of DNS search domains for host-name lookup.
     * This will be appended to the base search paths generated from DNSPolicy.
     * Duplicated search paths will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string searches = 2;</code>
     * @param index The index of the element to return.
     * @return The searches at the given index.
     */
    java.lang.String getSearches(int index);
    /**
     * <pre>
     * A list of DNS search domains for host-name lookup.
     * This will be appended to the base search paths generated from DNSPolicy.
     * Duplicated search paths will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string searches = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the searches at the given index.
     */
    com.google.protobuf.ByteString
        getSearchesBytes(int index);

    /**
     * <pre>
     * A list of DNS resolver options.
     * This will be merged with the base options generated from DNSPolicy.
     * Duplicated entries will be removed. Resolution options given in Options
     * will override those that appear in the base DNSPolicy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PodDNSConfigOption> 
        getOptionsList();
    /**
     * <pre>
     * A list of DNS resolver options.
     * This will be merged with the base options generated from DNSPolicy.
     * Duplicated entries will be removed. Resolution options given in Options
     * will override those that appear in the base DNSPolicy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
     */
    io.kubernetes.client.proto.V1.PodDNSConfigOption getOptions(int index);
    /**
     * <pre>
     * A list of DNS resolver options.
     * This will be merged with the base options generated from DNSPolicy.
     * Duplicated entries will be removed. Resolution options given in Options
     * will override those that appear in the base DNSPolicy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
     */
    int getOptionsCount();
    /**
     * <pre>
     * A list of DNS resolver options.
     * This will be merged with the base options generated from DNSPolicy.
     * Duplicated entries will be removed. Resolution options given in Options
     * will override those that appear in the base DNSPolicy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodDNSConfigOptionOrBuilder> 
        getOptionsOrBuilderList();
    /**
     * <pre>
     * A list of DNS resolver options.
     * This will be merged with the base options generated from DNSPolicy.
     * Duplicated entries will be removed. Resolution options given in Options
     * will override those that appear in the base DNSPolicy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
     */
    io.kubernetes.client.proto.V1.PodDNSConfigOptionOrBuilder getOptionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * PodDNSConfig defines the DNS parameters of a pod in addition to
   * those generated from DNSPolicy.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodDNSConfig}
   */
  public static final class PodDNSConfig extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodDNSConfig)
      PodDNSConfigOrBuilder {
  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= */ "",
        PodDNSConfig.class.getName());
    }
    // Use PodDNSConfig.newBuilder() to construct.
    private PodDNSConfig(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodDNSConfig() {
      nameservers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      searches_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      options_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodDNSConfig_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodDNSConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodDNSConfig.class, io.kubernetes.client.proto.V1.PodDNSConfig.Builder.class);
    }

    public static final int NAMESERVERS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList nameservers_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * A list of DNS name server IP addresses.
     * This will be appended to the base nameservers generated from DNSPolicy.
     * Duplicated nameservers will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string nameservers = 1;</code>
     * @return A list containing the nameservers.
     */
    public com.google.protobuf.ProtocolStringList
        getNameserversList() {
      return nameservers_;
    }
    /**
     * <pre>
     * A list of DNS name server IP addresses.
     * This will be appended to the base nameservers generated from DNSPolicy.
     * Duplicated nameservers will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string nameservers = 1;</code>
     * @return The count of nameservers.
     */
    public int getNameserversCount() {
      return nameservers_.size();
    }
    /**
     * <pre>
     * A list of DNS name server IP addresses.
     * This will be appended to the base nameservers generated from DNSPolicy.
     * Duplicated nameservers will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string nameservers = 1;</code>
     * @param index The index of the element to return.
     * @return The nameservers at the given index.
     */
    public java.lang.String getNameservers(int index) {
      return nameservers_.get(index);
    }
    /**
     * <pre>
     * A list of DNS name server IP addresses.
     * This will be appended to the base nameservers generated from DNSPolicy.
     * Duplicated nameservers will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string nameservers = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the nameservers at the given index.
     */
    public com.google.protobuf.ByteString
        getNameserversBytes(int index) {
      return nameservers_.getByteString(index);
    }

    public static final int SEARCHES_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList searches_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * A list of DNS search domains for host-name lookup.
     * This will be appended to the base search paths generated from DNSPolicy.
     * Duplicated search paths will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string searches = 2;</code>
     * @return A list containing the searches.
     */
    public com.google.protobuf.ProtocolStringList
        getSearchesList() {
      return searches_;
    }
    /**
     * <pre>
     * A list of DNS search domains for host-name lookup.
     * This will be appended to the base search paths generated from DNSPolicy.
     * Duplicated search paths will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string searches = 2;</code>
     * @return The count of searches.
     */
    public int getSearchesCount() {
      return searches_.size();
    }
    /**
     * <pre>
     * A list of DNS search domains for host-name lookup.
     * This will be appended to the base search paths generated from DNSPolicy.
     * Duplicated search paths will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string searches = 2;</code>
     * @param index The index of the element to return.
     * @return The searches at the given index.
     */
    public java.lang.String getSearches(int index) {
      return searches_.get(index);
    }
    /**
     * <pre>
     * A list of DNS search domains for host-name lookup.
     * This will be appended to the base search paths generated from DNSPolicy.
     * Duplicated search paths will be removed.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string searches = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the searches at the given index.
     */
    public com.google.protobuf.ByteString
        getSearchesBytes(int index) {
      return searches_.getByteString(index);
    }

    public static final int OPTIONS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PodDNSConfigOption> options_;
    /**
     * <pre>
     * A list of DNS resolver options.
     * This will be merged with the base options generated from DNSPolicy.
     * Duplicated entries will be removed. Resolution options given in Options
     * will override those that appear in the base DNSPolicy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PodDNSConfigOption> getOptionsList() {
      return options_;
    }
    /**
     * <pre>
     * A list of DNS resolver options.
     * This will be merged with the base options generated from DNSPolicy.
     * Duplicated entries will be removed. Resolution options given in Options
     * will override those that appear in the base DNSPolicy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodDNSConfigOptionOrBuilder> 
        getOptionsOrBuilderList() {
      return options_;
    }
    /**
     * <pre>
     * A list of DNS resolver options.
     * This will be merged with the base options generated from DNSPolicy.
     * Duplicated entries will be removed. Resolution options given in Options
     * will override those that appear in the base DNSPolicy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
     */
    @java.lang.Override
    public int getOptionsCount() {
      return options_.size();
    }
    /**
     * <pre>
     * A list of DNS resolver options.
     * This will be merged with the base options generated from DNSPolicy.
     * Duplicated entries will be removed. Resolution options given in Options
     * will override those that appear in the base DNSPolicy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodDNSConfigOption getOptions(int index) {
      return options_.get(index);
    }
    /**
     * <pre>
     * A list of DNS resolver options.
     * This will be merged with the base options generated from DNSPolicy.
     * Duplicated entries will be removed. Resolution options given in Options
     * will override those that appear in the base DNSPolicy.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodDNSConfigOptionOrBuilder getOptionsOrBuilder(
        int index) {
      return options_.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 {
      for (int i = 0; i < nameservers_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, nameservers_.getRaw(i));
      }
      for (int i = 0; i < searches_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, searches_.getRaw(i));
      }
      for (int i = 0; i < options_.size(); i++) {
        output.writeMessage(3, options_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < nameservers_.size(); i++) {
          dataSize += computeStringSizeNoTag(nameservers_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getNameserversList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < searches_.size(); i++) {
          dataSize += computeStringSizeNoTag(searches_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getSearchesList().size();
      }
      for (int i = 0; i < options_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, options_.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.V1.PodDNSConfig)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodDNSConfig other = (io.kubernetes.client.proto.V1.PodDNSConfig) obj;

      if (!getNameserversList()
          .equals(other.getNameserversList())) return false;
      if (!getSearchesList()
          .equals(other.getSearchesList())) return false;
      if (!getOptionsList()
          .equals(other.getOptionsList())) 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 (getNameserversCount() > 0) {
        hash = (37 * hash) + NAMESERVERS_FIELD_NUMBER;
        hash = (53 * hash) + getNameserversList().hashCode();
      }
      if (getSearchesCount() > 0) {
        hash = (37 * hash) + SEARCHES_FIELD_NUMBER;
        hash = (53 * hash) + getSearchesList().hashCode();
      }
      if (getOptionsCount() > 0) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodDNSConfig parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfig 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.V1.PodDNSConfig parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfig 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.V1.PodDNSConfig parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfig parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfig parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfig 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.V1.PodDNSConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodDNSConfig 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.V1.PodDNSConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfig 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.V1.PodDNSConfig 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>
     * PodDNSConfig defines the DNS parameters of a pod in addition to
     * those generated from DNSPolicy.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodDNSConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodDNSConfig)
        io.kubernetes.client.proto.V1.PodDNSConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodDNSConfig_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodDNSConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodDNSConfig.class, io.kubernetes.client.proto.V1.PodDNSConfig.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodDNSConfig.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        nameservers_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        searches_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        if (optionsBuilder_ == null) {
          options_ = java.util.Collections.emptyList();
        } else {
          options_ = null;
          optionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodDNSConfig_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodDNSConfig getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodDNSConfig.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodDNSConfig build() {
        io.kubernetes.client.proto.V1.PodDNSConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodDNSConfig buildPartial() {
        io.kubernetes.client.proto.V1.PodDNSConfig result = new io.kubernetes.client.proto.V1.PodDNSConfig(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PodDNSConfig result) {
        if (optionsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            options_ = java.util.Collections.unmodifiableList(options_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.options_ = options_;
        } else {
          result.options_ = optionsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodDNSConfig result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          nameservers_.makeImmutable();
          result.nameservers_ = nameservers_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          searches_.makeImmutable();
          result.searches_ = searches_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodDNSConfig) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodDNSConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodDNSConfig other) {
        if (other == io.kubernetes.client.proto.V1.PodDNSConfig.getDefaultInstance()) return this;
        if (!other.nameservers_.isEmpty()) {
          if (nameservers_.isEmpty()) {
            nameservers_ = other.nameservers_;
            bitField0_ |= 0x00000001;
          } else {
            ensureNameserversIsMutable();
            nameservers_.addAll(other.nameservers_);
          }
          onChanged();
        }
        if (!other.searches_.isEmpty()) {
          if (searches_.isEmpty()) {
            searches_ = other.searches_;
            bitField0_ |= 0x00000002;
          } else {
            ensureSearchesIsMutable();
            searches_.addAll(other.searches_);
          }
          onChanged();
        }
        if (optionsBuilder_ == null) {
          if (!other.options_.isEmpty()) {
            if (options_.isEmpty()) {
              options_ = other.options_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureOptionsIsMutable();
              options_.addAll(other.options_);
            }
            onChanged();
          }
        } else {
          if (!other.options_.isEmpty()) {
            if (optionsBuilder_.isEmpty()) {
              optionsBuilder_.dispose();
              optionsBuilder_ = null;
              options_ = other.options_;
              bitField0_ = (bitField0_ & ~0x00000004);
              optionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getOptionsFieldBuilder() : null;
            } else {
              optionsBuilder_.addAllMessages(other.options_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureNameserversIsMutable();
                nameservers_.add(bs);
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureSearchesIsMutable();
                searches_.add(bs);
                break;
              } // case 18
              case 26: {
                io.kubernetes.client.proto.V1.PodDNSConfigOption m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PodDNSConfigOption.parser(),
                        extensionRegistry);
                if (optionsBuilder_ == null) {
                  ensureOptionsIsMutable();
                  options_.add(m);
                } else {
                  optionsBuilder_.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 com.google.protobuf.LazyStringArrayList nameservers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureNameserversIsMutable() {
        if (!nameservers_.isModifiable()) {
          nameservers_ = new com.google.protobuf.LazyStringArrayList(nameservers_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * A list of DNS name server IP addresses.
       * This will be appended to the base nameservers generated from DNSPolicy.
       * Duplicated nameservers will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string nameservers = 1;</code>
       * @return A list containing the nameservers.
       */
      public com.google.protobuf.ProtocolStringList
          getNameserversList() {
        nameservers_.makeImmutable();
        return nameservers_;
      }
      /**
       * <pre>
       * A list of DNS name server IP addresses.
       * This will be appended to the base nameservers generated from DNSPolicy.
       * Duplicated nameservers will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string nameservers = 1;</code>
       * @return The count of nameservers.
       */
      public int getNameserversCount() {
        return nameservers_.size();
      }
      /**
       * <pre>
       * A list of DNS name server IP addresses.
       * This will be appended to the base nameservers generated from DNSPolicy.
       * Duplicated nameservers will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string nameservers = 1;</code>
       * @param index The index of the element to return.
       * @return The nameservers at the given index.
       */
      public java.lang.String getNameservers(int index) {
        return nameservers_.get(index);
      }
      /**
       * <pre>
       * A list of DNS name server IP addresses.
       * This will be appended to the base nameservers generated from DNSPolicy.
       * Duplicated nameservers will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string nameservers = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the nameservers at the given index.
       */
      public com.google.protobuf.ByteString
          getNameserversBytes(int index) {
        return nameservers_.getByteString(index);
      }
      /**
       * <pre>
       * A list of DNS name server IP addresses.
       * This will be appended to the base nameservers generated from DNSPolicy.
       * Duplicated nameservers will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string nameservers = 1;</code>
       * @param index The index to set the value at.
       * @param value The nameservers to set.
       * @return This builder for chaining.
       */
      public Builder setNameservers(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNameserversIsMutable();
        nameservers_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of DNS name server IP addresses.
       * This will be appended to the base nameservers generated from DNSPolicy.
       * Duplicated nameservers will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string nameservers = 1;</code>
       * @param value The nameservers to add.
       * @return This builder for chaining.
       */
      public Builder addNameservers(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNameserversIsMutable();
        nameservers_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of DNS name server IP addresses.
       * This will be appended to the base nameservers generated from DNSPolicy.
       * Duplicated nameservers will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string nameservers = 1;</code>
       * @param values The nameservers to add.
       * @return This builder for chaining.
       */
      public Builder addAllNameservers(
          java.lang.Iterable<java.lang.String> values) {
        ensureNameserversIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, nameservers_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of DNS name server IP addresses.
       * This will be appended to the base nameservers generated from DNSPolicy.
       * Duplicated nameservers will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string nameservers = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearNameservers() {
        nameservers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of DNS name server IP addresses.
       * This will be appended to the base nameservers generated from DNSPolicy.
       * Duplicated nameservers will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string nameservers = 1;</code>
       * @param value The bytes of the nameservers to add.
       * @return This builder for chaining.
       */
      public Builder addNameserversBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNameserversIsMutable();
        nameservers_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList searches_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureSearchesIsMutable() {
        if (!searches_.isModifiable()) {
          searches_ = new com.google.protobuf.LazyStringArrayList(searches_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * A list of DNS search domains for host-name lookup.
       * This will be appended to the base search paths generated from DNSPolicy.
       * Duplicated search paths will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string searches = 2;</code>
       * @return A list containing the searches.
       */
      public com.google.protobuf.ProtocolStringList
          getSearchesList() {
        searches_.makeImmutable();
        return searches_;
      }
      /**
       * <pre>
       * A list of DNS search domains for host-name lookup.
       * This will be appended to the base search paths generated from DNSPolicy.
       * Duplicated search paths will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string searches = 2;</code>
       * @return The count of searches.
       */
      public int getSearchesCount() {
        return searches_.size();
      }
      /**
       * <pre>
       * A list of DNS search domains for host-name lookup.
       * This will be appended to the base search paths generated from DNSPolicy.
       * Duplicated search paths will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string searches = 2;</code>
       * @param index The index of the element to return.
       * @return The searches at the given index.
       */
      public java.lang.String getSearches(int index) {
        return searches_.get(index);
      }
      /**
       * <pre>
       * A list of DNS search domains for host-name lookup.
       * This will be appended to the base search paths generated from DNSPolicy.
       * Duplicated search paths will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string searches = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the searches at the given index.
       */
      public com.google.protobuf.ByteString
          getSearchesBytes(int index) {
        return searches_.getByteString(index);
      }
      /**
       * <pre>
       * A list of DNS search domains for host-name lookup.
       * This will be appended to the base search paths generated from DNSPolicy.
       * Duplicated search paths will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string searches = 2;</code>
       * @param index The index to set the value at.
       * @param value The searches to set.
       * @return This builder for chaining.
       */
      public Builder setSearches(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureSearchesIsMutable();
        searches_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of DNS search domains for host-name lookup.
       * This will be appended to the base search paths generated from DNSPolicy.
       * Duplicated search paths will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string searches = 2;</code>
       * @param value The searches to add.
       * @return This builder for chaining.
       */
      public Builder addSearches(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureSearchesIsMutable();
        searches_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of DNS search domains for host-name lookup.
       * This will be appended to the base search paths generated from DNSPolicy.
       * Duplicated search paths will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string searches = 2;</code>
       * @param values The searches to add.
       * @return This builder for chaining.
       */
      public Builder addAllSearches(
          java.lang.Iterable<java.lang.String> values) {
        ensureSearchesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, searches_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of DNS search domains for host-name lookup.
       * This will be appended to the base search paths generated from DNSPolicy.
       * Duplicated search paths will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string searches = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSearches() {
        searches_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of DNS search domains for host-name lookup.
       * This will be appended to the base search paths generated from DNSPolicy.
       * Duplicated search paths will be removed.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string searches = 2;</code>
       * @param value The bytes of the searches to add.
       * @return This builder for chaining.
       */
      public Builder addSearchesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureSearchesIsMutable();
        searches_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.PodDNSConfigOption> options_ =
        java.util.Collections.emptyList();
      private void ensureOptionsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          options_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PodDNSConfigOption>(options_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodDNSConfigOption, io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder, io.kubernetes.client.proto.V1.PodDNSConfigOptionOrBuilder> optionsBuilder_;

      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodDNSConfigOption> getOptionsList() {
        if (optionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(options_);
        } else {
          return optionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public int getOptionsCount() {
        if (optionsBuilder_ == null) {
          return options_.size();
        } else {
          return optionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodDNSConfigOption getOptions(int index) {
        if (optionsBuilder_ == null) {
          return options_.get(index);
        } else {
          return optionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public Builder setOptions(
          int index, io.kubernetes.client.proto.V1.PodDNSConfigOption value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOptionsIsMutable();
          options_.set(index, value);
          onChanged();
        } else {
          optionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public Builder setOptions(
          int index, io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          ensureOptionsIsMutable();
          options_.set(index, builderForValue.build());
          onChanged();
        } else {
          optionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public Builder addOptions(io.kubernetes.client.proto.V1.PodDNSConfigOption value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOptionsIsMutable();
          options_.add(value);
          onChanged();
        } else {
          optionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public Builder addOptions(
          int index, io.kubernetes.client.proto.V1.PodDNSConfigOption value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOptionsIsMutable();
          options_.add(index, value);
          onChanged();
        } else {
          optionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public Builder addOptions(
          io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          ensureOptionsIsMutable();
          options_.add(builderForValue.build());
          onChanged();
        } else {
          optionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public Builder addOptions(
          int index, io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          ensureOptionsIsMutable();
          options_.add(index, builderForValue.build());
          onChanged();
        } else {
          optionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public Builder addAllOptions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PodDNSConfigOption> values) {
        if (optionsBuilder_ == null) {
          ensureOptionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, options_);
          onChanged();
        } else {
          optionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public Builder clearOptions() {
        if (optionsBuilder_ == null) {
          options_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          optionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public Builder removeOptions(int index) {
        if (optionsBuilder_ == null) {
          ensureOptionsIsMutable();
          options_.remove(index);
          onChanged();
        } else {
          optionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder getOptionsBuilder(
          int index) {
        return getOptionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodDNSConfigOptionOrBuilder getOptionsOrBuilder(
          int index) {
        if (optionsBuilder_ == null) {
          return options_.get(index);  } else {
          return optionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodDNSConfigOptionOrBuilder> 
           getOptionsOrBuilderList() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(options_);
        }
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder addOptionsBuilder() {
        return getOptionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PodDNSConfigOption.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder addOptionsBuilder(
          int index) {
        return getOptionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PodDNSConfigOption.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of DNS resolver options.
       * This will be merged with the base options generated from DNSPolicy.
       * Duplicated entries will be removed. Resolution options given in Options
       * will override those that appear in the base DNSPolicy.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodDNSConfigOption options = 3;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder> 
           getOptionsBuilderList() {
        return getOptionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodDNSConfigOption, io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder, io.kubernetes.client.proto.V1.PodDNSConfigOptionOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PodDNSConfigOption, io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder, io.kubernetes.client.proto.V1.PodDNSConfigOptionOrBuilder>(
                  options_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodDNSConfig)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodDNSConfig)
    private static final io.kubernetes.client.proto.V1.PodDNSConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodDNSConfig();
    }

    public static io.kubernetes.client.proto.V1.PodDNSConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodDNSConfig>
        PARSER = new com.google.protobuf.AbstractParser<PodDNSConfig>() {
      @java.lang.Override
      public PodDNSConfig 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<PodDNSConfig> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodDNSConfig> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodDNSConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodDNSConfigOptionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodDNSConfigOption)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Required.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Required.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * <pre>
   * PodDNSConfigOption defines DNS resolver options of a pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodDNSConfigOption}
   */
  public static final class PodDNSConfigOption extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodDNSConfigOption)
      PodDNSConfigOptionOrBuilder {
  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= */ "",
        PodDNSConfigOption.class.getName());
    }
    // Use PodDNSConfigOption.newBuilder() to construct.
    private PodDNSConfigOption(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodDNSConfigOption() {
      name_ = "";
      value_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodDNSConfigOption_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodDNSConfigOption_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodDNSConfigOption.class, io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Required.
     * </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>
     * Required.
     * </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>
     * Required.
     * </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 VALUE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object value_ = "";
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, value_);
      }
      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, value_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1.PodDNSConfigOption)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodDNSConfigOption other = (io.kubernetes.client.proto.V1.PodDNSConfigOption) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodDNSConfigOption parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfigOption 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.V1.PodDNSConfigOption parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfigOption 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.V1.PodDNSConfigOption parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfigOption parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfigOption parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfigOption 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.V1.PodDNSConfigOption parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodDNSConfigOption 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.V1.PodDNSConfigOption parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodDNSConfigOption 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.V1.PodDNSConfigOption 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>
     * PodDNSConfigOption defines DNS resolver options of a pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodDNSConfigOption}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodDNSConfigOption)
        io.kubernetes.client.proto.V1.PodDNSConfigOptionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodDNSConfigOption_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodDNSConfigOption_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodDNSConfigOption.class, io.kubernetes.client.proto.V1.PodDNSConfigOption.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodDNSConfigOption.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        value_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodDNSConfigOption_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodDNSConfigOption getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodDNSConfigOption.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodDNSConfigOption build() {
        io.kubernetes.client.proto.V1.PodDNSConfigOption result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodDNSConfigOption buildPartial() {
        io.kubernetes.client.proto.V1.PodDNSConfigOption result = new io.kubernetes.client.proto.V1.PodDNSConfigOption(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodDNSConfigOption 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.value_ = value_;
          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.V1.PodDNSConfigOption) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodDNSConfigOption)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodDNSConfigOption other) {
        if (other == io.kubernetes.client.proto.V1.PodDNSConfigOption.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasValue()) {
          value_ = other.value_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                value_ = 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 name_ = "";
      /**
       * <pre>
       * Required.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Required.
       * </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>
       * Required.
       * </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>
       * Required.
       * </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>
       * Required.
       * </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>
       * Required.
       * </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 value_ = "";
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        value_ = getDefaultInstance().getValue();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodDNSConfigOption)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodDNSConfigOption)
    private static final io.kubernetes.client.proto.V1.PodDNSConfigOption DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodDNSConfigOption();
    }

    public static io.kubernetes.client.proto.V1.PodDNSConfigOption getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodDNSConfigOption>
        PARSER = new com.google.protobuf.AbstractParser<PodDNSConfigOption>() {
      @java.lang.Override
      public PodDNSConfigOption 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<PodDNSConfigOption> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodDNSConfigOption> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodDNSConfigOption getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodExecOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodExecOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Redirect the standard input stream of the pod for this call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 1;</code>
     * @return Whether the stdin field is set.
     */
    boolean hasStdin();
    /**
     * <pre>
     * Redirect the standard input stream of the pod for this call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 1;</code>
     * @return The stdin.
     */
    boolean getStdin();

    /**
     * <pre>
     * Redirect the standard output stream of the pod for this call.
     * +optional
     * </pre>
     *
     * <code>optional bool stdout = 2;</code>
     * @return Whether the stdout field is set.
     */
    boolean hasStdout();
    /**
     * <pre>
     * Redirect the standard output stream of the pod for this call.
     * +optional
     * </pre>
     *
     * <code>optional bool stdout = 2;</code>
     * @return The stdout.
     */
    boolean getStdout();

    /**
     * <pre>
     * Redirect the standard error stream of the pod for this call.
     * +optional
     * </pre>
     *
     * <code>optional bool stderr = 3;</code>
     * @return Whether the stderr field is set.
     */
    boolean hasStderr();
    /**
     * <pre>
     * Redirect the standard error stream of the pod for this call.
     * +optional
     * </pre>
     *
     * <code>optional bool stderr = 3;</code>
     * @return The stderr.
     */
    boolean getStderr();

    /**
     * <pre>
     * TTY if true indicates that a tty will be allocated for the exec call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 4;</code>
     * @return Whether the tty field is set.
     */
    boolean hasTty();
    /**
     * <pre>
     * TTY if true indicates that a tty will be allocated for the exec call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 4;</code>
     * @return The tty.
     */
    boolean getTty();

    /**
     * <pre>
     * Container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return Whether the container field is set.
     */
    boolean hasContainer();
    /**
     * <pre>
     * Container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return The container.
     */
    java.lang.String getContainer();
    /**
     * <pre>
     * Container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return The bytes for container.
     */
    com.google.protobuf.ByteString
        getContainerBytes();

    /**
     * <pre>
     * Command is the remote command to execute. argv array. Not executed within a shell.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 6;</code>
     * @return A list containing the command.
     */
    java.util.List<java.lang.String>
        getCommandList();
    /**
     * <pre>
     * Command is the remote command to execute. argv array. Not executed within a shell.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 6;</code>
     * @return The count of command.
     */
    int getCommandCount();
    /**
     * <pre>
     * Command is the remote command to execute. argv array. Not executed within a shell.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 6;</code>
     * @param index The index of the element to return.
     * @return The command at the given index.
     */
    java.lang.String getCommand(int index);
    /**
     * <pre>
     * Command is the remote command to execute. argv array. Not executed within a shell.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the command at the given index.
     */
    com.google.protobuf.ByteString
        getCommandBytes(int index);
  }
  /**
   * <pre>
   * PodExecOptions is the query options to a Pod's remote exec call.
   * ---
   * TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging
   * and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodExecOptions}
   */
  public static final class PodExecOptions extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodExecOptions)
      PodExecOptionsOrBuilder {
  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= */ "",
        PodExecOptions.class.getName());
    }
    // Use PodExecOptions.newBuilder() to construct.
    private PodExecOptions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodExecOptions() {
      container_ = "";
      command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodExecOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodExecOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodExecOptions.class, io.kubernetes.client.proto.V1.PodExecOptions.Builder.class);
    }

    private int bitField0_;
    public static final int STDIN_FIELD_NUMBER = 1;
    private boolean stdin_ = false;
    /**
     * <pre>
     * Redirect the standard input stream of the pod for this call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 1;</code>
     * @return Whether the stdin field is set.
     */
    @java.lang.Override
    public boolean hasStdin() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Redirect the standard input stream of the pod for this call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool stdin = 1;</code>
     * @return The stdin.
     */
    @java.lang.Override
    public boolean getStdin() {
      return stdin_;
    }

    public static final int STDOUT_FIELD_NUMBER = 2;
    private boolean stdout_ = false;
    /**
     * <pre>
     * Redirect the standard output stream of the pod for this call.
     * +optional
     * </pre>
     *
     * <code>optional bool stdout = 2;</code>
     * @return Whether the stdout field is set.
     */
    @java.lang.Override
    public boolean hasStdout() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Redirect the standard output stream of the pod for this call.
     * +optional
     * </pre>
     *
     * <code>optional bool stdout = 2;</code>
     * @return The stdout.
     */
    @java.lang.Override
    public boolean getStdout() {
      return stdout_;
    }

    public static final int STDERR_FIELD_NUMBER = 3;
    private boolean stderr_ = false;
    /**
     * <pre>
     * Redirect the standard error stream of the pod for this call.
     * +optional
     * </pre>
     *
     * <code>optional bool stderr = 3;</code>
     * @return Whether the stderr field is set.
     */
    @java.lang.Override
    public boolean hasStderr() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Redirect the standard error stream of the pod for this call.
     * +optional
     * </pre>
     *
     * <code>optional bool stderr = 3;</code>
     * @return The stderr.
     */
    @java.lang.Override
    public boolean getStderr() {
      return stderr_;
    }

    public static final int TTY_FIELD_NUMBER = 4;
    private boolean tty_ = false;
    /**
     * <pre>
     * TTY if true indicates that a tty will be allocated for the exec call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 4;</code>
     * @return Whether the tty field is set.
     */
    @java.lang.Override
    public boolean hasTty() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * TTY if true indicates that a tty will be allocated for the exec call.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool tty = 4;</code>
     * @return The tty.
     */
    @java.lang.Override
    public boolean getTty() {
      return tty_;
    }

    public static final int CONTAINER_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object container_ = "";
    /**
     * <pre>
     * Container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return Whether the container field is set.
     */
    @java.lang.Override
    public boolean hasContainer() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * Container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return The container.
     */
    @java.lang.Override
    public java.lang.String getContainer() {
      java.lang.Object ref = container_;
      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()) {
          container_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Container in which to execute the command.
     * Defaults to only container if there is only one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 5;</code>
     * @return The bytes for container.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getContainerBytes() {
      java.lang.Object ref = container_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        container_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMMAND_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList command_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Command is the remote command to execute. argv array. Not executed within a shell.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 6;</code>
     * @return A list containing the command.
     */
    public com.google.protobuf.ProtocolStringList
        getCommandList() {
      return command_;
    }
    /**
     * <pre>
     * Command is the remote command to execute. argv array. Not executed within a shell.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 6;</code>
     * @return The count of command.
     */
    public int getCommandCount() {
      return command_.size();
    }
    /**
     * <pre>
     * Command is the remote command to execute. argv array. Not executed within a shell.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 6;</code>
     * @param index The index of the element to return.
     * @return The command at the given index.
     */
    public java.lang.String getCommand(int index) {
      return command_.get(index);
    }
    /**
     * <pre>
     * Command is the remote command to execute. argv array. Not executed within a shell.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string command = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the command at the given index.
     */
    public com.google.protobuf.ByteString
        getCommandBytes(int index) {
      return command_.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.writeBool(1, stdin_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, stdout_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, stderr_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, tty_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, container_);
      }
      for (int i = 0; i < command_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, command_.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
          .computeBoolSize(1, stdin_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, stdout_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, stderr_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, tty_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, container_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < command_.size(); i++) {
          dataSize += computeStringSizeNoTag(command_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getCommandList().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.V1.PodExecOptions)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodExecOptions other = (io.kubernetes.client.proto.V1.PodExecOptions) obj;

      if (hasStdin() != other.hasStdin()) return false;
      if (hasStdin()) {
        if (getStdin()
            != other.getStdin()) return false;
      }
      if (hasStdout() != other.hasStdout()) return false;
      if (hasStdout()) {
        if (getStdout()
            != other.getStdout()) return false;
      }
      if (hasStderr() != other.hasStderr()) return false;
      if (hasStderr()) {
        if (getStderr()
            != other.getStderr()) return false;
      }
      if (hasTty() != other.hasTty()) return false;
      if (hasTty()) {
        if (getTty()
            != other.getTty()) return false;
      }
      if (hasContainer() != other.hasContainer()) return false;
      if (hasContainer()) {
        if (!getContainer()
            .equals(other.getContainer())) return false;
      }
      if (!getCommandList()
          .equals(other.getCommandList())) 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 (hasStdin()) {
        hash = (37 * hash) + STDIN_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStdin());
      }
      if (hasStdout()) {
        hash = (37 * hash) + STDOUT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStdout());
      }
      if (hasStderr()) {
        hash = (37 * hash) + STDERR_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStderr());
      }
      if (hasTty()) {
        hash = (37 * hash) + TTY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getTty());
      }
      if (hasContainer()) {
        hash = (37 * hash) + CONTAINER_FIELD_NUMBER;
        hash = (53 * hash) + getContainer().hashCode();
      }
      if (getCommandCount() > 0) {
        hash = (37 * hash) + COMMAND_FIELD_NUMBER;
        hash = (53 * hash) + getCommandList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodExecOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodExecOptions 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.V1.PodExecOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodExecOptions 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.V1.PodExecOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodExecOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodExecOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodExecOptions 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.V1.PodExecOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodExecOptions 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.V1.PodExecOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodExecOptions 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.V1.PodExecOptions 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>
     * PodExecOptions is the query options to a Pod's remote exec call.
     * ---
     * TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging
     * and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodExecOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodExecOptions)
        io.kubernetes.client.proto.V1.PodExecOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodExecOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodExecOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodExecOptions.class, io.kubernetes.client.proto.V1.PodExecOptions.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodExecOptions.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        stdin_ = false;
        stdout_ = false;
        stderr_ = false;
        tty_ = false;
        container_ = "";
        command_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodExecOptions_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodExecOptions getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodExecOptions.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodExecOptions build() {
        io.kubernetes.client.proto.V1.PodExecOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodExecOptions buildPartial() {
        io.kubernetes.client.proto.V1.PodExecOptions result = new io.kubernetes.client.proto.V1.PodExecOptions(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodExecOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.stdin_ = stdin_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.stdout_ = stdout_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.stderr_ = stderr_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.tty_ = tty_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.container_ = container_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          command_.makeImmutable();
          result.command_ = command_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodExecOptions) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodExecOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodExecOptions other) {
        if (other == io.kubernetes.client.proto.V1.PodExecOptions.getDefaultInstance()) return this;
        if (other.hasStdin()) {
          setStdin(other.getStdin());
        }
        if (other.hasStdout()) {
          setStdout(other.getStdout());
        }
        if (other.hasStderr()) {
          setStderr(other.getStderr());
        }
        if (other.hasTty()) {
          setTty(other.getTty());
        }
        if (other.hasContainer()) {
          container_ = other.container_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (!other.command_.isEmpty()) {
          if (command_.isEmpty()) {
            command_ = other.command_;
            bitField0_ |= 0x00000020;
          } else {
            ensureCommandIsMutable();
            command_.addAll(other.command_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                stdin_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                stdout_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                stderr_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                tty_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                container_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureCommandIsMutable();
                command_.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 boolean stdin_ ;
      /**
       * <pre>
       * Redirect the standard input stream of the pod for this call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 1;</code>
       * @return Whether the stdin field is set.
       */
      @java.lang.Override
      public boolean hasStdin() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Redirect the standard input stream of the pod for this call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 1;</code>
       * @return The stdin.
       */
      @java.lang.Override
      public boolean getStdin() {
        return stdin_;
      }
      /**
       * <pre>
       * Redirect the standard input stream of the pod for this call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 1;</code>
       * @param value The stdin to set.
       * @return This builder for chaining.
       */
      public Builder setStdin(boolean value) {

        stdin_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Redirect the standard input stream of the pod for this call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool stdin = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStdin() {
        bitField0_ = (bitField0_ & ~0x00000001);
        stdin_ = false;
        onChanged();
        return this;
      }

      private boolean stdout_ ;
      /**
       * <pre>
       * Redirect the standard output stream of the pod for this call.
       * +optional
       * </pre>
       *
       * <code>optional bool stdout = 2;</code>
       * @return Whether the stdout field is set.
       */
      @java.lang.Override
      public boolean hasStdout() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Redirect the standard output stream of the pod for this call.
       * +optional
       * </pre>
       *
       * <code>optional bool stdout = 2;</code>
       * @return The stdout.
       */
      @java.lang.Override
      public boolean getStdout() {
        return stdout_;
      }
      /**
       * <pre>
       * Redirect the standard output stream of the pod for this call.
       * +optional
       * </pre>
       *
       * <code>optional bool stdout = 2;</code>
       * @param value The stdout to set.
       * @return This builder for chaining.
       */
      public Builder setStdout(boolean value) {

        stdout_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Redirect the standard output stream of the pod for this call.
       * +optional
       * </pre>
       *
       * <code>optional bool stdout = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStdout() {
        bitField0_ = (bitField0_ & ~0x00000002);
        stdout_ = false;
        onChanged();
        return this;
      }

      private boolean stderr_ ;
      /**
       * <pre>
       * Redirect the standard error stream of the pod for this call.
       * +optional
       * </pre>
       *
       * <code>optional bool stderr = 3;</code>
       * @return Whether the stderr field is set.
       */
      @java.lang.Override
      public boolean hasStderr() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Redirect the standard error stream of the pod for this call.
       * +optional
       * </pre>
       *
       * <code>optional bool stderr = 3;</code>
       * @return The stderr.
       */
      @java.lang.Override
      public boolean getStderr() {
        return stderr_;
      }
      /**
       * <pre>
       * Redirect the standard error stream of the pod for this call.
       * +optional
       * </pre>
       *
       * <code>optional bool stderr = 3;</code>
       * @param value The stderr to set.
       * @return This builder for chaining.
       */
      public Builder setStderr(boolean value) {

        stderr_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Redirect the standard error stream of the pod for this call.
       * +optional
       * </pre>
       *
       * <code>optional bool stderr = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStderr() {
        bitField0_ = (bitField0_ & ~0x00000004);
        stderr_ = false;
        onChanged();
        return this;
      }

      private boolean tty_ ;
      /**
       * <pre>
       * TTY if true indicates that a tty will be allocated for the exec call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 4;</code>
       * @return Whether the tty field is set.
       */
      @java.lang.Override
      public boolean hasTty() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * TTY if true indicates that a tty will be allocated for the exec call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 4;</code>
       * @return The tty.
       */
      @java.lang.Override
      public boolean getTty() {
        return tty_;
      }
      /**
       * <pre>
       * TTY if true indicates that a tty will be allocated for the exec call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 4;</code>
       * @param value The tty to set.
       * @return This builder for chaining.
       */
      public Builder setTty(boolean value) {

        tty_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TTY if true indicates that a tty will be allocated for the exec call.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool tty = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTty() {
        bitField0_ = (bitField0_ & ~0x00000008);
        tty_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object container_ = "";
      /**
       * <pre>
       * Container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @return Whether the container field is set.
       */
      public boolean hasContainer() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @return The container.
       */
      public java.lang.String getContainer() {
        java.lang.Object ref = container_;
        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()) {
            container_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @return The bytes for container.
       */
      public com.google.protobuf.ByteString
          getContainerBytes() {
        java.lang.Object ref = container_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          container_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @param value The container to set.
       * @return This builder for chaining.
       */
      public Builder setContainer(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        container_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearContainer() {
        container_ = getDefaultInstance().getContainer();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container in which to execute the command.
       * Defaults to only container if there is only one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 5;</code>
       * @param value The bytes for container to set.
       * @return This builder for chaining.
       */
      public Builder setContainerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        container_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureCommandIsMutable() {
        if (!command_.isModifiable()) {
          command_ = new com.google.protobuf.LazyStringArrayList(command_);
        }
        bitField0_ |= 0x00000020;
      }
      /**
       * <pre>
       * Command is the remote command to execute. argv array. Not executed within a shell.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 6;</code>
       * @return A list containing the command.
       */
      public com.google.protobuf.ProtocolStringList
          getCommandList() {
        command_.makeImmutable();
        return command_;
      }
      /**
       * <pre>
       * Command is the remote command to execute. argv array. Not executed within a shell.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 6;</code>
       * @return The count of command.
       */
      public int getCommandCount() {
        return command_.size();
      }
      /**
       * <pre>
       * Command is the remote command to execute. argv array. Not executed within a shell.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 6;</code>
       * @param index The index of the element to return.
       * @return The command at the given index.
       */
      public java.lang.String getCommand(int index) {
        return command_.get(index);
      }
      /**
       * <pre>
       * Command is the remote command to execute. argv array. Not executed within a shell.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the command at the given index.
       */
      public com.google.protobuf.ByteString
          getCommandBytes(int index) {
        return command_.getByteString(index);
      }
      /**
       * <pre>
       * Command is the remote command to execute. argv array. Not executed within a shell.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 6;</code>
       * @param index The index to set the value at.
       * @param value The command to set.
       * @return This builder for chaining.
       */
      public Builder setCommand(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.set(index, value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command is the remote command to execute. argv array. Not executed within a shell.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 6;</code>
       * @param value The command to add.
       * @return This builder for chaining.
       */
      public Builder addCommand(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.add(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command is the remote command to execute. argv array. Not executed within a shell.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 6;</code>
       * @param values The command to add.
       * @return This builder for chaining.
       */
      public Builder addAllCommand(
          java.lang.Iterable<java.lang.String> values) {
        ensureCommandIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, command_);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command is the remote command to execute. argv array. Not executed within a shell.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearCommand() {
        command_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command is the remote command to execute. argv array. Not executed within a shell.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string command = 6;</code>
       * @param value The bytes of the command to add.
       * @return This builder for chaining.
       */
      public Builder addCommandBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandIsMutable();
        command_.add(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodExecOptions)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodExecOptions)
    private static final io.kubernetes.client.proto.V1.PodExecOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodExecOptions();
    }

    public static io.kubernetes.client.proto.V1.PodExecOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodExecOptions>
        PARSER = new com.google.protobuf.AbstractParser<PodExecOptions>() {
      @java.lang.Override
      public PodExecOptions 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<PodExecOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodExecOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodExecOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodIPOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodIP)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * IP is the IP address assigned to the pod
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return Whether the ip field is set.
     */
    boolean hasIp();
    /**
     * <pre>
     * IP is the IP address assigned to the pod
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The ip.
     */
    java.lang.String getIp();
    /**
     * <pre>
     * IP is the IP address assigned to the pod
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The bytes for ip.
     */
    com.google.protobuf.ByteString
        getIpBytes();
  }
  /**
   * <pre>
   * PodIP represents a single IP address allocated to the pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodIP}
   */
  public static final class PodIP extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodIP)
      PodIPOrBuilder {
  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= */ "",
        PodIP.class.getName());
    }
    // Use PodIP.newBuilder() to construct.
    private PodIP(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodIP() {
      ip_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodIP_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodIP_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodIP.class, io.kubernetes.client.proto.V1.PodIP.Builder.class);
    }

    private int bitField0_;
    public static final int IP_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object ip_ = "";
    /**
     * <pre>
     * IP is the IP address assigned to the pod
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return Whether the ip field is set.
     */
    @java.lang.Override
    public boolean hasIp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * IP is the IP address assigned to the pod
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The ip.
     */
    @java.lang.Override
    public java.lang.String getIp() {
      java.lang.Object ref = ip_;
      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()) {
          ip_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * IP is the IP address assigned to the pod
     * </pre>
     *
     * <code>optional string ip = 1;</code>
     * @return The bytes for ip.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIpBytes() {
      java.lang.Object ref = ip_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ip_ = 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, ip_);
      }
      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, ip_);
      }
      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.V1.PodIP)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodIP other = (io.kubernetes.client.proto.V1.PodIP) obj;

      if (hasIp() != other.hasIp()) return false;
      if (hasIp()) {
        if (!getIp()
            .equals(other.getIp())) 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 (hasIp()) {
        hash = (37 * hash) + IP_FIELD_NUMBER;
        hash = (53 * hash) + getIp().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodIP parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodIP 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.V1.PodIP parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodIP 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.V1.PodIP parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodIP parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodIP parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodIP 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.V1.PodIP parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodIP 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.V1.PodIP parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodIP 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.V1.PodIP 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>
     * PodIP represents a single IP address allocated to the pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodIP}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodIP)
        io.kubernetes.client.proto.V1.PodIPOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodIP_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodIP_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodIP.class, io.kubernetes.client.proto.V1.PodIP.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodIP.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ip_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodIP_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodIP getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodIP.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodIP build() {
        io.kubernetes.client.proto.V1.PodIP result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodIP buildPartial() {
        io.kubernetes.client.proto.V1.PodIP result = new io.kubernetes.client.proto.V1.PodIP(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodIP result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ip_ = ip_;
          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.V1.PodIP) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodIP)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodIP other) {
        if (other == io.kubernetes.client.proto.V1.PodIP.getDefaultInstance()) return this;
        if (other.hasIp()) {
          ip_ = other.ip_;
          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: {
                ip_ = 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 ip_ = "";
      /**
       * <pre>
       * IP is the IP address assigned to the pod
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return Whether the ip field is set.
       */
      public boolean hasIp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * IP is the IP address assigned to the pod
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return The ip.
       */
      public java.lang.String getIp() {
        java.lang.Object ref = ip_;
        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()) {
            ip_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * IP is the IP address assigned to the pod
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return The bytes for ip.
       */
      public com.google.protobuf.ByteString
          getIpBytes() {
        java.lang.Object ref = ip_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ip_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * IP is the IP address assigned to the pod
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @param value The ip to set.
       * @return This builder for chaining.
       */
      public Builder setIp(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ip_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IP is the IP address assigned to the pod
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIp() {
        ip_ = getDefaultInstance().getIp();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IP is the IP address assigned to the pod
       * </pre>
       *
       * <code>optional string ip = 1;</code>
       * @param value The bytes for ip to set.
       * @return This builder for chaining.
       */
      public Builder setIpBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ip_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodIP)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodIP)
    private static final io.kubernetes.client.proto.V1.PodIP DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodIP();
    }

    public static io.kubernetes.client.proto.V1.PodIP getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodIP>
        PARSER = new com.google.protobuf.AbstractParser<PodIP>() {
      @java.lang.Override
      public PodIP 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<PodIP> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodIP> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodIP getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * List of pods.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Pod> 
        getItemsList();
    /**
     * <pre>
     * List of pods.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
     */
    io.kubernetes.client.proto.V1.Pod getItems(int index);
    /**
     * <pre>
     * List of pods.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * List of pods.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * List of pods.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * PodList is a list of Pods.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodList}
   */
  public static final class PodList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodList)
      PodListOrBuilder {
  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= */ "",
        PodList.class.getName());
    }
    // Use PodList.newBuilder() to construct.
    private PodList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodList.class, io.kubernetes.client.proto.V1.PodList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.Pod> items_;
    /**
     * <pre>
     * List of pods.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Pod> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * List of pods.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * List of pods.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * List of pods.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Pod getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * List of pods.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodOrBuilder 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.V1.PodList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodList other = (io.kubernetes.client.proto.V1.PodList) 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.V1.PodList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodList 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.V1.PodList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodList 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.V1.PodList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodList 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.V1.PodList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodList 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.V1.PodList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodList 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.V1.PodList 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>
     * PodList is a list of Pods.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodList)
        io.kubernetes.client.proto.V1.PodListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodList.class, io.kubernetes.client.proto.V1.PodList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodList.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.V1.internal_static_k8s_io_api_core_v1_PodList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodList build() {
        io.kubernetes.client.proto.V1.PodList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodList buildPartial() {
        io.kubernetes.client.proto.V1.PodList result = new io.kubernetes.client.proto.V1.PodList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PodList 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.V1.PodList 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.V1.PodList) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodList other) {
        if (other == io.kubernetes.client.proto.V1.PodList.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.V1.Pod m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Pod.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.Pod> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Pod>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Pod, io.kubernetes.client.proto.V1.Pod.Builder, io.kubernetes.client.proto.V1.PodOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Pod> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Pod getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.Pod value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.Pod.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.Pod value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.Pod value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.Pod.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.Pod.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Pod> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Pod.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Pod.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Pod.getDefaultInstance());
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Pod.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Pod.getDefaultInstance());
      }
      /**
       * <pre>
       * List of pods.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Pod items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Pod.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Pod, io.kubernetes.client.proto.V1.Pod.Builder, io.kubernetes.client.proto.V1.PodOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Pod, io.kubernetes.client.proto.V1.Pod.Builder, io.kubernetes.client.proto.V1.PodOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodList)
    private static final io.kubernetes.client.proto.V1.PodList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodList();
    }

    public static io.kubernetes.client.proto.V1.PodList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodList>
        PARSER = new com.google.protobuf.AbstractParser<PodList>() {
      @java.lang.Override
      public PodList 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<PodList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodLogOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodLogOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The container for which to stream logs. Defaults to only container if there is one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 1;</code>
     * @return Whether the container field is set.
     */
    boolean hasContainer();
    /**
     * <pre>
     * The container for which to stream logs. Defaults to only container if there is one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 1;</code>
     * @return The container.
     */
    java.lang.String getContainer();
    /**
     * <pre>
     * The container for which to stream logs. Defaults to only container if there is one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 1;</code>
     * @return The bytes for container.
     */
    com.google.protobuf.ByteString
        getContainerBytes();

    /**
     * <pre>
     * Follow the log stream of the pod. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool follow = 2;</code>
     * @return Whether the follow field is set.
     */
    boolean hasFollow();
    /**
     * <pre>
     * Follow the log stream of the pod. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool follow = 2;</code>
     * @return The follow.
     */
    boolean getFollow();

    /**
     * <pre>
     * Return previous terminated container logs. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool previous = 3;</code>
     * @return Whether the previous field is set.
     */
    boolean hasPrevious();
    /**
     * <pre>
     * Return previous terminated container logs. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool previous = 3;</code>
     * @return The previous.
     */
    boolean getPrevious();

    /**
     * <pre>
     * A relative time in seconds before the current time from which to show logs. If this value
     * precedes the time a pod was started, only logs since the pod start will be returned.
     * If this value is in the future, no logs will be returned.
     * Only one of sinceSeconds or sinceTime may be specified.
     * +optional
     * </pre>
     *
     * <code>optional int64 sinceSeconds = 4;</code>
     * @return Whether the sinceSeconds field is set.
     */
    boolean hasSinceSeconds();
    /**
     * <pre>
     * A relative time in seconds before the current time from which to show logs. If this value
     * precedes the time a pod was started, only logs since the pod start will be returned.
     * If this value is in the future, no logs will be returned.
     * Only one of sinceSeconds or sinceTime may be specified.
     * +optional
     * </pre>
     *
     * <code>optional int64 sinceSeconds = 4;</code>
     * @return The sinceSeconds.
     */
    long getSinceSeconds();

    /**
     * <pre>
     * An RFC3339 timestamp from which to show logs. If this value
     * precedes the time a pod was started, only logs since the pod start will be returned.
     * If this value is in the future, no logs will be returned.
     * Only one of sinceSeconds or sinceTime may be specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
     * @return Whether the sinceTime field is set.
     */
    boolean hasSinceTime();
    /**
     * <pre>
     * An RFC3339 timestamp from which to show logs. If this value
     * precedes the time a pod was started, only logs since the pod start will be returned.
     * If this value is in the future, no logs will be returned.
     * Only one of sinceSeconds or sinceTime may be specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
     * @return The sinceTime.
     */
    io.kubernetes.client.proto.Meta.Time getSinceTime();
    /**
     * <pre>
     * An RFC3339 timestamp from which to show logs. If this value
     * precedes the time a pod was started, only logs since the pod start will be returned.
     * If this value is in the future, no logs will be returned.
     * Only one of sinceSeconds or sinceTime may be specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getSinceTimeOrBuilder();

    /**
     * <pre>
     * If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
     * of log output. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool timestamps = 6;</code>
     * @return Whether the timestamps field is set.
     */
    boolean hasTimestamps();
    /**
     * <pre>
     * If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
     * of log output. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool timestamps = 6;</code>
     * @return The timestamps.
     */
    boolean getTimestamps();

    /**
     * <pre>
     * If set, the number of lines from the end of the logs to show. If not specified,
     * logs are shown from the creation of the container or sinceSeconds or sinceTime
     * +optional
     * </pre>
     *
     * <code>optional int64 tailLines = 7;</code>
     * @return Whether the tailLines field is set.
     */
    boolean hasTailLines();
    /**
     * <pre>
     * If set, the number of lines from the end of the logs to show. If not specified,
     * logs are shown from the creation of the container or sinceSeconds or sinceTime
     * +optional
     * </pre>
     *
     * <code>optional int64 tailLines = 7;</code>
     * @return The tailLines.
     */
    long getTailLines();

    /**
     * <pre>
     * If set, the number of bytes to read from the server before terminating the
     * log output. This may not display a complete final line of logging, and may return
     * slightly more or slightly less than the specified limit.
     * +optional
     * </pre>
     *
     * <code>optional int64 limitBytes = 8;</code>
     * @return Whether the limitBytes field is set.
     */
    boolean hasLimitBytes();
    /**
     * <pre>
     * If set, the number of bytes to read from the server before terminating the
     * log output. This may not display a complete final line of logging, and may return
     * slightly more or slightly less than the specified limit.
     * +optional
     * </pre>
     *
     * <code>optional int64 limitBytes = 8;</code>
     * @return The limitBytes.
     */
    long getLimitBytes();

    /**
     * <pre>
     * insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the
     * serving certificate of the backend it is connecting to.  This will make the HTTPS connection between the apiserver
     * and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real
     * kubelet.  If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the
     * connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept
     * the actual log data coming from the real kubelet).
     * +optional
     * </pre>
     *
     * <code>optional bool insecureSkipTLSVerifyBackend = 9;</code>
     * @return Whether the insecureSkipTLSVerifyBackend field is set.
     */
    boolean hasInsecureSkipTLSVerifyBackend();
    /**
     * <pre>
     * insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the
     * serving certificate of the backend it is connecting to.  This will make the HTTPS connection between the apiserver
     * and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real
     * kubelet.  If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the
     * connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept
     * the actual log data coming from the real kubelet).
     * +optional
     * </pre>
     *
     * <code>optional bool insecureSkipTLSVerifyBackend = 9;</code>
     * @return The insecureSkipTLSVerifyBackend.
     */
    boolean getInsecureSkipTLSVerifyBackend();
  }
  /**
   * <pre>
   * PodLogOptions is the query options for a Pod's logs REST call.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodLogOptions}
   */
  public static final class PodLogOptions extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodLogOptions)
      PodLogOptionsOrBuilder {
  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= */ "",
        PodLogOptions.class.getName());
    }
    // Use PodLogOptions.newBuilder() to construct.
    private PodLogOptions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodLogOptions() {
      container_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodLogOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodLogOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodLogOptions.class, io.kubernetes.client.proto.V1.PodLogOptions.Builder.class);
    }

    private int bitField0_;
    public static final int CONTAINER_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object container_ = "";
    /**
     * <pre>
     * The container for which to stream logs. Defaults to only container if there is one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 1;</code>
     * @return Whether the container field is set.
     */
    @java.lang.Override
    public boolean hasContainer() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The container for which to stream logs. Defaults to only container if there is one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 1;</code>
     * @return The container.
     */
    @java.lang.Override
    public java.lang.String getContainer() {
      java.lang.Object ref = container_;
      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()) {
          container_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The container for which to stream logs. Defaults to only container if there is one container in the pod.
     * +optional
     * </pre>
     *
     * <code>optional string container = 1;</code>
     * @return The bytes for container.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getContainerBytes() {
      java.lang.Object ref = container_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        container_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FOLLOW_FIELD_NUMBER = 2;
    private boolean follow_ = false;
    /**
     * <pre>
     * Follow the log stream of the pod. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool follow = 2;</code>
     * @return Whether the follow field is set.
     */
    @java.lang.Override
    public boolean hasFollow() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Follow the log stream of the pod. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool follow = 2;</code>
     * @return The follow.
     */
    @java.lang.Override
    public boolean getFollow() {
      return follow_;
    }

    public static final int PREVIOUS_FIELD_NUMBER = 3;
    private boolean previous_ = false;
    /**
     * <pre>
     * Return previous terminated container logs. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool previous = 3;</code>
     * @return Whether the previous field is set.
     */
    @java.lang.Override
    public boolean hasPrevious() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Return previous terminated container logs. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool previous = 3;</code>
     * @return The previous.
     */
    @java.lang.Override
    public boolean getPrevious() {
      return previous_;
    }

    public static final int SINCESECONDS_FIELD_NUMBER = 4;
    private long sinceSeconds_ = 0L;
    /**
     * <pre>
     * A relative time in seconds before the current time from which to show logs. If this value
     * precedes the time a pod was started, only logs since the pod start will be returned.
     * If this value is in the future, no logs will be returned.
     * Only one of sinceSeconds or sinceTime may be specified.
     * +optional
     * </pre>
     *
     * <code>optional int64 sinceSeconds = 4;</code>
     * @return Whether the sinceSeconds field is set.
     */
    @java.lang.Override
    public boolean hasSinceSeconds() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * A relative time in seconds before the current time from which to show logs. If this value
     * precedes the time a pod was started, only logs since the pod start will be returned.
     * If this value is in the future, no logs will be returned.
     * Only one of sinceSeconds or sinceTime may be specified.
     * +optional
     * </pre>
     *
     * <code>optional int64 sinceSeconds = 4;</code>
     * @return The sinceSeconds.
     */
    @java.lang.Override
    public long getSinceSeconds() {
      return sinceSeconds_;
    }

    public static final int SINCETIME_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.Meta.Time sinceTime_;
    /**
     * <pre>
     * An RFC3339 timestamp from which to show logs. If this value
     * precedes the time a pod was started, only logs since the pod start will be returned.
     * If this value is in the future, no logs will be returned.
     * Only one of sinceSeconds or sinceTime may be specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
     * @return Whether the sinceTime field is set.
     */
    @java.lang.Override
    public boolean hasSinceTime() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * An RFC3339 timestamp from which to show logs. If this value
     * precedes the time a pod was started, only logs since the pod start will be returned.
     * If this value is in the future, no logs will be returned.
     * Only one of sinceSeconds or sinceTime may be specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
     * @return The sinceTime.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getSinceTime() {
      return sinceTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : sinceTime_;
    }
    /**
     * <pre>
     * An RFC3339 timestamp from which to show logs. If this value
     * precedes the time a pod was started, only logs since the pod start will be returned.
     * If this value is in the future, no logs will be returned.
     * Only one of sinceSeconds or sinceTime may be specified.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getSinceTimeOrBuilder() {
      return sinceTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : sinceTime_;
    }

    public static final int TIMESTAMPS_FIELD_NUMBER = 6;
    private boolean timestamps_ = false;
    /**
     * <pre>
     * If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
     * of log output. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool timestamps = 6;</code>
     * @return Whether the timestamps field is set.
     */
    @java.lang.Override
    public boolean hasTimestamps() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
     * of log output. Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool timestamps = 6;</code>
     * @return The timestamps.
     */
    @java.lang.Override
    public boolean getTimestamps() {
      return timestamps_;
    }

    public static final int TAILLINES_FIELD_NUMBER = 7;
    private long tailLines_ = 0L;
    /**
     * <pre>
     * If set, the number of lines from the end of the logs to show. If not specified,
     * logs are shown from the creation of the container or sinceSeconds or sinceTime
     * +optional
     * </pre>
     *
     * <code>optional int64 tailLines = 7;</code>
     * @return Whether the tailLines field is set.
     */
    @java.lang.Override
    public boolean hasTailLines() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * If set, the number of lines from the end of the logs to show. If not specified,
     * logs are shown from the creation of the container or sinceSeconds or sinceTime
     * +optional
     * </pre>
     *
     * <code>optional int64 tailLines = 7;</code>
     * @return The tailLines.
     */
    @java.lang.Override
    public long getTailLines() {
      return tailLines_;
    }

    public static final int LIMITBYTES_FIELD_NUMBER = 8;
    private long limitBytes_ = 0L;
    /**
     * <pre>
     * If set, the number of bytes to read from the server before terminating the
     * log output. This may not display a complete final line of logging, and may return
     * slightly more or slightly less than the specified limit.
     * +optional
     * </pre>
     *
     * <code>optional int64 limitBytes = 8;</code>
     * @return Whether the limitBytes field is set.
     */
    @java.lang.Override
    public boolean hasLimitBytes() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * If set, the number of bytes to read from the server before terminating the
     * log output. This may not display a complete final line of logging, and may return
     * slightly more or slightly less than the specified limit.
     * +optional
     * </pre>
     *
     * <code>optional int64 limitBytes = 8;</code>
     * @return The limitBytes.
     */
    @java.lang.Override
    public long getLimitBytes() {
      return limitBytes_;
    }

    public static final int INSECURESKIPTLSVERIFYBACKEND_FIELD_NUMBER = 9;
    private boolean insecureSkipTLSVerifyBackend_ = false;
    /**
     * <pre>
     * insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the
     * serving certificate of the backend it is connecting to.  This will make the HTTPS connection between the apiserver
     * and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real
     * kubelet.  If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the
     * connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept
     * the actual log data coming from the real kubelet).
     * +optional
     * </pre>
     *
     * <code>optional bool insecureSkipTLSVerifyBackend = 9;</code>
     * @return Whether the insecureSkipTLSVerifyBackend field is set.
     */
    @java.lang.Override
    public boolean hasInsecureSkipTLSVerifyBackend() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the
     * serving certificate of the backend it is connecting to.  This will make the HTTPS connection between the apiserver
     * and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real
     * kubelet.  If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the
     * connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept
     * the actual log data coming from the real kubelet).
     * +optional
     * </pre>
     *
     * <code>optional bool insecureSkipTLSVerifyBackend = 9;</code>
     * @return The insecureSkipTLSVerifyBackend.
     */
    @java.lang.Override
    public boolean getInsecureSkipTLSVerifyBackend() {
      return insecureSkipTLSVerifyBackend_;
    }

    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, container_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, follow_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, previous_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt64(4, sinceSeconds_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getSinceTime());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(6, timestamps_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeInt64(7, tailLines_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeInt64(8, limitBytes_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeBool(9, insecureSkipTLSVerifyBackend_);
      }
      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, container_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, follow_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, previous_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, sinceSeconds_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSinceTime());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, timestamps_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, tailLines_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, limitBytes_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, insecureSkipTLSVerifyBackend_);
      }
      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.V1.PodLogOptions)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodLogOptions other = (io.kubernetes.client.proto.V1.PodLogOptions) obj;

      if (hasContainer() != other.hasContainer()) return false;
      if (hasContainer()) {
        if (!getContainer()
            .equals(other.getContainer())) return false;
      }
      if (hasFollow() != other.hasFollow()) return false;
      if (hasFollow()) {
        if (getFollow()
            != other.getFollow()) return false;
      }
      if (hasPrevious() != other.hasPrevious()) return false;
      if (hasPrevious()) {
        if (getPrevious()
            != other.getPrevious()) return false;
      }
      if (hasSinceSeconds() != other.hasSinceSeconds()) return false;
      if (hasSinceSeconds()) {
        if (getSinceSeconds()
            != other.getSinceSeconds()) return false;
      }
      if (hasSinceTime() != other.hasSinceTime()) return false;
      if (hasSinceTime()) {
        if (!getSinceTime()
            .equals(other.getSinceTime())) return false;
      }
      if (hasTimestamps() != other.hasTimestamps()) return false;
      if (hasTimestamps()) {
        if (getTimestamps()
            != other.getTimestamps()) return false;
      }
      if (hasTailLines() != other.hasTailLines()) return false;
      if (hasTailLines()) {
        if (getTailLines()
            != other.getTailLines()) return false;
      }
      if (hasLimitBytes() != other.hasLimitBytes()) return false;
      if (hasLimitBytes()) {
        if (getLimitBytes()
            != other.getLimitBytes()) return false;
      }
      if (hasInsecureSkipTLSVerifyBackend() != other.hasInsecureSkipTLSVerifyBackend()) return false;
      if (hasInsecureSkipTLSVerifyBackend()) {
        if (getInsecureSkipTLSVerifyBackend()
            != other.getInsecureSkipTLSVerifyBackend()) 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 (hasContainer()) {
        hash = (37 * hash) + CONTAINER_FIELD_NUMBER;
        hash = (53 * hash) + getContainer().hashCode();
      }
      if (hasFollow()) {
        hash = (37 * hash) + FOLLOW_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getFollow());
      }
      if (hasPrevious()) {
        hash = (37 * hash) + PREVIOUS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPrevious());
      }
      if (hasSinceSeconds()) {
        hash = (37 * hash) + SINCESECONDS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getSinceSeconds());
      }
      if (hasSinceTime()) {
        hash = (37 * hash) + SINCETIME_FIELD_NUMBER;
        hash = (53 * hash) + getSinceTime().hashCode();
      }
      if (hasTimestamps()) {
        hash = (37 * hash) + TIMESTAMPS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getTimestamps());
      }
      if (hasTailLines()) {
        hash = (37 * hash) + TAILLINES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTailLines());
      }
      if (hasLimitBytes()) {
        hash = (37 * hash) + LIMITBYTES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getLimitBytes());
      }
      if (hasInsecureSkipTLSVerifyBackend()) {
        hash = (37 * hash) + INSECURESKIPTLSVERIFYBACKEND_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getInsecureSkipTLSVerifyBackend());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodLogOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodLogOptions 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.V1.PodLogOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodLogOptions 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.V1.PodLogOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodLogOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodLogOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodLogOptions 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.V1.PodLogOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodLogOptions 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.V1.PodLogOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodLogOptions 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.V1.PodLogOptions 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>
     * PodLogOptions is the query options for a Pod's logs REST call.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodLogOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodLogOptions)
        io.kubernetes.client.proto.V1.PodLogOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodLogOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodLogOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodLogOptions.class, io.kubernetes.client.proto.V1.PodLogOptions.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodLogOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSinceTimeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        container_ = "";
        follow_ = false;
        previous_ = false;
        sinceSeconds_ = 0L;
        sinceTime_ = null;
        if (sinceTimeBuilder_ != null) {
          sinceTimeBuilder_.dispose();
          sinceTimeBuilder_ = null;
        }
        timestamps_ = false;
        tailLines_ = 0L;
        limitBytes_ = 0L;
        insecureSkipTLSVerifyBackend_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodLogOptions_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodLogOptions getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodLogOptions.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodLogOptions build() {
        io.kubernetes.client.proto.V1.PodLogOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodLogOptions buildPartial() {
        io.kubernetes.client.proto.V1.PodLogOptions result = new io.kubernetes.client.proto.V1.PodLogOptions(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodLogOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.container_ = container_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.follow_ = follow_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.previous_ = previous_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.sinceSeconds_ = sinceSeconds_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.sinceTime_ = sinceTimeBuilder_ == null
              ? sinceTime_
              : sinceTimeBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.timestamps_ = timestamps_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.tailLines_ = tailLines_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.limitBytes_ = limitBytes_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.insecureSkipTLSVerifyBackend_ = insecureSkipTLSVerifyBackend_;
          to_bitField0_ |= 0x00000100;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodLogOptions) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodLogOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodLogOptions other) {
        if (other == io.kubernetes.client.proto.V1.PodLogOptions.getDefaultInstance()) return this;
        if (other.hasContainer()) {
          container_ = other.container_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFollow()) {
          setFollow(other.getFollow());
        }
        if (other.hasPrevious()) {
          setPrevious(other.getPrevious());
        }
        if (other.hasSinceSeconds()) {
          setSinceSeconds(other.getSinceSeconds());
        }
        if (other.hasSinceTime()) {
          mergeSinceTime(other.getSinceTime());
        }
        if (other.hasTimestamps()) {
          setTimestamps(other.getTimestamps());
        }
        if (other.hasTailLines()) {
          setTailLines(other.getTailLines());
        }
        if (other.hasLimitBytes()) {
          setLimitBytes(other.getLimitBytes());
        }
        if (other.hasInsecureSkipTLSVerifyBackend()) {
          setInsecureSkipTLSVerifyBackend(other.getInsecureSkipTLSVerifyBackend());
        }
        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: {
                container_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                follow_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                previous_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                sinceSeconds_ = input.readInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                input.readMessage(
                    getSinceTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                timestamps_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                tailLines_ = input.readInt64();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 64: {
                limitBytes_ = input.readInt64();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              case 72: {
                insecureSkipTLSVerifyBackend_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              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 container_ = "";
      /**
       * <pre>
       * The container for which to stream logs. Defaults to only container if there is one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 1;</code>
       * @return Whether the container field is set.
       */
      public boolean hasContainer() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The container for which to stream logs. Defaults to only container if there is one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 1;</code>
       * @return The container.
       */
      public java.lang.String getContainer() {
        java.lang.Object ref = container_;
        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()) {
            container_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The container for which to stream logs. Defaults to only container if there is one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 1;</code>
       * @return The bytes for container.
       */
      public com.google.protobuf.ByteString
          getContainerBytes() {
        java.lang.Object ref = container_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          container_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The container for which to stream logs. Defaults to only container if there is one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 1;</code>
       * @param value The container to set.
       * @return This builder for chaining.
       */
      public Builder setContainer(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        container_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The container for which to stream logs. Defaults to only container if there is one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearContainer() {
        container_ = getDefaultInstance().getContainer();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The container for which to stream logs. Defaults to only container if there is one container in the pod.
       * +optional
       * </pre>
       *
       * <code>optional string container = 1;</code>
       * @param value The bytes for container to set.
       * @return This builder for chaining.
       */
      public Builder setContainerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        container_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private boolean follow_ ;
      /**
       * <pre>
       * Follow the log stream of the pod. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool follow = 2;</code>
       * @return Whether the follow field is set.
       */
      @java.lang.Override
      public boolean hasFollow() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Follow the log stream of the pod. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool follow = 2;</code>
       * @return The follow.
       */
      @java.lang.Override
      public boolean getFollow() {
        return follow_;
      }
      /**
       * <pre>
       * Follow the log stream of the pod. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool follow = 2;</code>
       * @param value The follow to set.
       * @return This builder for chaining.
       */
      public Builder setFollow(boolean value) {

        follow_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Follow the log stream of the pod. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool follow = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFollow() {
        bitField0_ = (bitField0_ & ~0x00000002);
        follow_ = false;
        onChanged();
        return this;
      }

      private boolean previous_ ;
      /**
       * <pre>
       * Return previous terminated container logs. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool previous = 3;</code>
       * @return Whether the previous field is set.
       */
      @java.lang.Override
      public boolean hasPrevious() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Return previous terminated container logs. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool previous = 3;</code>
       * @return The previous.
       */
      @java.lang.Override
      public boolean getPrevious() {
        return previous_;
      }
      /**
       * <pre>
       * Return previous terminated container logs. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool previous = 3;</code>
       * @param value The previous to set.
       * @return This builder for chaining.
       */
      public Builder setPrevious(boolean value) {

        previous_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Return previous terminated container logs. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool previous = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPrevious() {
        bitField0_ = (bitField0_ & ~0x00000004);
        previous_ = false;
        onChanged();
        return this;
      }

      private long sinceSeconds_ ;
      /**
       * <pre>
       * A relative time in seconds before the current time from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional int64 sinceSeconds = 4;</code>
       * @return Whether the sinceSeconds field is set.
       */
      @java.lang.Override
      public boolean hasSinceSeconds() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * A relative time in seconds before the current time from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional int64 sinceSeconds = 4;</code>
       * @return The sinceSeconds.
       */
      @java.lang.Override
      public long getSinceSeconds() {
        return sinceSeconds_;
      }
      /**
       * <pre>
       * A relative time in seconds before the current time from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional int64 sinceSeconds = 4;</code>
       * @param value The sinceSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setSinceSeconds(long value) {

        sinceSeconds_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A relative time in seconds before the current time from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional int64 sinceSeconds = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSinceSeconds() {
        bitField0_ = (bitField0_ & ~0x00000008);
        sinceSeconds_ = 0L;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.Time sinceTime_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> sinceTimeBuilder_;
      /**
       * <pre>
       * An RFC3339 timestamp from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
       * @return Whether the sinceTime field is set.
       */
      public boolean hasSinceTime() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * An RFC3339 timestamp from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
       * @return The sinceTime.
       */
      public io.kubernetes.client.proto.Meta.Time getSinceTime() {
        if (sinceTimeBuilder_ == null) {
          return sinceTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : sinceTime_;
        } else {
          return sinceTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * An RFC3339 timestamp from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
       */
      public Builder setSinceTime(io.kubernetes.client.proto.Meta.Time value) {
        if (sinceTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sinceTime_ = value;
        } else {
          sinceTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An RFC3339 timestamp from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
       */
      public Builder setSinceTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (sinceTimeBuilder_ == null) {
          sinceTime_ = builderForValue.build();
        } else {
          sinceTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An RFC3339 timestamp from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
       */
      public Builder mergeSinceTime(io.kubernetes.client.proto.Meta.Time value) {
        if (sinceTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            sinceTime_ != null &&
            sinceTime_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getSinceTimeBuilder().mergeFrom(value);
          } else {
            sinceTime_ = value;
          }
        } else {
          sinceTimeBuilder_.mergeFrom(value);
        }
        if (sinceTime_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * An RFC3339 timestamp from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
       */
      public Builder clearSinceTime() {
        bitField0_ = (bitField0_ & ~0x00000010);
        sinceTime_ = null;
        if (sinceTimeBuilder_ != null) {
          sinceTimeBuilder_.dispose();
          sinceTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An RFC3339 timestamp from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getSinceTimeBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getSinceTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * An RFC3339 timestamp from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getSinceTimeOrBuilder() {
        if (sinceTimeBuilder_ != null) {
          return sinceTimeBuilder_.getMessageOrBuilder();
        } else {
          return sinceTime_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : sinceTime_;
        }
      }
      /**
       * <pre>
       * An RFC3339 timestamp from which to show logs. If this value
       * precedes the time a pod was started, only logs since the pod start will be returned.
       * If this value is in the future, no logs will be returned.
       * Only one of sinceSeconds or sinceTime may be specified.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;</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> 
          getSinceTimeFieldBuilder() {
        if (sinceTimeBuilder_ == null) {
          sinceTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getSinceTime(),
                  getParentForChildren(),
                  isClean());
          sinceTime_ = null;
        }
        return sinceTimeBuilder_;
      }

      private boolean timestamps_ ;
      /**
       * <pre>
       * If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
       * of log output. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool timestamps = 6;</code>
       * @return Whether the timestamps field is set.
       */
      @java.lang.Override
      public boolean hasTimestamps() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
       * of log output. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool timestamps = 6;</code>
       * @return The timestamps.
       */
      @java.lang.Override
      public boolean getTimestamps() {
        return timestamps_;
      }
      /**
       * <pre>
       * If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
       * of log output. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool timestamps = 6;</code>
       * @param value The timestamps to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamps(boolean value) {

        timestamps_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
       * of log output. Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool timestamps = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamps() {
        bitField0_ = (bitField0_ & ~0x00000020);
        timestamps_ = false;
        onChanged();
        return this;
      }

      private long tailLines_ ;
      /**
       * <pre>
       * If set, the number of lines from the end of the logs to show. If not specified,
       * logs are shown from the creation of the container or sinceSeconds or sinceTime
       * +optional
       * </pre>
       *
       * <code>optional int64 tailLines = 7;</code>
       * @return Whether the tailLines field is set.
       */
      @java.lang.Override
      public boolean hasTailLines() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * If set, the number of lines from the end of the logs to show. If not specified,
       * logs are shown from the creation of the container or sinceSeconds or sinceTime
       * +optional
       * </pre>
       *
       * <code>optional int64 tailLines = 7;</code>
       * @return The tailLines.
       */
      @java.lang.Override
      public long getTailLines() {
        return tailLines_;
      }
      /**
       * <pre>
       * If set, the number of lines from the end of the logs to show. If not specified,
       * logs are shown from the creation of the container or sinceSeconds or sinceTime
       * +optional
       * </pre>
       *
       * <code>optional int64 tailLines = 7;</code>
       * @param value The tailLines to set.
       * @return This builder for chaining.
       */
      public Builder setTailLines(long value) {

        tailLines_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If set, the number of lines from the end of the logs to show. If not specified,
       * logs are shown from the creation of the container or sinceSeconds or sinceTime
       * +optional
       * </pre>
       *
       * <code>optional int64 tailLines = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTailLines() {
        bitField0_ = (bitField0_ & ~0x00000040);
        tailLines_ = 0L;
        onChanged();
        return this;
      }

      private long limitBytes_ ;
      /**
       * <pre>
       * If set, the number of bytes to read from the server before terminating the
       * log output. This may not display a complete final line of logging, and may return
       * slightly more or slightly less than the specified limit.
       * +optional
       * </pre>
       *
       * <code>optional int64 limitBytes = 8;</code>
       * @return Whether the limitBytes field is set.
       */
      @java.lang.Override
      public boolean hasLimitBytes() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * If set, the number of bytes to read from the server before terminating the
       * log output. This may not display a complete final line of logging, and may return
       * slightly more or slightly less than the specified limit.
       * +optional
       * </pre>
       *
       * <code>optional int64 limitBytes = 8;</code>
       * @return The limitBytes.
       */
      @java.lang.Override
      public long getLimitBytes() {
        return limitBytes_;
      }
      /**
       * <pre>
       * If set, the number of bytes to read from the server before terminating the
       * log output. This may not display a complete final line of logging, and may return
       * slightly more or slightly less than the specified limit.
       * +optional
       * </pre>
       *
       * <code>optional int64 limitBytes = 8;</code>
       * @param value The limitBytes to set.
       * @return This builder for chaining.
       */
      public Builder setLimitBytes(long value) {

        limitBytes_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If set, the number of bytes to read from the server before terminating the
       * log output. This may not display a complete final line of logging, and may return
       * slightly more or slightly less than the specified limit.
       * +optional
       * </pre>
       *
       * <code>optional int64 limitBytes = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearLimitBytes() {
        bitField0_ = (bitField0_ & ~0x00000080);
        limitBytes_ = 0L;
        onChanged();
        return this;
      }

      private boolean insecureSkipTLSVerifyBackend_ ;
      /**
       * <pre>
       * insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the
       * serving certificate of the backend it is connecting to.  This will make the HTTPS connection between the apiserver
       * and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real
       * kubelet.  If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the
       * connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept
       * the actual log data coming from the real kubelet).
       * +optional
       * </pre>
       *
       * <code>optional bool insecureSkipTLSVerifyBackend = 9;</code>
       * @return Whether the insecureSkipTLSVerifyBackend field is set.
       */
      @java.lang.Override
      public boolean hasInsecureSkipTLSVerifyBackend() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the
       * serving certificate of the backend it is connecting to.  This will make the HTTPS connection between the apiserver
       * and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real
       * kubelet.  If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the
       * connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept
       * the actual log data coming from the real kubelet).
       * +optional
       * </pre>
       *
       * <code>optional bool insecureSkipTLSVerifyBackend = 9;</code>
       * @return The insecureSkipTLSVerifyBackend.
       */
      @java.lang.Override
      public boolean getInsecureSkipTLSVerifyBackend() {
        return insecureSkipTLSVerifyBackend_;
      }
      /**
       * <pre>
       * insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the
       * serving certificate of the backend it is connecting to.  This will make the HTTPS connection between the apiserver
       * and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real
       * kubelet.  If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the
       * connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept
       * the actual log data coming from the real kubelet).
       * +optional
       * </pre>
       *
       * <code>optional bool insecureSkipTLSVerifyBackend = 9;</code>
       * @param value The insecureSkipTLSVerifyBackend to set.
       * @return This builder for chaining.
       */
      public Builder setInsecureSkipTLSVerifyBackend(boolean value) {

        insecureSkipTLSVerifyBackend_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the
       * serving certificate of the backend it is connecting to.  This will make the HTTPS connection between the apiserver
       * and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real
       * kubelet.  If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the
       * connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept
       * the actual log data coming from the real kubelet).
       * +optional
       * </pre>
       *
       * <code>optional bool insecureSkipTLSVerifyBackend = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearInsecureSkipTLSVerifyBackend() {
        bitField0_ = (bitField0_ & ~0x00000100);
        insecureSkipTLSVerifyBackend_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodLogOptions)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodLogOptions)
    private static final io.kubernetes.client.proto.V1.PodLogOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodLogOptions();
    }

    public static io.kubernetes.client.proto.V1.PodLogOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodLogOptions>
        PARSER = new com.google.protobuf.AbstractParser<PodLogOptions>() {
      @java.lang.Override
      public PodLogOptions 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<PodLogOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodLogOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodLogOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodOSOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodOS)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name is the name of the operating system. The currently supported values are linux and windows.
     * Additional value may be defined in future and can be one of:
     * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
     * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name is the name of the operating system. The currently supported values are linux and windows.
     * Additional value may be defined in future and can be one of:
     * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
     * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name is the name of the operating system. The currently supported values are linux and windows.
     * Additional value may be defined in future and can be one of:
     * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
     * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   * PodOS defines the OS parameters of a pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodOS}
   */
  public static final class PodOS extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodOS)
      PodOSOrBuilder {
  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= */ "",
        PodOS.class.getName());
    }
    // Use PodOS.newBuilder() to construct.
    private PodOS(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodOS() {
      name_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodOS_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodOS_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodOS.class, io.kubernetes.client.proto.V1.PodOS.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 name of the operating system. The currently supported values are linux and windows.
     * Additional value may be defined in future and can be one of:
     * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
     * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
     * </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 name of the operating system. The currently supported values are linux and windows.
     * Additional value may be defined in future and can be one of:
     * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
     * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
     * </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 name of the operating system. The currently supported values are linux and windows.
     * Additional value may be defined in future and can be one of:
     * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
     * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
     * </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;
      }
    }

    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_);
      }
      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_);
      }
      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.V1.PodOS)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodOS other = (io.kubernetes.client.proto.V1.PodOS) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) 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();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodOS parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodOS 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.V1.PodOS parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodOS 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.V1.PodOS parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodOS parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodOS parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodOS 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.V1.PodOS parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodOS 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.V1.PodOS parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodOS 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.V1.PodOS 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>
     * PodOS defines the OS parameters of a pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodOS}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodOS)
        io.kubernetes.client.proto.V1.PodOSOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodOS_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodOS_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodOS.class, io.kubernetes.client.proto.V1.PodOS.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodOS.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodOS_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodOS getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodOS.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodOS build() {
        io.kubernetes.client.proto.V1.PodOS result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodOS buildPartial() {
        io.kubernetes.client.proto.V1.PodOS result = new io.kubernetes.client.proto.V1.PodOS(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodOS result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          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.V1.PodOS) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodOS)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodOS other) {
        if (other == io.kubernetes.client.proto.V1.PodOS.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          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: {
                name_ = 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 name_ = "";
      /**
       * <pre>
       * Name is the name of the operating system. The currently supported values are linux and windows.
       * Additional value may be defined in future and can be one of:
       * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
       * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
       * </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 name of the operating system. The currently supported values are linux and windows.
       * Additional value may be defined in future and can be one of:
       * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
       * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
       * </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 name of the operating system. The currently supported values are linux and windows.
       * Additional value may be defined in future and can be one of:
       * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
       * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
       * </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 name of the operating system. The currently supported values are linux and windows.
       * Additional value may be defined in future and can be one of:
       * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
       * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
       * </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 name of the operating system. The currently supported values are linux and windows.
       * Additional value may be defined in future and can be one of:
       * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
       * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
       * </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 name of the operating system. The currently supported values are linux and windows.
       * Additional value may be defined in future and can be one of:
       * https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
       * Clients should expect to handle additional values and treat unrecognized values in this field as os: null
       * </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;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodOS)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodOS)
    private static final io.kubernetes.client.proto.V1.PodOS DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodOS();
    }

    public static io.kubernetes.client.proto.V1.PodOS getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodOS>
        PARSER = new com.google.protobuf.AbstractParser<PodOS>() {
      @java.lang.Override
      public PodOS 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<PodOS> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodOS> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodOS getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodPortForwardOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodPortForwardOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * List of ports to forward
     * Required when using WebSockets
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int32 ports = 1;</code>
     * @return A list containing the ports.
     */
    java.util.List<java.lang.Integer> getPortsList();
    /**
     * <pre>
     * List of ports to forward
     * Required when using WebSockets
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int32 ports = 1;</code>
     * @return The count of ports.
     */
    int getPortsCount();
    /**
     * <pre>
     * List of ports to forward
     * Required when using WebSockets
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int32 ports = 1;</code>
     * @param index The index of the element to return.
     * @return The ports at the given index.
     */
    int getPorts(int index);
  }
  /**
   * <pre>
   * PodPortForwardOptions is the query options to a Pod's port forward call
   * when using WebSockets.
   * The `port` query parameter must specify the port or
   * ports (comma separated) to forward over.
   * Port forwarding over SPDY does not use these options. It requires the port
   * to be passed in the `port` header as part of request.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodPortForwardOptions}
   */
  public static final class PodPortForwardOptions extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodPortForwardOptions)
      PodPortForwardOptionsOrBuilder {
  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= */ "",
        PodPortForwardOptions.class.getName());
    }
    // Use PodPortForwardOptions.newBuilder() to construct.
    private PodPortForwardOptions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodPortForwardOptions() {
      ports_ = emptyIntList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodPortForwardOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodPortForwardOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodPortForwardOptions.class, io.kubernetes.client.proto.V1.PodPortForwardOptions.Builder.class);
    }

    public static final int PORTS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList ports_ =
        emptyIntList();
    /**
     * <pre>
     * List of ports to forward
     * Required when using WebSockets
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int32 ports = 1;</code>
     * @return A list containing the ports.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getPortsList() {
      return ports_;
    }
    /**
     * <pre>
     * List of ports to forward
     * Required when using WebSockets
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int32 ports = 1;</code>
     * @return The count of ports.
     */
    public int getPortsCount() {
      return ports_.size();
    }
    /**
     * <pre>
     * List of ports to forward
     * Required when using WebSockets
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int32 ports = 1;</code>
     * @param index The index of the element to return.
     * @return The ports at the given index.
     */
    public int getPorts(int index) {
      return ports_.getInt(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 < ports_.size(); i++) {
        output.writeInt32(1, ports_.getInt(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < ports_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(ports_.getInt(i));
        }
        size += dataSize;
        size += 1 * getPortsList().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.V1.PodPortForwardOptions)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodPortForwardOptions other = (io.kubernetes.client.proto.V1.PodPortForwardOptions) obj;

      if (!getPortsList()
          .equals(other.getPortsList())) 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 (getPortsCount() > 0) {
        hash = (37 * hash) + PORTS_FIELD_NUMBER;
        hash = (53 * hash) + getPortsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodPortForwardOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodPortForwardOptions 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.V1.PodPortForwardOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodPortForwardOptions 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.V1.PodPortForwardOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodPortForwardOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodPortForwardOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodPortForwardOptions 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.V1.PodPortForwardOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodPortForwardOptions 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.V1.PodPortForwardOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodPortForwardOptions 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.V1.PodPortForwardOptions 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>
     * PodPortForwardOptions is the query options to a Pod's port forward call
     * when using WebSockets.
     * The `port` query parameter must specify the port or
     * ports (comma separated) to forward over.
     * Port forwarding over SPDY does not use these options. It requires the port
     * to be passed in the `port` header as part of request.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodPortForwardOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodPortForwardOptions)
        io.kubernetes.client.proto.V1.PodPortForwardOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodPortForwardOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodPortForwardOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodPortForwardOptions.class, io.kubernetes.client.proto.V1.PodPortForwardOptions.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodPortForwardOptions.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ports_ = emptyIntList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodPortForwardOptions_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodPortForwardOptions getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodPortForwardOptions.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodPortForwardOptions build() {
        io.kubernetes.client.proto.V1.PodPortForwardOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodPortForwardOptions buildPartial() {
        io.kubernetes.client.proto.V1.PodPortForwardOptions result = new io.kubernetes.client.proto.V1.PodPortForwardOptions(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodPortForwardOptions result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          ports_.makeImmutable();
          result.ports_ = ports_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodPortForwardOptions) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodPortForwardOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodPortForwardOptions other) {
        if (other == io.kubernetes.client.proto.V1.PodPortForwardOptions.getDefaultInstance()) return this;
        if (!other.ports_.isEmpty()) {
          if (ports_.isEmpty()) {
            ports_ = other.ports_;
            ports_.makeImmutable();
            bitField0_ |= 0x00000001;
          } else {
            ensurePortsIsMutable();
            ports_.addAll(other.ports_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int v = input.readInt32();
                ensurePortsIsMutable();
                ports_.addInt(v);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensurePortsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  ports_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                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.Internal.IntList ports_ = emptyIntList();
      private void ensurePortsIsMutable() {
        if (!ports_.isModifiable()) {
          ports_ = makeMutableCopy(ports_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * List of ports to forward
       * Required when using WebSockets
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int32 ports = 1;</code>
       * @return A list containing the ports.
       */
      public java.util.List<java.lang.Integer>
          getPortsList() {
        ports_.makeImmutable();
        return ports_;
      }
      /**
       * <pre>
       * List of ports to forward
       * Required when using WebSockets
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int32 ports = 1;</code>
       * @return The count of ports.
       */
      public int getPortsCount() {
        return ports_.size();
      }
      /**
       * <pre>
       * List of ports to forward
       * Required when using WebSockets
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int32 ports = 1;</code>
       * @param index The index of the element to return.
       * @return The ports at the given index.
       */
      public int getPorts(int index) {
        return ports_.getInt(index);
      }
      /**
       * <pre>
       * List of ports to forward
       * Required when using WebSockets
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int32 ports = 1;</code>
       * @param index The index to set the value at.
       * @param value The ports to set.
       * @return This builder for chaining.
       */
      public Builder setPorts(
          int index, int value) {

        ensurePortsIsMutable();
        ports_.setInt(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of ports to forward
       * Required when using WebSockets
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int32 ports = 1;</code>
       * @param value The ports to add.
       * @return This builder for chaining.
       */
      public Builder addPorts(int value) {

        ensurePortsIsMutable();
        ports_.addInt(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of ports to forward
       * Required when using WebSockets
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int32 ports = 1;</code>
       * @param values The ports to add.
       * @return This builder for chaining.
       */
      public Builder addAllPorts(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensurePortsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, ports_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of ports to forward
       * Required when using WebSockets
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int32 ports = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPorts() {
        ports_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodPortForwardOptions)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodPortForwardOptions)
    private static final io.kubernetes.client.proto.V1.PodPortForwardOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodPortForwardOptions();
    }

    public static io.kubernetes.client.proto.V1.PodPortForwardOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodPortForwardOptions>
        PARSER = new com.google.protobuf.AbstractParser<PodPortForwardOptions>() {
      @java.lang.Override
      public PodPortForwardOptions 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<PodPortForwardOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodPortForwardOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodPortForwardOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodProxyOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodProxyOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Path is the URL path to use for the current proxy request to pod.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * Path is the URL path to use for the current proxy request to pod.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Path is the URL path to use for the current proxy request to pod.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();
  }
  /**
   * <pre>
   * PodProxyOptions is the query options to a Pod's proxy call.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodProxyOptions}
   */
  public static final class PodProxyOptions extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodProxyOptions)
      PodProxyOptionsOrBuilder {
  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= */ "",
        PodProxyOptions.class.getName());
    }
    // Use PodProxyOptions.newBuilder() to construct.
    private PodProxyOptions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodProxyOptions() {
      path_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodProxyOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodProxyOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodProxyOptions.class, io.kubernetes.client.proto.V1.PodProxyOptions.Builder.class);
    }

    private int bitField0_;
    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * Path is the URL path to use for the current proxy request to pod.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Path is the URL path to use for the current proxy request to pod.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</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 the URL path to use for the current proxy request to pod.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</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;
      }
    }

    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, path_);
      }
      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, path_);
      }
      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.V1.PodProxyOptions)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodProxyOptions other = (io.kubernetes.client.proto.V1.PodProxyOptions) obj;

      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) 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 (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodProxyOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodProxyOptions 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.V1.PodProxyOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodProxyOptions 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.V1.PodProxyOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodProxyOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodProxyOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodProxyOptions 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.V1.PodProxyOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodProxyOptions 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.V1.PodProxyOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodProxyOptions 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.V1.PodProxyOptions 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>
     * PodProxyOptions is the query options to a Pod's proxy call.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodProxyOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodProxyOptions)
        io.kubernetes.client.proto.V1.PodProxyOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodProxyOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodProxyOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodProxyOptions.class, io.kubernetes.client.proto.V1.PodProxyOptions.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodProxyOptions.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodProxyOptions_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodProxyOptions getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodProxyOptions.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodProxyOptions build() {
        io.kubernetes.client.proto.V1.PodProxyOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodProxyOptions buildPartial() {
        io.kubernetes.client.proto.V1.PodProxyOptions result = new io.kubernetes.client.proto.V1.PodProxyOptions(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodProxyOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
          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.V1.PodProxyOptions) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodProxyOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodProxyOptions other) {
        if (other == io.kubernetes.client.proto.V1.PodProxyOptions.getDefaultInstance()) return this;
        if (other.hasPath()) {
          path_ = other.path_;
          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: {
                path_ = 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 path_ = "";
      /**
       * <pre>
       * Path is the URL path to use for the current proxy request to pod.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Path is the URL path to use for the current proxy request to pod.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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 the URL path to use for the current proxy request to pod.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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 the URL path to use for the current proxy request to pod.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path is the URL path to use for the current proxy request to pod.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path is the URL path to use for the current proxy request to pod.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodProxyOptions)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodProxyOptions)
    private static final io.kubernetes.client.proto.V1.PodProxyOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodProxyOptions();
    }

    public static io.kubernetes.client.proto.V1.PodProxyOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodProxyOptions>
        PARSER = new com.google.protobuf.AbstractParser<PodProxyOptions>() {
      @java.lang.Override
      public PodProxyOptions 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<PodProxyOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodProxyOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodProxyOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodReadinessGateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodReadinessGate)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * ConditionType refers to a condition in the pod's condition list with matching type.
     * </pre>
     *
     * <code>optional string conditionType = 1;</code>
     * @return Whether the conditionType field is set.
     */
    boolean hasConditionType();
    /**
     * <pre>
     * ConditionType refers to a condition in the pod's condition list with matching type.
     * </pre>
     *
     * <code>optional string conditionType = 1;</code>
     * @return The conditionType.
     */
    java.lang.String getConditionType();
    /**
     * <pre>
     * ConditionType refers to a condition in the pod's condition list with matching type.
     * </pre>
     *
     * <code>optional string conditionType = 1;</code>
     * @return The bytes for conditionType.
     */
    com.google.protobuf.ByteString
        getConditionTypeBytes();
  }
  /**
   * <pre>
   * PodReadinessGate contains the reference to a pod condition
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodReadinessGate}
   */
  public static final class PodReadinessGate extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodReadinessGate)
      PodReadinessGateOrBuilder {
  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= */ "",
        PodReadinessGate.class.getName());
    }
    // Use PodReadinessGate.newBuilder() to construct.
    private PodReadinessGate(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodReadinessGate() {
      conditionType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodReadinessGate_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodReadinessGate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodReadinessGate.class, io.kubernetes.client.proto.V1.PodReadinessGate.Builder.class);
    }

    private int bitField0_;
    public static final int CONDITIONTYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object conditionType_ = "";
    /**
     * <pre>
     * ConditionType refers to a condition in the pod's condition list with matching type.
     * </pre>
     *
     * <code>optional string conditionType = 1;</code>
     * @return Whether the conditionType field is set.
     */
    @java.lang.Override
    public boolean hasConditionType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * ConditionType refers to a condition in the pod's condition list with matching type.
     * </pre>
     *
     * <code>optional string conditionType = 1;</code>
     * @return The conditionType.
     */
    @java.lang.Override
    public java.lang.String getConditionType() {
      java.lang.Object ref = conditionType_;
      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()) {
          conditionType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ConditionType refers to a condition in the pod's condition list with matching type.
     * </pre>
     *
     * <code>optional string conditionType = 1;</code>
     * @return The bytes for conditionType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getConditionTypeBytes() {
      java.lang.Object ref = conditionType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        conditionType_ = 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, conditionType_);
      }
      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, conditionType_);
      }
      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.V1.PodReadinessGate)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodReadinessGate other = (io.kubernetes.client.proto.V1.PodReadinessGate) obj;

      if (hasConditionType() != other.hasConditionType()) return false;
      if (hasConditionType()) {
        if (!getConditionType()
            .equals(other.getConditionType())) 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 (hasConditionType()) {
        hash = (37 * hash) + CONDITIONTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getConditionType().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodReadinessGate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodReadinessGate 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.V1.PodReadinessGate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodReadinessGate 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.V1.PodReadinessGate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodReadinessGate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodReadinessGate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodReadinessGate 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.V1.PodReadinessGate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodReadinessGate 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.V1.PodReadinessGate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodReadinessGate 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.V1.PodReadinessGate 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>
     * PodReadinessGate contains the reference to a pod condition
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodReadinessGate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodReadinessGate)
        io.kubernetes.client.proto.V1.PodReadinessGateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodReadinessGate_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodReadinessGate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodReadinessGate.class, io.kubernetes.client.proto.V1.PodReadinessGate.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodReadinessGate.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        conditionType_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodReadinessGate_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodReadinessGate getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodReadinessGate.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodReadinessGate build() {
        io.kubernetes.client.proto.V1.PodReadinessGate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodReadinessGate buildPartial() {
        io.kubernetes.client.proto.V1.PodReadinessGate result = new io.kubernetes.client.proto.V1.PodReadinessGate(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodReadinessGate result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.conditionType_ = conditionType_;
          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.V1.PodReadinessGate) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodReadinessGate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodReadinessGate other) {
        if (other == io.kubernetes.client.proto.V1.PodReadinessGate.getDefaultInstance()) return this;
        if (other.hasConditionType()) {
          conditionType_ = other.conditionType_;
          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: {
                conditionType_ = 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 conditionType_ = "";
      /**
       * <pre>
       * ConditionType refers to a condition in the pod's condition list with matching type.
       * </pre>
       *
       * <code>optional string conditionType = 1;</code>
       * @return Whether the conditionType field is set.
       */
      public boolean hasConditionType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * ConditionType refers to a condition in the pod's condition list with matching type.
       * </pre>
       *
       * <code>optional string conditionType = 1;</code>
       * @return The conditionType.
       */
      public java.lang.String getConditionType() {
        java.lang.Object ref = conditionType_;
        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()) {
            conditionType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ConditionType refers to a condition in the pod's condition list with matching type.
       * </pre>
       *
       * <code>optional string conditionType = 1;</code>
       * @return The bytes for conditionType.
       */
      public com.google.protobuf.ByteString
          getConditionTypeBytes() {
        java.lang.Object ref = conditionType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          conditionType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ConditionType refers to a condition in the pod's condition list with matching type.
       * </pre>
       *
       * <code>optional string conditionType = 1;</code>
       * @param value The conditionType to set.
       * @return This builder for chaining.
       */
      public Builder setConditionType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        conditionType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ConditionType refers to a condition in the pod's condition list with matching type.
       * </pre>
       *
       * <code>optional string conditionType = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearConditionType() {
        conditionType_ = getDefaultInstance().getConditionType();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ConditionType refers to a condition in the pod's condition list with matching type.
       * </pre>
       *
       * <code>optional string conditionType = 1;</code>
       * @param value The bytes for conditionType to set.
       * @return This builder for chaining.
       */
      public Builder setConditionTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        conditionType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodReadinessGate)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodReadinessGate)
    private static final io.kubernetes.client.proto.V1.PodReadinessGate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodReadinessGate();
    }

    public static io.kubernetes.client.proto.V1.PodReadinessGate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodReadinessGate>
        PARSER = new com.google.protobuf.AbstractParser<PodReadinessGate>() {
      @java.lang.Override
      public PodReadinessGate 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<PodReadinessGate> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodReadinessGate> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodReadinessGate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodResourceClaimOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodResourceClaim)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name uniquely identifies this resource claim inside the pod.
     * This must be a DNS_LABEL.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name uniquely identifies this resource claim inside the pod.
     * This must be a DNS_LABEL.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name uniquely identifies this resource claim inside the pod.
     * This must be a DNS_LABEL.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Source describes where to find the ResourceClaim.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
     * @return Whether the source field is set.
     */
    boolean hasSource();
    /**
     * <pre>
     * Source describes where to find the ResourceClaim.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
     * @return The source.
     */
    io.kubernetes.client.proto.V1.ClaimSource getSource();
    /**
     * <pre>
     * Source describes where to find the ResourceClaim.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
     */
    io.kubernetes.client.proto.V1.ClaimSourceOrBuilder getSourceOrBuilder();
  }
  /**
   * <pre>
   * PodResourceClaim references exactly one ResourceClaim through a ClaimSource.
   * It adds a name to it that uniquely identifies the ResourceClaim inside the Pod.
   * Containers that need access to the ResourceClaim reference it with this name.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodResourceClaim}
   */
  public static final class PodResourceClaim extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodResourceClaim)
      PodResourceClaimOrBuilder {
  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= */ "",
        PodResourceClaim.class.getName());
    }
    // Use PodResourceClaim.newBuilder() to construct.
    private PodResourceClaim(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodResourceClaim() {
      name_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodResourceClaim_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodResourceClaim_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodResourceClaim.class, io.kubernetes.client.proto.V1.PodResourceClaim.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name uniquely identifies this resource claim inside the pod.
     * This must be a DNS_LABEL.
     * </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 uniquely identifies this resource claim inside the pod.
     * This must be a DNS_LABEL.
     * </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 uniquely identifies this resource claim inside the pod.
     * This must be a DNS_LABEL.
     * </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 SOURCE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.ClaimSource source_;
    /**
     * <pre>
     * Source describes where to find the ResourceClaim.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
     * @return Whether the source field is set.
     */
    @java.lang.Override
    public boolean hasSource() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Source describes where to find the ResourceClaim.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
     * @return The source.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ClaimSource getSource() {
      return source_ == null ? io.kubernetes.client.proto.V1.ClaimSource.getDefaultInstance() : source_;
    }
    /**
     * <pre>
     * Source describes where to find the ResourceClaim.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ClaimSourceOrBuilder getSourceOrBuilder() {
      return source_ == null ? io.kubernetes.client.proto.V1.ClaimSource.getDefaultInstance() : source_;
    }

    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.writeMessage(2, getSource());
      }
      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
          .computeMessageSize(2, getSource());
      }
      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.V1.PodResourceClaim)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodResourceClaim other = (io.kubernetes.client.proto.V1.PodResourceClaim) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasSource() != other.hasSource()) return false;
      if (hasSource()) {
        if (!getSource()
            .equals(other.getSource())) 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 (hasSource()) {
        hash = (37 * hash) + SOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getSource().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodResourceClaim parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaim 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.V1.PodResourceClaim parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaim 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.V1.PodResourceClaim parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaim parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaim parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaim 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.V1.PodResourceClaim parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodResourceClaim 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.V1.PodResourceClaim parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaim 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.V1.PodResourceClaim 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>
     * PodResourceClaim references exactly one ResourceClaim through a ClaimSource.
     * It adds a name to it that uniquely identifies the ResourceClaim inside the Pod.
     * Containers that need access to the ResourceClaim reference it with this name.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodResourceClaim}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodResourceClaim)
        io.kubernetes.client.proto.V1.PodResourceClaimOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodResourceClaim_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodResourceClaim_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodResourceClaim.class, io.kubernetes.client.proto.V1.PodResourceClaim.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodResourceClaim.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSourceFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        source_ = null;
        if (sourceBuilder_ != null) {
          sourceBuilder_.dispose();
          sourceBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodResourceClaim_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodResourceClaim getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodResourceClaim.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodResourceClaim build() {
        io.kubernetes.client.proto.V1.PodResourceClaim result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodResourceClaim buildPartial() {
        io.kubernetes.client.proto.V1.PodResourceClaim result = new io.kubernetes.client.proto.V1.PodResourceClaim(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodResourceClaim 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.source_ = sourceBuilder_ == null
              ? source_
              : sourceBuilder_.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.V1.PodResourceClaim) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodResourceClaim)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodResourceClaim other) {
        if (other == io.kubernetes.client.proto.V1.PodResourceClaim.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasSource()) {
          mergeSource(other.getSource());
        }
        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: {
                input.readMessage(
                    getSourceFieldBuilder().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 java.lang.Object name_ = "";
      /**
       * <pre>
       * Name uniquely identifies this resource claim inside the pod.
       * This must be a DNS_LABEL.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name uniquely identifies this resource claim inside the pod.
       * This must be a DNS_LABEL.
       * </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 uniquely identifies this resource claim inside the pod.
       * This must be a DNS_LABEL.
       * </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 uniquely identifies this resource claim inside the pod.
       * This must be a DNS_LABEL.
       * </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 uniquely identifies this resource claim inside the pod.
       * This must be a DNS_LABEL.
       * </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 uniquely identifies this resource claim inside the pod.
       * This must be a DNS_LABEL.
       * </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 io.kubernetes.client.proto.V1.ClaimSource source_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ClaimSource, io.kubernetes.client.proto.V1.ClaimSource.Builder, io.kubernetes.client.proto.V1.ClaimSourceOrBuilder> sourceBuilder_;
      /**
       * <pre>
       * Source describes where to find the ResourceClaim.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
       * @return Whether the source field is set.
       */
      public boolean hasSource() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Source describes where to find the ResourceClaim.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
       * @return The source.
       */
      public io.kubernetes.client.proto.V1.ClaimSource getSource() {
        if (sourceBuilder_ == null) {
          return source_ == null ? io.kubernetes.client.proto.V1.ClaimSource.getDefaultInstance() : source_;
        } else {
          return sourceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Source describes where to find the ResourceClaim.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
       */
      public Builder setSource(io.kubernetes.client.proto.V1.ClaimSource value) {
        if (sourceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          source_ = value;
        } else {
          sourceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Source describes where to find the ResourceClaim.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
       */
      public Builder setSource(
          io.kubernetes.client.proto.V1.ClaimSource.Builder builderForValue) {
        if (sourceBuilder_ == null) {
          source_ = builderForValue.build();
        } else {
          sourceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Source describes where to find the ResourceClaim.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
       */
      public Builder mergeSource(io.kubernetes.client.proto.V1.ClaimSource value) {
        if (sourceBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            source_ != null &&
            source_ != io.kubernetes.client.proto.V1.ClaimSource.getDefaultInstance()) {
            getSourceBuilder().mergeFrom(value);
          } else {
            source_ = value;
          }
        } else {
          sourceBuilder_.mergeFrom(value);
        }
        if (source_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Source describes where to find the ResourceClaim.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
       */
      public Builder clearSource() {
        bitField0_ = (bitField0_ & ~0x00000002);
        source_ = null;
        if (sourceBuilder_ != null) {
          sourceBuilder_.dispose();
          sourceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Source describes where to find the ResourceClaim.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ClaimSource.Builder getSourceBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSourceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Source describes where to find the ResourceClaim.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ClaimSourceOrBuilder getSourceOrBuilder() {
        if (sourceBuilder_ != null) {
          return sourceBuilder_.getMessageOrBuilder();
        } else {
          return source_ == null ?
              io.kubernetes.client.proto.V1.ClaimSource.getDefaultInstance() : source_;
        }
      }
      /**
       * <pre>
       * Source describes where to find the ResourceClaim.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClaimSource source = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ClaimSource, io.kubernetes.client.proto.V1.ClaimSource.Builder, io.kubernetes.client.proto.V1.ClaimSourceOrBuilder> 
          getSourceFieldBuilder() {
        if (sourceBuilder_ == null) {
          sourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ClaimSource, io.kubernetes.client.proto.V1.ClaimSource.Builder, io.kubernetes.client.proto.V1.ClaimSourceOrBuilder>(
                  getSource(),
                  getParentForChildren(),
                  isClean());
          source_ = null;
        }
        return sourceBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodResourceClaim)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodResourceClaim)
    private static final io.kubernetes.client.proto.V1.PodResourceClaim DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodResourceClaim();
    }

    public static io.kubernetes.client.proto.V1.PodResourceClaim getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodResourceClaim>
        PARSER = new com.google.protobuf.AbstractParser<PodResourceClaim>() {
      @java.lang.Override
      public PodResourceClaim 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<PodResourceClaim> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodResourceClaim> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodResourceClaim getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodResourceClaimStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodResourceClaimStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name uniquely identifies this resource claim inside the pod.
     * This must match the name of an entry in pod.spec.resourceClaims,
     * which implies that the string must be a DNS_LABEL.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name uniquely identifies this resource claim inside the pod.
     * This must match the name of an entry in pod.spec.resourceClaims,
     * which implies that the string must be a DNS_LABEL.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name uniquely identifies this resource claim inside the pod.
     * This must match the name of an entry in pod.spec.resourceClaims,
     * which implies that the string must be a DNS_LABEL.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * ResourceClaimName is the name of the ResourceClaim that was
     * generated for the Pod in the namespace of the Pod. It this is
     * unset, then generating a ResourceClaim was not necessary. The
     * pod.spec.resourceClaims entry can be ignored in this case.
     *
     * +optional
     * </pre>
     *
     * <code>optional string resourceClaimName = 2;</code>
     * @return Whether the resourceClaimName field is set.
     */
    boolean hasResourceClaimName();
    /**
     * <pre>
     * ResourceClaimName is the name of the ResourceClaim that was
     * generated for the Pod in the namespace of the Pod. It this is
     * unset, then generating a ResourceClaim was not necessary. The
     * pod.spec.resourceClaims entry can be ignored in this case.
     *
     * +optional
     * </pre>
     *
     * <code>optional string resourceClaimName = 2;</code>
     * @return The resourceClaimName.
     */
    java.lang.String getResourceClaimName();
    /**
     * <pre>
     * ResourceClaimName is the name of the ResourceClaim that was
     * generated for the Pod in the namespace of the Pod. It this is
     * unset, then generating a ResourceClaim was not necessary. The
     * pod.spec.resourceClaims entry can be ignored in this case.
     *
     * +optional
     * </pre>
     *
     * <code>optional string resourceClaimName = 2;</code>
     * @return The bytes for resourceClaimName.
     */
    com.google.protobuf.ByteString
        getResourceClaimNameBytes();
  }
  /**
   * <pre>
   * PodResourceClaimStatus is stored in the PodStatus for each PodResourceClaim
   * which references a ResourceClaimTemplate. It stores the generated name for
   * the corresponding ResourceClaim.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodResourceClaimStatus}
   */
  public static final class PodResourceClaimStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodResourceClaimStatus)
      PodResourceClaimStatusOrBuilder {
  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= */ "",
        PodResourceClaimStatus.class.getName());
    }
    // Use PodResourceClaimStatus.newBuilder() to construct.
    private PodResourceClaimStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodResourceClaimStatus() {
      name_ = "";
      resourceClaimName_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodResourceClaimStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodResourceClaimStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodResourceClaimStatus.class, io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name uniquely identifies this resource claim inside the pod.
     * This must match the name of an entry in pod.spec.resourceClaims,
     * which implies that the string must be a DNS_LABEL.
     * </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 uniquely identifies this resource claim inside the pod.
     * This must match the name of an entry in pod.spec.resourceClaims,
     * which implies that the string must be a DNS_LABEL.
     * </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 uniquely identifies this resource claim inside the pod.
     * This must match the name of an entry in pod.spec.resourceClaims,
     * which implies that the string must be a DNS_LABEL.
     * </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 RESOURCECLAIMNAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object resourceClaimName_ = "";
    /**
     * <pre>
     * ResourceClaimName is the name of the ResourceClaim that was
     * generated for the Pod in the namespace of the Pod. It this is
     * unset, then generating a ResourceClaim was not necessary. The
     * pod.spec.resourceClaims entry can be ignored in this case.
     *
     * +optional
     * </pre>
     *
     * <code>optional string resourceClaimName = 2;</code>
     * @return Whether the resourceClaimName field is set.
     */
    @java.lang.Override
    public boolean hasResourceClaimName() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * ResourceClaimName is the name of the ResourceClaim that was
     * generated for the Pod in the namespace of the Pod. It this is
     * unset, then generating a ResourceClaim was not necessary. The
     * pod.spec.resourceClaims entry can be ignored in this case.
     *
     * +optional
     * </pre>
     *
     * <code>optional string resourceClaimName = 2;</code>
     * @return The resourceClaimName.
     */
    @java.lang.Override
    public java.lang.String getResourceClaimName() {
      java.lang.Object ref = resourceClaimName_;
      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()) {
          resourceClaimName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ResourceClaimName is the name of the ResourceClaim that was
     * generated for the Pod in the namespace of the Pod. It this is
     * unset, then generating a ResourceClaim was not necessary. The
     * pod.spec.resourceClaims entry can be ignored in this case.
     *
     * +optional
     * </pre>
     *
     * <code>optional string resourceClaimName = 2;</code>
     * @return The bytes for resourceClaimName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResourceClaimNameBytes() {
      java.lang.Object ref = resourceClaimName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resourceClaimName_ = 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, resourceClaimName_);
      }
      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, resourceClaimName_);
      }
      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.V1.PodResourceClaimStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodResourceClaimStatus other = (io.kubernetes.client.proto.V1.PodResourceClaimStatus) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasResourceClaimName() != other.hasResourceClaimName()) return false;
      if (hasResourceClaimName()) {
        if (!getResourceClaimName()
            .equals(other.getResourceClaimName())) 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 (hasResourceClaimName()) {
        hash = (37 * hash) + RESOURCECLAIMNAME_FIELD_NUMBER;
        hash = (53 * hash) + getResourceClaimName().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodResourceClaimStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaimStatus 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.V1.PodResourceClaimStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaimStatus 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.V1.PodResourceClaimStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaimStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaimStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaimStatus 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.V1.PodResourceClaimStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodResourceClaimStatus 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.V1.PodResourceClaimStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodResourceClaimStatus 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.V1.PodResourceClaimStatus 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>
     * PodResourceClaimStatus is stored in the PodStatus for each PodResourceClaim
     * which references a ResourceClaimTemplate. It stores the generated name for
     * the corresponding ResourceClaim.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodResourceClaimStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodResourceClaimStatus)
        io.kubernetes.client.proto.V1.PodResourceClaimStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodResourceClaimStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodResourceClaimStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodResourceClaimStatus.class, io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodResourceClaimStatus.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        resourceClaimName_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodResourceClaimStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodResourceClaimStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodResourceClaimStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodResourceClaimStatus build() {
        io.kubernetes.client.proto.V1.PodResourceClaimStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodResourceClaimStatus buildPartial() {
        io.kubernetes.client.proto.V1.PodResourceClaimStatus result = new io.kubernetes.client.proto.V1.PodResourceClaimStatus(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodResourceClaimStatus 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.resourceClaimName_ = resourceClaimName_;
          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.V1.PodResourceClaimStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodResourceClaimStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodResourceClaimStatus other) {
        if (other == io.kubernetes.client.proto.V1.PodResourceClaimStatus.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasResourceClaimName()) {
          resourceClaimName_ = other.resourceClaimName_;
          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: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                resourceClaimName_ = 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 name_ = "";
      /**
       * <pre>
       * Name uniquely identifies this resource claim inside the pod.
       * This must match the name of an entry in pod.spec.resourceClaims,
       * which implies that the string must be a DNS_LABEL.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name uniquely identifies this resource claim inside the pod.
       * This must match the name of an entry in pod.spec.resourceClaims,
       * which implies that the string must be a DNS_LABEL.
       * </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 uniquely identifies this resource claim inside the pod.
       * This must match the name of an entry in pod.spec.resourceClaims,
       * which implies that the string must be a DNS_LABEL.
       * </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 uniquely identifies this resource claim inside the pod.
       * This must match the name of an entry in pod.spec.resourceClaims,
       * which implies that the string must be a DNS_LABEL.
       * </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 uniquely identifies this resource claim inside the pod.
       * This must match the name of an entry in pod.spec.resourceClaims,
       * which implies that the string must be a DNS_LABEL.
       * </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 uniquely identifies this resource claim inside the pod.
       * This must match the name of an entry in pod.spec.resourceClaims,
       * which implies that the string must be a DNS_LABEL.
       * </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 resourceClaimName_ = "";
      /**
       * <pre>
       * ResourceClaimName is the name of the ResourceClaim that was
       * generated for the Pod in the namespace of the Pod. It this is
       * unset, then generating a ResourceClaim was not necessary. The
       * pod.spec.resourceClaims entry can be ignored in this case.
       *
       * +optional
       * </pre>
       *
       * <code>optional string resourceClaimName = 2;</code>
       * @return Whether the resourceClaimName field is set.
       */
      public boolean hasResourceClaimName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * ResourceClaimName is the name of the ResourceClaim that was
       * generated for the Pod in the namespace of the Pod. It this is
       * unset, then generating a ResourceClaim was not necessary. The
       * pod.spec.resourceClaims entry can be ignored in this case.
       *
       * +optional
       * </pre>
       *
       * <code>optional string resourceClaimName = 2;</code>
       * @return The resourceClaimName.
       */
      public java.lang.String getResourceClaimName() {
        java.lang.Object ref = resourceClaimName_;
        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()) {
            resourceClaimName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ResourceClaimName is the name of the ResourceClaim that was
       * generated for the Pod in the namespace of the Pod. It this is
       * unset, then generating a ResourceClaim was not necessary. The
       * pod.spec.resourceClaims entry can be ignored in this case.
       *
       * +optional
       * </pre>
       *
       * <code>optional string resourceClaimName = 2;</code>
       * @return The bytes for resourceClaimName.
       */
      public com.google.protobuf.ByteString
          getResourceClaimNameBytes() {
        java.lang.Object ref = resourceClaimName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resourceClaimName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ResourceClaimName is the name of the ResourceClaim that was
       * generated for the Pod in the namespace of the Pod. It this is
       * unset, then generating a ResourceClaim was not necessary. The
       * pod.spec.resourceClaims entry can be ignored in this case.
       *
       * +optional
       * </pre>
       *
       * <code>optional string resourceClaimName = 2;</code>
       * @param value The resourceClaimName to set.
       * @return This builder for chaining.
       */
      public Builder setResourceClaimName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        resourceClaimName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceClaimName is the name of the ResourceClaim that was
       * generated for the Pod in the namespace of the Pod. It this is
       * unset, then generating a ResourceClaim was not necessary. The
       * pod.spec.resourceClaims entry can be ignored in this case.
       *
       * +optional
       * </pre>
       *
       * <code>optional string resourceClaimName = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResourceClaimName() {
        resourceClaimName_ = getDefaultInstance().getResourceClaimName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceClaimName is the name of the ResourceClaim that was
       * generated for the Pod in the namespace of the Pod. It this is
       * unset, then generating a ResourceClaim was not necessary. The
       * pod.spec.resourceClaims entry can be ignored in this case.
       *
       * +optional
       * </pre>
       *
       * <code>optional string resourceClaimName = 2;</code>
       * @param value The bytes for resourceClaimName to set.
       * @return This builder for chaining.
       */
      public Builder setResourceClaimNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        resourceClaimName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodResourceClaimStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodResourceClaimStatus)
    private static final io.kubernetes.client.proto.V1.PodResourceClaimStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodResourceClaimStatus();
    }

    public static io.kubernetes.client.proto.V1.PodResourceClaimStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodResourceClaimStatus>
        PARSER = new com.google.protobuf.AbstractParser<PodResourceClaimStatus>() {
      @java.lang.Override
      public PodResourceClaimStatus 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<PodResourceClaimStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodResourceClaimStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodResourceClaimStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodSchedulingGateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodSchedulingGate)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of the scheduling gate.
     * Each scheduling gate must have a unique name field.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name of the scheduling gate.
     * Each scheduling gate must have a unique name field.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the scheduling gate.
     * Each scheduling gate must have a unique name field.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   * PodSchedulingGate is associated to a Pod to guard its scheduling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodSchedulingGate}
   */
  public static final class PodSchedulingGate extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodSchedulingGate)
      PodSchedulingGateOrBuilder {
  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= */ "",
        PodSchedulingGate.class.getName());
    }
    // Use PodSchedulingGate.newBuilder() to construct.
    private PodSchedulingGate(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodSchedulingGate() {
      name_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSchedulingGate_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSchedulingGate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodSchedulingGate.class, io.kubernetes.client.proto.V1.PodSchedulingGate.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name of the scheduling gate.
     * Each scheduling gate must have a unique name field.
     * </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 of the scheduling gate.
     * Each scheduling gate must have a unique name field.
     * </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 of the scheduling gate.
     * Each scheduling gate must have a unique name field.
     * </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;
      }
    }

    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_);
      }
      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_);
      }
      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.V1.PodSchedulingGate)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodSchedulingGate other = (io.kubernetes.client.proto.V1.PodSchedulingGate) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) 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();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodSchedulingGate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSchedulingGate 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.V1.PodSchedulingGate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSchedulingGate 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.V1.PodSchedulingGate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSchedulingGate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodSchedulingGate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodSchedulingGate 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.V1.PodSchedulingGate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodSchedulingGate 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.V1.PodSchedulingGate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodSchedulingGate 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.V1.PodSchedulingGate 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>
     * PodSchedulingGate is associated to a Pod to guard its scheduling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodSchedulingGate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodSchedulingGate)
        io.kubernetes.client.proto.V1.PodSchedulingGateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSchedulingGate_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSchedulingGate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodSchedulingGate.class, io.kubernetes.client.proto.V1.PodSchedulingGate.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodSchedulingGate.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSchedulingGate_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSchedulingGate getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodSchedulingGate.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSchedulingGate build() {
        io.kubernetes.client.proto.V1.PodSchedulingGate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSchedulingGate buildPartial() {
        io.kubernetes.client.proto.V1.PodSchedulingGate result = new io.kubernetes.client.proto.V1.PodSchedulingGate(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodSchedulingGate result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          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.V1.PodSchedulingGate) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodSchedulingGate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodSchedulingGate other) {
        if (other == io.kubernetes.client.proto.V1.PodSchedulingGate.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          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: {
                name_ = 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 name_ = "";
      /**
       * <pre>
       * Name of the scheduling gate.
       * Each scheduling gate must have a unique name field.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name of the scheduling gate.
       * Each scheduling gate must have a unique name field.
       * </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 of the scheduling gate.
       * Each scheduling gate must have a unique name field.
       * </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 of the scheduling gate.
       * Each scheduling gate must have a unique name field.
       * </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 of the scheduling gate.
       * Each scheduling gate must have a unique name field.
       * </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 of the scheduling gate.
       * Each scheduling gate must have a unique name field.
       * </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;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodSchedulingGate)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodSchedulingGate)
    private static final io.kubernetes.client.proto.V1.PodSchedulingGate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodSchedulingGate();
    }

    public static io.kubernetes.client.proto.V1.PodSchedulingGate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodSchedulingGate>
        PARSER = new com.google.protobuf.AbstractParser<PodSchedulingGate>() {
      @java.lang.Override
      public PodSchedulingGate 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<PodSchedulingGate> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodSchedulingGate> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSchedulingGate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodSecurityContextOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodSecurityContext)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The SELinux context to be applied to all containers.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in SecurityContext.  If set in
     * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
     * takes precedence for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
     * @return Whether the seLinuxOptions field is set.
     */
    boolean hasSeLinuxOptions();
    /**
     * <pre>
     * The SELinux context to be applied to all containers.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in SecurityContext.  If set in
     * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
     * takes precedence for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
     * @return The seLinuxOptions.
     */
    io.kubernetes.client.proto.V1.SELinuxOptions getSeLinuxOptions();
    /**
     * <pre>
     * The SELinux context to be applied to all containers.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in SecurityContext.  If set in
     * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
     * takes precedence for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
     */
    io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder getSeLinuxOptionsOrBuilder();

    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options within a container's SecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
     * @return Whether the windowsOptions field is set.
     */
    boolean hasWindowsOptions();
    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options within a container's SecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
     * @return The windowsOptions.
     */
    io.kubernetes.client.proto.V1.WindowsSecurityContextOptions getWindowsOptions();
    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options within a container's SecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
     */
    io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder getWindowsOptionsOrBuilder();

    /**
     * <pre>
     * The UID to run the entrypoint of the container process.
     * Defaults to user specified in image metadata if unspecified.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence
     * for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsUser = 2;</code>
     * @return Whether the runAsUser field is set.
     */
    boolean hasRunAsUser();
    /**
     * <pre>
     * The UID to run the entrypoint of the container process.
     * Defaults to user specified in image metadata if unspecified.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence
     * for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsUser = 2;</code>
     * @return The runAsUser.
     */
    long getRunAsUser();

    /**
     * <pre>
     * The GID to run the entrypoint of the container process.
     * Uses runtime default if unset.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence
     * for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsGroup = 6;</code>
     * @return Whether the runAsGroup field is set.
     */
    boolean hasRunAsGroup();
    /**
     * <pre>
     * The GID to run the entrypoint of the container process.
     * Uses runtime default if unset.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence
     * for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsGroup = 6;</code>
     * @return The runAsGroup.
     */
    long getRunAsGroup();

    /**
     * <pre>
     * Indicates that the container must run as a non-root user.
     * If true, the Kubelet will validate the image at runtime to ensure that it
     * does not run as UID 0 (root) and fail to start the container if it does.
     * If unset or false, no such validation will be performed.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional bool runAsNonRoot = 3;</code>
     * @return Whether the runAsNonRoot field is set.
     */
    boolean hasRunAsNonRoot();
    /**
     * <pre>
     * Indicates that the container must run as a non-root user.
     * If true, the Kubelet will validate the image at runtime to ensure that it
     * does not run as UID 0 (root) and fail to start the container if it does.
     * If unset or false, no such validation will be performed.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional bool runAsNonRoot = 3;</code>
     * @return The runAsNonRoot.
     */
    boolean getRunAsNonRoot();

    /**
     * <pre>
     * A list of groups applied to the first process run in each container, in addition
     * to the container's primary GID, the fsGroup (if specified), and group memberships
     * defined in the container image for the uid of the container process. If unspecified,
     * no additional groups are added to any container. Note that group memberships
     * defined in the container image for the uid of the container process are still effective,
     * even if they are not included in this list.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int64 supplementalGroups = 4;</code>
     * @return A list containing the supplementalGroups.
     */
    java.util.List<java.lang.Long> getSupplementalGroupsList();
    /**
     * <pre>
     * A list of groups applied to the first process run in each container, in addition
     * to the container's primary GID, the fsGroup (if specified), and group memberships
     * defined in the container image for the uid of the container process. If unspecified,
     * no additional groups are added to any container. Note that group memberships
     * defined in the container image for the uid of the container process are still effective,
     * even if they are not included in this list.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int64 supplementalGroups = 4;</code>
     * @return The count of supplementalGroups.
     */
    int getSupplementalGroupsCount();
    /**
     * <pre>
     * A list of groups applied to the first process run in each container, in addition
     * to the container's primary GID, the fsGroup (if specified), and group memberships
     * defined in the container image for the uid of the container process. If unspecified,
     * no additional groups are added to any container. Note that group memberships
     * defined in the container image for the uid of the container process are still effective,
     * even if they are not included in this list.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int64 supplementalGroups = 4;</code>
     * @param index The index of the element to return.
     * @return The supplementalGroups at the given index.
     */
    long getSupplementalGroups(int index);

    /**
     * <pre>
     * A special supplemental group that applies to all containers in a pod.
     * Some volume types allow the Kubelet to change the ownership of that volume
     * to be owned by the pod:
     *
     * 1. The owning GID will be the FSGroup
     * 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
     * 3. The permission bits are OR'd with rw-rw----
     *
     * If unset, the Kubelet will not modify the ownership and permissions of any volume.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 fsGroup = 5;</code>
     * @return Whether the fsGroup field is set.
     */
    boolean hasFsGroup();
    /**
     * <pre>
     * A special supplemental group that applies to all containers in a pod.
     * Some volume types allow the Kubelet to change the ownership of that volume
     * to be owned by the pod:
     *
     * 1. The owning GID will be the FSGroup
     * 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
     * 3. The permission bits are OR'd with rw-rw----
     *
     * If unset, the Kubelet will not modify the ownership and permissions of any volume.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 fsGroup = 5;</code>
     * @return The fsGroup.
     */
    long getFsGroup();

    /**
     * <pre>
     * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
     * sysctls (by the container runtime) might fail to launch.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Sysctl> 
        getSysctlsList();
    /**
     * <pre>
     * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
     * sysctls (by the container runtime) might fail to launch.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
     */
    io.kubernetes.client.proto.V1.Sysctl getSysctls(int index);
    /**
     * <pre>
     * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
     * sysctls (by the container runtime) might fail to launch.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
     */
    int getSysctlsCount();
    /**
     * <pre>
     * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
     * sysctls (by the container runtime) might fail to launch.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.SysctlOrBuilder> 
        getSysctlsOrBuilderList();
    /**
     * <pre>
     * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
     * sysctls (by the container runtime) might fail to launch.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
     */
    io.kubernetes.client.proto.V1.SysctlOrBuilder getSysctlsOrBuilder(
        int index);

    /**
     * <pre>
     * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
     * before being exposed inside Pod. This field will only apply to
     * volume types which support fsGroup based ownership(and permissions).
     * It will have no effect on ephemeral volume types such as: secret, configmaps
     * and emptydir.
     * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string fsGroupChangePolicy = 9;</code>
     * @return Whether the fsGroupChangePolicy field is set.
     */
    boolean hasFsGroupChangePolicy();
    /**
     * <pre>
     * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
     * before being exposed inside Pod. This field will only apply to
     * volume types which support fsGroup based ownership(and permissions).
     * It will have no effect on ephemeral volume types such as: secret, configmaps
     * and emptydir.
     * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string fsGroupChangePolicy = 9;</code>
     * @return The fsGroupChangePolicy.
     */
    java.lang.String getFsGroupChangePolicy();
    /**
     * <pre>
     * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
     * before being exposed inside Pod. This field will only apply to
     * volume types which support fsGroup based ownership(and permissions).
     * It will have no effect on ephemeral volume types such as: secret, configmaps
     * and emptydir.
     * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string fsGroupChangePolicy = 9;</code>
     * @return The bytes for fsGroupChangePolicy.
     */
    com.google.protobuf.ByteString
        getFsGroupChangePolicyBytes();

    /**
     * <pre>
     * The seccomp options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
     * @return Whether the seccompProfile field is set.
     */
    boolean hasSeccompProfile();
    /**
     * <pre>
     * The seccomp options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
     * @return The seccompProfile.
     */
    io.kubernetes.client.proto.V1.SeccompProfile getSeccompProfile();
    /**
     * <pre>
     * The seccomp options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
     */
    io.kubernetes.client.proto.V1.SeccompProfileOrBuilder getSeccompProfileOrBuilder();

    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
     * @return Whether the appArmorProfile field is set.
     */
    boolean hasAppArmorProfile();
    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
     * @return The appArmorProfile.
     */
    io.kubernetes.client.proto.V1.AppArmorProfile getAppArmorProfile();
    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
     */
    io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder getAppArmorProfileOrBuilder();
  }
  /**
   * <pre>
   * PodSecurityContext holds pod-level security attributes and common container settings.
   * Some fields are also present in container.securityContext.  Field values of
   * container.securityContext take precedence over field values of PodSecurityContext.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodSecurityContext}
   */
  public static final class PodSecurityContext extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodSecurityContext)
      PodSecurityContextOrBuilder {
  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= */ "",
        PodSecurityContext.class.getName());
    }
    // Use PodSecurityContext.newBuilder() to construct.
    private PodSecurityContext(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodSecurityContext() {
      supplementalGroups_ = emptyLongList();
      sysctls_ = java.util.Collections.emptyList();
      fsGroupChangePolicy_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSecurityContext_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSecurityContext_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodSecurityContext.class, io.kubernetes.client.proto.V1.PodSecurityContext.Builder.class);
    }

    private int bitField0_;
    public static final int SELINUXOPTIONS_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.SELinuxOptions seLinuxOptions_;
    /**
     * <pre>
     * The SELinux context to be applied to all containers.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in SecurityContext.  If set in
     * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
     * takes precedence for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
     * @return Whether the seLinuxOptions field is set.
     */
    @java.lang.Override
    public boolean hasSeLinuxOptions() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The SELinux context to be applied to all containers.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in SecurityContext.  If set in
     * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
     * takes precedence for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
     * @return The seLinuxOptions.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SELinuxOptions getSeLinuxOptions() {
      return seLinuxOptions_ == null ? io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance() : seLinuxOptions_;
    }
    /**
     * <pre>
     * The SELinux context to be applied to all containers.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in SecurityContext.  If set in
     * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
     * takes precedence for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder getSeLinuxOptionsOrBuilder() {
      return seLinuxOptions_ == null ? io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance() : seLinuxOptions_;
    }

    public static final int WINDOWSOPTIONS_FIELD_NUMBER = 8;
    private io.kubernetes.client.proto.V1.WindowsSecurityContextOptions windowsOptions_;
    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options within a container's SecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
     * @return Whether the windowsOptions field is set.
     */
    @java.lang.Override
    public boolean hasWindowsOptions() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options within a container's SecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
     * @return The windowsOptions.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.WindowsSecurityContextOptions getWindowsOptions() {
      return windowsOptions_ == null ? io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance() : windowsOptions_;
    }
    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options within a container's SecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder getWindowsOptionsOrBuilder() {
      return windowsOptions_ == null ? io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance() : windowsOptions_;
    }

    public static final int RUNASUSER_FIELD_NUMBER = 2;
    private long runAsUser_ = 0L;
    /**
     * <pre>
     * The UID to run the entrypoint of the container process.
     * Defaults to user specified in image metadata if unspecified.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence
     * for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsUser = 2;</code>
     * @return Whether the runAsUser field is set.
     */
    @java.lang.Override
    public boolean hasRunAsUser() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The UID to run the entrypoint of the container process.
     * Defaults to user specified in image metadata if unspecified.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence
     * for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsUser = 2;</code>
     * @return The runAsUser.
     */
    @java.lang.Override
    public long getRunAsUser() {
      return runAsUser_;
    }

    public static final int RUNASGROUP_FIELD_NUMBER = 6;
    private long runAsGroup_ = 0L;
    /**
     * <pre>
     * The GID to run the entrypoint of the container process.
     * Uses runtime default if unset.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence
     * for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsGroup = 6;</code>
     * @return Whether the runAsGroup field is set.
     */
    @java.lang.Override
    public boolean hasRunAsGroup() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * The GID to run the entrypoint of the container process.
     * Uses runtime default if unset.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence
     * for that container.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsGroup = 6;</code>
     * @return The runAsGroup.
     */
    @java.lang.Override
    public long getRunAsGroup() {
      return runAsGroup_;
    }

    public static final int RUNASNONROOT_FIELD_NUMBER = 3;
    private boolean runAsNonRoot_ = false;
    /**
     * <pre>
     * Indicates that the container must run as a non-root user.
     * If true, the Kubelet will validate the image at runtime to ensure that it
     * does not run as UID 0 (root) and fail to start the container if it does.
     * If unset or false, no such validation will be performed.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional bool runAsNonRoot = 3;</code>
     * @return Whether the runAsNonRoot field is set.
     */
    @java.lang.Override
    public boolean hasRunAsNonRoot() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * Indicates that the container must run as a non-root user.
     * If true, the Kubelet will validate the image at runtime to ensure that it
     * does not run as UID 0 (root) and fail to start the container if it does.
     * If unset or false, no such validation will be performed.
     * May also be set in SecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional bool runAsNonRoot = 3;</code>
     * @return The runAsNonRoot.
     */
    @java.lang.Override
    public boolean getRunAsNonRoot() {
      return runAsNonRoot_;
    }

    public static final int SUPPLEMENTALGROUPS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList supplementalGroups_ =
        emptyLongList();
    /**
     * <pre>
     * A list of groups applied to the first process run in each container, in addition
     * to the container's primary GID, the fsGroup (if specified), and group memberships
     * defined in the container image for the uid of the container process. If unspecified,
     * no additional groups are added to any container. Note that group memberships
     * defined in the container image for the uid of the container process are still effective,
     * even if they are not included in this list.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int64 supplementalGroups = 4;</code>
     * @return A list containing the supplementalGroups.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getSupplementalGroupsList() {
      return supplementalGroups_;
    }
    /**
     * <pre>
     * A list of groups applied to the first process run in each container, in addition
     * to the container's primary GID, the fsGroup (if specified), and group memberships
     * defined in the container image for the uid of the container process. If unspecified,
     * no additional groups are added to any container. Note that group memberships
     * defined in the container image for the uid of the container process are still effective,
     * even if they are not included in this list.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int64 supplementalGroups = 4;</code>
     * @return The count of supplementalGroups.
     */
    public int getSupplementalGroupsCount() {
      return supplementalGroups_.size();
    }
    /**
     * <pre>
     * A list of groups applied to the first process run in each container, in addition
     * to the container's primary GID, the fsGroup (if specified), and group memberships
     * defined in the container image for the uid of the container process. If unspecified,
     * no additional groups are added to any container. Note that group memberships
     * defined in the container image for the uid of the container process are still effective,
     * even if they are not included in this list.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated int64 supplementalGroups = 4;</code>
     * @param index The index of the element to return.
     * @return The supplementalGroups at the given index.
     */
    public long getSupplementalGroups(int index) {
      return supplementalGroups_.getLong(index);
    }

    public static final int FSGROUP_FIELD_NUMBER = 5;
    private long fsGroup_ = 0L;
    /**
     * <pre>
     * A special supplemental group that applies to all containers in a pod.
     * Some volume types allow the Kubelet to change the ownership of that volume
     * to be owned by the pod:
     *
     * 1. The owning GID will be the FSGroup
     * 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
     * 3. The permission bits are OR'd with rw-rw----
     *
     * If unset, the Kubelet will not modify the ownership and permissions of any volume.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 fsGroup = 5;</code>
     * @return Whether the fsGroup field is set.
     */
    @java.lang.Override
    public boolean hasFsGroup() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * A special supplemental group that applies to all containers in a pod.
     * Some volume types allow the Kubelet to change the ownership of that volume
     * to be owned by the pod:
     *
     * 1. The owning GID will be the FSGroup
     * 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
     * 3. The permission bits are OR'd with rw-rw----
     *
     * If unset, the Kubelet will not modify the ownership and permissions of any volume.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 fsGroup = 5;</code>
     * @return The fsGroup.
     */
    @java.lang.Override
    public long getFsGroup() {
      return fsGroup_;
    }

    public static final int SYSCTLS_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.Sysctl> sysctls_;
    /**
     * <pre>
     * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
     * sysctls (by the container runtime) might fail to launch.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Sysctl> getSysctlsList() {
      return sysctls_;
    }
    /**
     * <pre>
     * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
     * sysctls (by the container runtime) might fail to launch.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.SysctlOrBuilder> 
        getSysctlsOrBuilderList() {
      return sysctls_;
    }
    /**
     * <pre>
     * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
     * sysctls (by the container runtime) might fail to launch.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
     */
    @java.lang.Override
    public int getSysctlsCount() {
      return sysctls_.size();
    }
    /**
     * <pre>
     * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
     * sysctls (by the container runtime) might fail to launch.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Sysctl getSysctls(int index) {
      return sysctls_.get(index);
    }
    /**
     * <pre>
     * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
     * sysctls (by the container runtime) might fail to launch.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SysctlOrBuilder getSysctlsOrBuilder(
        int index) {
      return sysctls_.get(index);
    }

    public static final int FSGROUPCHANGEPOLICY_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsGroupChangePolicy_ = "";
    /**
     * <pre>
     * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
     * before being exposed inside Pod. This field will only apply to
     * volume types which support fsGroup based ownership(and permissions).
     * It will have no effect on ephemeral volume types such as: secret, configmaps
     * and emptydir.
     * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string fsGroupChangePolicy = 9;</code>
     * @return Whether the fsGroupChangePolicy field is set.
     */
    @java.lang.Override
    public boolean hasFsGroupChangePolicy() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
     * before being exposed inside Pod. This field will only apply to
     * volume types which support fsGroup based ownership(and permissions).
     * It will have no effect on ephemeral volume types such as: secret, configmaps
     * and emptydir.
     * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string fsGroupChangePolicy = 9;</code>
     * @return The fsGroupChangePolicy.
     */
    @java.lang.Override
    public java.lang.String getFsGroupChangePolicy() {
      java.lang.Object ref = fsGroupChangePolicy_;
      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()) {
          fsGroupChangePolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
     * before being exposed inside Pod. This field will only apply to
     * volume types which support fsGroup based ownership(and permissions).
     * It will have no effect on ephemeral volume types such as: secret, configmaps
     * and emptydir.
     * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string fsGroupChangePolicy = 9;</code>
     * @return The bytes for fsGroupChangePolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsGroupChangePolicyBytes() {
      java.lang.Object ref = fsGroupChangePolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsGroupChangePolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECCOMPPROFILE_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.V1.SeccompProfile seccompProfile_;
    /**
     * <pre>
     * The seccomp options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
     * @return Whether the seccompProfile field is set.
     */
    @java.lang.Override
    public boolean hasSeccompProfile() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * The seccomp options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
     * @return The seccompProfile.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SeccompProfile getSeccompProfile() {
      return seccompProfile_ == null ? io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance() : seccompProfile_;
    }
    /**
     * <pre>
     * The seccomp options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SeccompProfileOrBuilder getSeccompProfileOrBuilder() {
      return seccompProfile_ == null ? io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance() : seccompProfile_;
    }

    public static final int APPARMORPROFILE_FIELD_NUMBER = 11;
    private io.kubernetes.client.proto.V1.AppArmorProfile appArmorProfile_;
    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
     * @return Whether the appArmorProfile field is set.
     */
    @java.lang.Override
    public boolean hasAppArmorProfile() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
     * @return The appArmorProfile.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AppArmorProfile getAppArmorProfile() {
      return appArmorProfile_ == null ? io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance() : appArmorProfile_;
    }
    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by the containers in this pod.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder getAppArmorProfileOrBuilder() {
      return appArmorProfile_ == null ? io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance() : appArmorProfile_;
    }

    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, getSeLinuxOptions());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt64(2, runAsUser_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(3, runAsNonRoot_);
      }
      for (int i = 0; i < supplementalGroups_.size(); i++) {
        output.writeInt64(4, supplementalGroups_.getLong(i));
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeInt64(5, fsGroup_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt64(6, runAsGroup_);
      }
      for (int i = 0; i < sysctls_.size(); i++) {
        output.writeMessage(7, sysctls_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(8, getWindowsOptions());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, fsGroupChangePolicy_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(10, getSeccompProfile());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeMessage(11, getAppArmorProfile());
      }
      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, getSeLinuxOptions());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, runAsUser_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, runAsNonRoot_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < supplementalGroups_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt64SizeNoTag(supplementalGroups_.getLong(i));
        }
        size += dataSize;
        size += 1 * getSupplementalGroupsList().size();
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, fsGroup_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, runAsGroup_);
      }
      for (int i = 0; i < sysctls_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, sysctls_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getWindowsOptions());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, fsGroupChangePolicy_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getSeccompProfile());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getAppArmorProfile());
      }
      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.V1.PodSecurityContext)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodSecurityContext other = (io.kubernetes.client.proto.V1.PodSecurityContext) obj;

      if (hasSeLinuxOptions() != other.hasSeLinuxOptions()) return false;
      if (hasSeLinuxOptions()) {
        if (!getSeLinuxOptions()
            .equals(other.getSeLinuxOptions())) return false;
      }
      if (hasWindowsOptions() != other.hasWindowsOptions()) return false;
      if (hasWindowsOptions()) {
        if (!getWindowsOptions()
            .equals(other.getWindowsOptions())) return false;
      }
      if (hasRunAsUser() != other.hasRunAsUser()) return false;
      if (hasRunAsUser()) {
        if (getRunAsUser()
            != other.getRunAsUser()) return false;
      }
      if (hasRunAsGroup() != other.hasRunAsGroup()) return false;
      if (hasRunAsGroup()) {
        if (getRunAsGroup()
            != other.getRunAsGroup()) return false;
      }
      if (hasRunAsNonRoot() != other.hasRunAsNonRoot()) return false;
      if (hasRunAsNonRoot()) {
        if (getRunAsNonRoot()
            != other.getRunAsNonRoot()) return false;
      }
      if (!getSupplementalGroupsList()
          .equals(other.getSupplementalGroupsList())) return false;
      if (hasFsGroup() != other.hasFsGroup()) return false;
      if (hasFsGroup()) {
        if (getFsGroup()
            != other.getFsGroup()) return false;
      }
      if (!getSysctlsList()
          .equals(other.getSysctlsList())) return false;
      if (hasFsGroupChangePolicy() != other.hasFsGroupChangePolicy()) return false;
      if (hasFsGroupChangePolicy()) {
        if (!getFsGroupChangePolicy()
            .equals(other.getFsGroupChangePolicy())) return false;
      }
      if (hasSeccompProfile() != other.hasSeccompProfile()) return false;
      if (hasSeccompProfile()) {
        if (!getSeccompProfile()
            .equals(other.getSeccompProfile())) return false;
      }
      if (hasAppArmorProfile() != other.hasAppArmorProfile()) return false;
      if (hasAppArmorProfile()) {
        if (!getAppArmorProfile()
            .equals(other.getAppArmorProfile())) 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 (hasSeLinuxOptions()) {
        hash = (37 * hash) + SELINUXOPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getSeLinuxOptions().hashCode();
      }
      if (hasWindowsOptions()) {
        hash = (37 * hash) + WINDOWSOPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getWindowsOptions().hashCode();
      }
      if (hasRunAsUser()) {
        hash = (37 * hash) + RUNASUSER_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getRunAsUser());
      }
      if (hasRunAsGroup()) {
        hash = (37 * hash) + RUNASGROUP_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getRunAsGroup());
      }
      if (hasRunAsNonRoot()) {
        hash = (37 * hash) + RUNASNONROOT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getRunAsNonRoot());
      }
      if (getSupplementalGroupsCount() > 0) {
        hash = (37 * hash) + SUPPLEMENTALGROUPS_FIELD_NUMBER;
        hash = (53 * hash) + getSupplementalGroupsList().hashCode();
      }
      if (hasFsGroup()) {
        hash = (37 * hash) + FSGROUP_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getFsGroup());
      }
      if (getSysctlsCount() > 0) {
        hash = (37 * hash) + SYSCTLS_FIELD_NUMBER;
        hash = (53 * hash) + getSysctlsList().hashCode();
      }
      if (hasFsGroupChangePolicy()) {
        hash = (37 * hash) + FSGROUPCHANGEPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getFsGroupChangePolicy().hashCode();
      }
      if (hasSeccompProfile()) {
        hash = (37 * hash) + SECCOMPPROFILE_FIELD_NUMBER;
        hash = (53 * hash) + getSeccompProfile().hashCode();
      }
      if (hasAppArmorProfile()) {
        hash = (37 * hash) + APPARMORPROFILE_FIELD_NUMBER;
        hash = (53 * hash) + getAppArmorProfile().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodSecurityContext parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSecurityContext 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.V1.PodSecurityContext parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSecurityContext 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.V1.PodSecurityContext parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSecurityContext parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodSecurityContext parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodSecurityContext 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.V1.PodSecurityContext parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodSecurityContext 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.V1.PodSecurityContext parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodSecurityContext 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.V1.PodSecurityContext 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>
     * PodSecurityContext holds pod-level security attributes and common container settings.
     * Some fields are also present in container.securityContext.  Field values of
     * container.securityContext take precedence over field values of PodSecurityContext.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodSecurityContext}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodSecurityContext)
        io.kubernetes.client.proto.V1.PodSecurityContextOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSecurityContext_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSecurityContext_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodSecurityContext.class, io.kubernetes.client.proto.V1.PodSecurityContext.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodSecurityContext.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSeLinuxOptionsFieldBuilder();
          getWindowsOptionsFieldBuilder();
          getSysctlsFieldBuilder();
          getSeccompProfileFieldBuilder();
          getAppArmorProfileFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        seLinuxOptions_ = null;
        if (seLinuxOptionsBuilder_ != null) {
          seLinuxOptionsBuilder_.dispose();
          seLinuxOptionsBuilder_ = null;
        }
        windowsOptions_ = null;
        if (windowsOptionsBuilder_ != null) {
          windowsOptionsBuilder_.dispose();
          windowsOptionsBuilder_ = null;
        }
        runAsUser_ = 0L;
        runAsGroup_ = 0L;
        runAsNonRoot_ = false;
        supplementalGroups_ = emptyLongList();
        fsGroup_ = 0L;
        if (sysctlsBuilder_ == null) {
          sysctls_ = java.util.Collections.emptyList();
        } else {
          sysctls_ = null;
          sysctlsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        fsGroupChangePolicy_ = "";
        seccompProfile_ = null;
        if (seccompProfileBuilder_ != null) {
          seccompProfileBuilder_.dispose();
          seccompProfileBuilder_ = null;
        }
        appArmorProfile_ = null;
        if (appArmorProfileBuilder_ != null) {
          appArmorProfileBuilder_.dispose();
          appArmorProfileBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSecurityContext_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSecurityContext getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodSecurityContext.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSecurityContext build() {
        io.kubernetes.client.proto.V1.PodSecurityContext result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSecurityContext buildPartial() {
        io.kubernetes.client.proto.V1.PodSecurityContext result = new io.kubernetes.client.proto.V1.PodSecurityContext(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PodSecurityContext result) {
        if (sysctlsBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            sysctls_ = java.util.Collections.unmodifiableList(sysctls_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.sysctls_ = sysctls_;
        } else {
          result.sysctls_ = sysctlsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodSecurityContext result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.seLinuxOptions_ = seLinuxOptionsBuilder_ == null
              ? seLinuxOptions_
              : seLinuxOptionsBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.windowsOptions_ = windowsOptionsBuilder_ == null
              ? windowsOptions_
              : windowsOptionsBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.runAsUser_ = runAsUser_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.runAsGroup_ = runAsGroup_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.runAsNonRoot_ = runAsNonRoot_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          supplementalGroups_.makeImmutable();
          result.supplementalGroups_ = supplementalGroups_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.fsGroup_ = fsGroup_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.fsGroupChangePolicy_ = fsGroupChangePolicy_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.seccompProfile_ = seccompProfileBuilder_ == null
              ? seccompProfile_
              : seccompProfileBuilder_.build();
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.appArmorProfile_ = appArmorProfileBuilder_ == null
              ? appArmorProfile_
              : appArmorProfileBuilder_.build();
          to_bitField0_ |= 0x00000100;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodSecurityContext) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodSecurityContext)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodSecurityContext other) {
        if (other == io.kubernetes.client.proto.V1.PodSecurityContext.getDefaultInstance()) return this;
        if (other.hasSeLinuxOptions()) {
          mergeSeLinuxOptions(other.getSeLinuxOptions());
        }
        if (other.hasWindowsOptions()) {
          mergeWindowsOptions(other.getWindowsOptions());
        }
        if (other.hasRunAsUser()) {
          setRunAsUser(other.getRunAsUser());
        }
        if (other.hasRunAsGroup()) {
          setRunAsGroup(other.getRunAsGroup());
        }
        if (other.hasRunAsNonRoot()) {
          setRunAsNonRoot(other.getRunAsNonRoot());
        }
        if (!other.supplementalGroups_.isEmpty()) {
          if (supplementalGroups_.isEmpty()) {
            supplementalGroups_ = other.supplementalGroups_;
            supplementalGroups_.makeImmutable();
            bitField0_ |= 0x00000020;
          } else {
            ensureSupplementalGroupsIsMutable();
            supplementalGroups_.addAll(other.supplementalGroups_);
          }
          onChanged();
        }
        if (other.hasFsGroup()) {
          setFsGroup(other.getFsGroup());
        }
        if (sysctlsBuilder_ == null) {
          if (!other.sysctls_.isEmpty()) {
            if (sysctls_.isEmpty()) {
              sysctls_ = other.sysctls_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureSysctlsIsMutable();
              sysctls_.addAll(other.sysctls_);
            }
            onChanged();
          }
        } else {
          if (!other.sysctls_.isEmpty()) {
            if (sysctlsBuilder_.isEmpty()) {
              sysctlsBuilder_.dispose();
              sysctlsBuilder_ = null;
              sysctls_ = other.sysctls_;
              bitField0_ = (bitField0_ & ~0x00000080);
              sysctlsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSysctlsFieldBuilder() : null;
            } else {
              sysctlsBuilder_.addAllMessages(other.sysctls_);
            }
          }
        }
        if (other.hasFsGroupChangePolicy()) {
          fsGroupChangePolicy_ = other.fsGroupChangePolicy_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        if (other.hasSeccompProfile()) {
          mergeSeccompProfile(other.getSeccompProfile());
        }
        if (other.hasAppArmorProfile()) {
          mergeAppArmorProfile(other.getAppArmorProfile());
        }
        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(
                    getSeLinuxOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                runAsUser_ = input.readInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 16
              case 24: {
                runAsNonRoot_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 24
              case 32: {
                long v = input.readInt64();
                ensureSupplementalGroupsIsMutable();
                supplementalGroups_.addLong(v);
                break;
              } // case 32
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureSupplementalGroupsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  supplementalGroups_.addLong(input.readInt64());
                }
                input.popLimit(limit);
                break;
              } // case 34
              case 40: {
                fsGroup_ = input.readInt64();
                bitField0_ |= 0x00000040;
                break;
              } // case 40
              case 48: {
                runAsGroup_ = input.readInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 48
              case 58: {
                io.kubernetes.client.proto.V1.Sysctl m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Sysctl.parser(),
                        extensionRegistry);
                if (sysctlsBuilder_ == null) {
                  ensureSysctlsIsMutable();
                  sysctls_.add(m);
                } else {
                  sysctlsBuilder_.addMessage(m);
                }
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getWindowsOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 66
              case 74: {
                fsGroupChangePolicy_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getSeccompProfileFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getAppArmorProfileFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                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 io.kubernetes.client.proto.V1.SELinuxOptions seLinuxOptions_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SELinuxOptions, io.kubernetes.client.proto.V1.SELinuxOptions.Builder, io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder> seLinuxOptionsBuilder_;
      /**
       * <pre>
       * The SELinux context to be applied to all containers.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in SecurityContext.  If set in
       * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
       * takes precedence for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
       * @return Whether the seLinuxOptions field is set.
       */
      public boolean hasSeLinuxOptions() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The SELinux context to be applied to all containers.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in SecurityContext.  If set in
       * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
       * takes precedence for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
       * @return The seLinuxOptions.
       */
      public io.kubernetes.client.proto.V1.SELinuxOptions getSeLinuxOptions() {
        if (seLinuxOptionsBuilder_ == null) {
          return seLinuxOptions_ == null ? io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance() : seLinuxOptions_;
        } else {
          return seLinuxOptionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The SELinux context to be applied to all containers.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in SecurityContext.  If set in
       * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
       * takes precedence for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
       */
      public Builder setSeLinuxOptions(io.kubernetes.client.proto.V1.SELinuxOptions value) {
        if (seLinuxOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          seLinuxOptions_ = value;
        } else {
          seLinuxOptionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The SELinux context to be applied to all containers.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in SecurityContext.  If set in
       * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
       * takes precedence for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
       */
      public Builder setSeLinuxOptions(
          io.kubernetes.client.proto.V1.SELinuxOptions.Builder builderForValue) {
        if (seLinuxOptionsBuilder_ == null) {
          seLinuxOptions_ = builderForValue.build();
        } else {
          seLinuxOptionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The SELinux context to be applied to all containers.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in SecurityContext.  If set in
       * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
       * takes precedence for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
       */
      public Builder mergeSeLinuxOptions(io.kubernetes.client.proto.V1.SELinuxOptions value) {
        if (seLinuxOptionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            seLinuxOptions_ != null &&
            seLinuxOptions_ != io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance()) {
            getSeLinuxOptionsBuilder().mergeFrom(value);
          } else {
            seLinuxOptions_ = value;
          }
        } else {
          seLinuxOptionsBuilder_.mergeFrom(value);
        }
        if (seLinuxOptions_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The SELinux context to be applied to all containers.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in SecurityContext.  If set in
       * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
       * takes precedence for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
       */
      public Builder clearSeLinuxOptions() {
        bitField0_ = (bitField0_ & ~0x00000001);
        seLinuxOptions_ = null;
        if (seLinuxOptionsBuilder_ != null) {
          seLinuxOptionsBuilder_.dispose();
          seLinuxOptionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The SELinux context to be applied to all containers.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in SecurityContext.  If set in
       * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
       * takes precedence for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.SELinuxOptions.Builder getSeLinuxOptionsBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSeLinuxOptionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The SELinux context to be applied to all containers.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in SecurityContext.  If set in
       * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
       * takes precedence for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder getSeLinuxOptionsOrBuilder() {
        if (seLinuxOptionsBuilder_ != null) {
          return seLinuxOptionsBuilder_.getMessageOrBuilder();
        } else {
          return seLinuxOptions_ == null ?
              io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance() : seLinuxOptions_;
        }
      }
      /**
       * <pre>
       * The SELinux context to be applied to all containers.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in SecurityContext.  If set in
       * both SecurityContext and PodSecurityContext, the value specified in SecurityContext
       * takes precedence for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SELinuxOptions, io.kubernetes.client.proto.V1.SELinuxOptions.Builder, io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder> 
          getSeLinuxOptionsFieldBuilder() {
        if (seLinuxOptionsBuilder_ == null) {
          seLinuxOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SELinuxOptions, io.kubernetes.client.proto.V1.SELinuxOptions.Builder, io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder>(
                  getSeLinuxOptions(),
                  getParentForChildren(),
                  isClean());
          seLinuxOptions_ = null;
        }
        return seLinuxOptionsBuilder_;
      }

      private io.kubernetes.client.proto.V1.WindowsSecurityContextOptions windowsOptions_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.WindowsSecurityContextOptions, io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder, io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder> windowsOptionsBuilder_;
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options within a container's SecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
       * @return Whether the windowsOptions field is set.
       */
      public boolean hasWindowsOptions() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options within a container's SecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
       * @return The windowsOptions.
       */
      public io.kubernetes.client.proto.V1.WindowsSecurityContextOptions getWindowsOptions() {
        if (windowsOptionsBuilder_ == null) {
          return windowsOptions_ == null ? io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance() : windowsOptions_;
        } else {
          return windowsOptionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options within a container's SecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
       */
      public Builder setWindowsOptions(io.kubernetes.client.proto.V1.WindowsSecurityContextOptions value) {
        if (windowsOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          windowsOptions_ = value;
        } else {
          windowsOptionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options within a container's SecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
       */
      public Builder setWindowsOptions(
          io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder builderForValue) {
        if (windowsOptionsBuilder_ == null) {
          windowsOptions_ = builderForValue.build();
        } else {
          windowsOptionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options within a container's SecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
       */
      public Builder mergeWindowsOptions(io.kubernetes.client.proto.V1.WindowsSecurityContextOptions value) {
        if (windowsOptionsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            windowsOptions_ != null &&
            windowsOptions_ != io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance()) {
            getWindowsOptionsBuilder().mergeFrom(value);
          } else {
            windowsOptions_ = value;
          }
        } else {
          windowsOptionsBuilder_.mergeFrom(value);
        }
        if (windowsOptions_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options within a container's SecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
       */
      public Builder clearWindowsOptions() {
        bitField0_ = (bitField0_ & ~0x00000002);
        windowsOptions_ = null;
        if (windowsOptionsBuilder_ != null) {
          windowsOptionsBuilder_.dispose();
          windowsOptionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options within a container's SecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
       */
      public io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder getWindowsOptionsBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getWindowsOptionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options within a container's SecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
       */
      public io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder getWindowsOptionsOrBuilder() {
        if (windowsOptionsBuilder_ != null) {
          return windowsOptionsBuilder_.getMessageOrBuilder();
        } else {
          return windowsOptions_ == null ?
              io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance() : windowsOptions_;
        }
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options within a container's SecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.WindowsSecurityContextOptions, io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder, io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder> 
          getWindowsOptionsFieldBuilder() {
        if (windowsOptionsBuilder_ == null) {
          windowsOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.WindowsSecurityContextOptions, io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder, io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder>(
                  getWindowsOptions(),
                  getParentForChildren(),
                  isClean());
          windowsOptions_ = null;
        }
        return windowsOptionsBuilder_;
      }

      private long runAsUser_ ;
      /**
       * <pre>
       * The UID to run the entrypoint of the container process.
       * Defaults to user specified in image metadata if unspecified.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence
       * for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsUser = 2;</code>
       * @return Whether the runAsUser field is set.
       */
      @java.lang.Override
      public boolean hasRunAsUser() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The UID to run the entrypoint of the container process.
       * Defaults to user specified in image metadata if unspecified.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence
       * for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsUser = 2;</code>
       * @return The runAsUser.
       */
      @java.lang.Override
      public long getRunAsUser() {
        return runAsUser_;
      }
      /**
       * <pre>
       * The UID to run the entrypoint of the container process.
       * Defaults to user specified in image metadata if unspecified.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence
       * for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsUser = 2;</code>
       * @param value The runAsUser to set.
       * @return This builder for chaining.
       */
      public Builder setRunAsUser(long value) {

        runAsUser_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The UID to run the entrypoint of the container process.
       * Defaults to user specified in image metadata if unspecified.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence
       * for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsUser = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRunAsUser() {
        bitField0_ = (bitField0_ & ~0x00000004);
        runAsUser_ = 0L;
        onChanged();
        return this;
      }

      private long runAsGroup_ ;
      /**
       * <pre>
       * The GID to run the entrypoint of the container process.
       * Uses runtime default if unset.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence
       * for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsGroup = 6;</code>
       * @return Whether the runAsGroup field is set.
       */
      @java.lang.Override
      public boolean hasRunAsGroup() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The GID to run the entrypoint of the container process.
       * Uses runtime default if unset.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence
       * for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsGroup = 6;</code>
       * @return The runAsGroup.
       */
      @java.lang.Override
      public long getRunAsGroup() {
        return runAsGroup_;
      }
      /**
       * <pre>
       * The GID to run the entrypoint of the container process.
       * Uses runtime default if unset.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence
       * for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsGroup = 6;</code>
       * @param value The runAsGroup to set.
       * @return This builder for chaining.
       */
      public Builder setRunAsGroup(long value) {

        runAsGroup_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The GID to run the entrypoint of the container process.
       * Uses runtime default if unset.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence
       * for that container.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsGroup = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearRunAsGroup() {
        bitField0_ = (bitField0_ & ~0x00000008);
        runAsGroup_ = 0L;
        onChanged();
        return this;
      }

      private boolean runAsNonRoot_ ;
      /**
       * <pre>
       * Indicates that the container must run as a non-root user.
       * If true, the Kubelet will validate the image at runtime to ensure that it
       * does not run as UID 0 (root) and fail to start the container if it does.
       * If unset or false, no such validation will be performed.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional bool runAsNonRoot = 3;</code>
       * @return Whether the runAsNonRoot field is set.
       */
      @java.lang.Override
      public boolean hasRunAsNonRoot() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Indicates that the container must run as a non-root user.
       * If true, the Kubelet will validate the image at runtime to ensure that it
       * does not run as UID 0 (root) and fail to start the container if it does.
       * If unset or false, no such validation will be performed.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional bool runAsNonRoot = 3;</code>
       * @return The runAsNonRoot.
       */
      @java.lang.Override
      public boolean getRunAsNonRoot() {
        return runAsNonRoot_;
      }
      /**
       * <pre>
       * Indicates that the container must run as a non-root user.
       * If true, the Kubelet will validate the image at runtime to ensure that it
       * does not run as UID 0 (root) and fail to start the container if it does.
       * If unset or false, no such validation will be performed.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional bool runAsNonRoot = 3;</code>
       * @param value The runAsNonRoot to set.
       * @return This builder for chaining.
       */
      public Builder setRunAsNonRoot(boolean value) {

        runAsNonRoot_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Indicates that the container must run as a non-root user.
       * If true, the Kubelet will validate the image at runtime to ensure that it
       * does not run as UID 0 (root) and fail to start the container if it does.
       * If unset or false, no such validation will be performed.
       * May also be set in SecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional bool runAsNonRoot = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRunAsNonRoot() {
        bitField0_ = (bitField0_ & ~0x00000010);
        runAsNonRoot_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList supplementalGroups_ = emptyLongList();
      private void ensureSupplementalGroupsIsMutable() {
        if (!supplementalGroups_.isModifiable()) {
          supplementalGroups_ = makeMutableCopy(supplementalGroups_);
        }
        bitField0_ |= 0x00000020;
      }
      /**
       * <pre>
       * A list of groups applied to the first process run in each container, in addition
       * to the container's primary GID, the fsGroup (if specified), and group memberships
       * defined in the container image for the uid of the container process. If unspecified,
       * no additional groups are added to any container. Note that group memberships
       * defined in the container image for the uid of the container process are still effective,
       * even if they are not included in this list.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int64 supplementalGroups = 4;</code>
       * @return A list containing the supplementalGroups.
       */
      public java.util.List<java.lang.Long>
          getSupplementalGroupsList() {
        supplementalGroups_.makeImmutable();
        return supplementalGroups_;
      }
      /**
       * <pre>
       * A list of groups applied to the first process run in each container, in addition
       * to the container's primary GID, the fsGroup (if specified), and group memberships
       * defined in the container image for the uid of the container process. If unspecified,
       * no additional groups are added to any container. Note that group memberships
       * defined in the container image for the uid of the container process are still effective,
       * even if they are not included in this list.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int64 supplementalGroups = 4;</code>
       * @return The count of supplementalGroups.
       */
      public int getSupplementalGroupsCount() {
        return supplementalGroups_.size();
      }
      /**
       * <pre>
       * A list of groups applied to the first process run in each container, in addition
       * to the container's primary GID, the fsGroup (if specified), and group memberships
       * defined in the container image for the uid of the container process. If unspecified,
       * no additional groups are added to any container. Note that group memberships
       * defined in the container image for the uid of the container process are still effective,
       * even if they are not included in this list.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int64 supplementalGroups = 4;</code>
       * @param index The index of the element to return.
       * @return The supplementalGroups at the given index.
       */
      public long getSupplementalGroups(int index) {
        return supplementalGroups_.getLong(index);
      }
      /**
       * <pre>
       * A list of groups applied to the first process run in each container, in addition
       * to the container's primary GID, the fsGroup (if specified), and group memberships
       * defined in the container image for the uid of the container process. If unspecified,
       * no additional groups are added to any container. Note that group memberships
       * defined in the container image for the uid of the container process are still effective,
       * even if they are not included in this list.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int64 supplementalGroups = 4;</code>
       * @param index The index to set the value at.
       * @param value The supplementalGroups to set.
       * @return This builder for chaining.
       */
      public Builder setSupplementalGroups(
          int index, long value) {

        ensureSupplementalGroupsIsMutable();
        supplementalGroups_.setLong(index, value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of groups applied to the first process run in each container, in addition
       * to the container's primary GID, the fsGroup (if specified), and group memberships
       * defined in the container image for the uid of the container process. If unspecified,
       * no additional groups are added to any container. Note that group memberships
       * defined in the container image for the uid of the container process are still effective,
       * even if they are not included in this list.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int64 supplementalGroups = 4;</code>
       * @param value The supplementalGroups to add.
       * @return This builder for chaining.
       */
      public Builder addSupplementalGroups(long value) {

        ensureSupplementalGroupsIsMutable();
        supplementalGroups_.addLong(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of groups applied to the first process run in each container, in addition
       * to the container's primary GID, the fsGroup (if specified), and group memberships
       * defined in the container image for the uid of the container process. If unspecified,
       * no additional groups are added to any container. Note that group memberships
       * defined in the container image for the uid of the container process are still effective,
       * even if they are not included in this list.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int64 supplementalGroups = 4;</code>
       * @param values The supplementalGroups to add.
       * @return This builder for chaining.
       */
      public Builder addAllSupplementalGroups(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureSupplementalGroupsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, supplementalGroups_);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of groups applied to the first process run in each container, in addition
       * to the container's primary GID, the fsGroup (if specified), and group memberships
       * defined in the container image for the uid of the container process. If unspecified,
       * no additional groups are added to any container. Note that group memberships
       * defined in the container image for the uid of the container process are still effective,
       * even if they are not included in this list.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated int64 supplementalGroups = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSupplementalGroups() {
        supplementalGroups_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }

      private long fsGroup_ ;
      /**
       * <pre>
       * A special supplemental group that applies to all containers in a pod.
       * Some volume types allow the Kubelet to change the ownership of that volume
       * to be owned by the pod:
       *
       * 1. The owning GID will be the FSGroup
       * 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
       * 3. The permission bits are OR'd with rw-rw----
       *
       * If unset, the Kubelet will not modify the ownership and permissions of any volume.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 fsGroup = 5;</code>
       * @return Whether the fsGroup field is set.
       */
      @java.lang.Override
      public boolean hasFsGroup() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * A special supplemental group that applies to all containers in a pod.
       * Some volume types allow the Kubelet to change the ownership of that volume
       * to be owned by the pod:
       *
       * 1. The owning GID will be the FSGroup
       * 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
       * 3. The permission bits are OR'd with rw-rw----
       *
       * If unset, the Kubelet will not modify the ownership and permissions of any volume.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 fsGroup = 5;</code>
       * @return The fsGroup.
       */
      @java.lang.Override
      public long getFsGroup() {
        return fsGroup_;
      }
      /**
       * <pre>
       * A special supplemental group that applies to all containers in a pod.
       * Some volume types allow the Kubelet to change the ownership of that volume
       * to be owned by the pod:
       *
       * 1. The owning GID will be the FSGroup
       * 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
       * 3. The permission bits are OR'd with rw-rw----
       *
       * If unset, the Kubelet will not modify the ownership and permissions of any volume.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 fsGroup = 5;</code>
       * @param value The fsGroup to set.
       * @return This builder for chaining.
       */
      public Builder setFsGroup(long value) {

        fsGroup_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A special supplemental group that applies to all containers in a pod.
       * Some volume types allow the Kubelet to change the ownership of that volume
       * to be owned by the pod:
       *
       * 1. The owning GID will be the FSGroup
       * 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
       * 3. The permission bits are OR'd with rw-rw----
       *
       * If unset, the Kubelet will not modify the ownership and permissions of any volume.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 fsGroup = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsGroup() {
        bitField0_ = (bitField0_ & ~0x00000040);
        fsGroup_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.Sysctl> sysctls_ =
        java.util.Collections.emptyList();
      private void ensureSysctlsIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          sysctls_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Sysctl>(sysctls_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Sysctl, io.kubernetes.client.proto.V1.Sysctl.Builder, io.kubernetes.client.proto.V1.SysctlOrBuilder> sysctlsBuilder_;

      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Sysctl> getSysctlsList() {
        if (sysctlsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sysctls_);
        } else {
          return sysctlsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public int getSysctlsCount() {
        if (sysctlsBuilder_ == null) {
          return sysctls_.size();
        } else {
          return sysctlsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public io.kubernetes.client.proto.V1.Sysctl getSysctls(int index) {
        if (sysctlsBuilder_ == null) {
          return sysctls_.get(index);
        } else {
          return sysctlsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public Builder setSysctls(
          int index, io.kubernetes.client.proto.V1.Sysctl value) {
        if (sysctlsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSysctlsIsMutable();
          sysctls_.set(index, value);
          onChanged();
        } else {
          sysctlsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public Builder setSysctls(
          int index, io.kubernetes.client.proto.V1.Sysctl.Builder builderForValue) {
        if (sysctlsBuilder_ == null) {
          ensureSysctlsIsMutable();
          sysctls_.set(index, builderForValue.build());
          onChanged();
        } else {
          sysctlsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public Builder addSysctls(io.kubernetes.client.proto.V1.Sysctl value) {
        if (sysctlsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSysctlsIsMutable();
          sysctls_.add(value);
          onChanged();
        } else {
          sysctlsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public Builder addSysctls(
          int index, io.kubernetes.client.proto.V1.Sysctl value) {
        if (sysctlsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSysctlsIsMutable();
          sysctls_.add(index, value);
          onChanged();
        } else {
          sysctlsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public Builder addSysctls(
          io.kubernetes.client.proto.V1.Sysctl.Builder builderForValue) {
        if (sysctlsBuilder_ == null) {
          ensureSysctlsIsMutable();
          sysctls_.add(builderForValue.build());
          onChanged();
        } else {
          sysctlsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public Builder addSysctls(
          int index, io.kubernetes.client.proto.V1.Sysctl.Builder builderForValue) {
        if (sysctlsBuilder_ == null) {
          ensureSysctlsIsMutable();
          sysctls_.add(index, builderForValue.build());
          onChanged();
        } else {
          sysctlsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public Builder addAllSysctls(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Sysctl> values) {
        if (sysctlsBuilder_ == null) {
          ensureSysctlsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sysctls_);
          onChanged();
        } else {
          sysctlsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public Builder clearSysctls() {
        if (sysctlsBuilder_ == null) {
          sysctls_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          sysctlsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public Builder removeSysctls(int index) {
        if (sysctlsBuilder_ == null) {
          ensureSysctlsIsMutable();
          sysctls_.remove(index);
          onChanged();
        } else {
          sysctlsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public io.kubernetes.client.proto.V1.Sysctl.Builder getSysctlsBuilder(
          int index) {
        return getSysctlsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public io.kubernetes.client.proto.V1.SysctlOrBuilder getSysctlsOrBuilder(
          int index) {
        if (sysctlsBuilder_ == null) {
          return sysctls_.get(index);  } else {
          return sysctlsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.SysctlOrBuilder> 
           getSysctlsOrBuilderList() {
        if (sysctlsBuilder_ != null) {
          return sysctlsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sysctls_);
        }
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public io.kubernetes.client.proto.V1.Sysctl.Builder addSysctlsBuilder() {
        return getSysctlsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Sysctl.getDefaultInstance());
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public io.kubernetes.client.proto.V1.Sysctl.Builder addSysctlsBuilder(
          int index) {
        return getSysctlsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Sysctl.getDefaultInstance());
      }
      /**
       * <pre>
       * Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
       * sysctls (by the container runtime) might fail to launch.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Sysctl sysctls = 7;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Sysctl.Builder> 
           getSysctlsBuilderList() {
        return getSysctlsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Sysctl, io.kubernetes.client.proto.V1.Sysctl.Builder, io.kubernetes.client.proto.V1.SysctlOrBuilder> 
          getSysctlsFieldBuilder() {
        if (sysctlsBuilder_ == null) {
          sysctlsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Sysctl, io.kubernetes.client.proto.V1.Sysctl.Builder, io.kubernetes.client.proto.V1.SysctlOrBuilder>(
                  sysctls_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          sysctls_ = null;
        }
        return sysctlsBuilder_;
      }

      private java.lang.Object fsGroupChangePolicy_ = "";
      /**
       * <pre>
       * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
       * before being exposed inside Pod. This field will only apply to
       * volume types which support fsGroup based ownership(and permissions).
       * It will have no effect on ephemeral volume types such as: secret, configmaps
       * and emptydir.
       * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string fsGroupChangePolicy = 9;</code>
       * @return Whether the fsGroupChangePolicy field is set.
       */
      public boolean hasFsGroupChangePolicy() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
       * before being exposed inside Pod. This field will only apply to
       * volume types which support fsGroup based ownership(and permissions).
       * It will have no effect on ephemeral volume types such as: secret, configmaps
       * and emptydir.
       * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string fsGroupChangePolicy = 9;</code>
       * @return The fsGroupChangePolicy.
       */
      public java.lang.String getFsGroupChangePolicy() {
        java.lang.Object ref = fsGroupChangePolicy_;
        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()) {
            fsGroupChangePolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
       * before being exposed inside Pod. This field will only apply to
       * volume types which support fsGroup based ownership(and permissions).
       * It will have no effect on ephemeral volume types such as: secret, configmaps
       * and emptydir.
       * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string fsGroupChangePolicy = 9;</code>
       * @return The bytes for fsGroupChangePolicy.
       */
      public com.google.protobuf.ByteString
          getFsGroupChangePolicyBytes() {
        java.lang.Object ref = fsGroupChangePolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsGroupChangePolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
       * before being exposed inside Pod. This field will only apply to
       * volume types which support fsGroup based ownership(and permissions).
       * It will have no effect on ephemeral volume types such as: secret, configmaps
       * and emptydir.
       * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string fsGroupChangePolicy = 9;</code>
       * @param value The fsGroupChangePolicy to set.
       * @return This builder for chaining.
       */
      public Builder setFsGroupChangePolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsGroupChangePolicy_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
       * before being exposed inside Pod. This field will only apply to
       * volume types which support fsGroup based ownership(and permissions).
       * It will have no effect on ephemeral volume types such as: secret, configmaps
       * and emptydir.
       * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string fsGroupChangePolicy = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsGroupChangePolicy() {
        fsGroupChangePolicy_ = getDefaultInstance().getFsGroupChangePolicy();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsGroupChangePolicy defines behavior of changing ownership and permission of the volume
       * before being exposed inside Pod. This field will only apply to
       * volume types which support fsGroup based ownership(and permissions).
       * It will have no effect on ephemeral volume types such as: secret, configmaps
       * and emptydir.
       * Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string fsGroupChangePolicy = 9;</code>
       * @param value The bytes for fsGroupChangePolicy to set.
       * @return This builder for chaining.
       */
      public Builder setFsGroupChangePolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsGroupChangePolicy_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SeccompProfile seccompProfile_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SeccompProfile, io.kubernetes.client.proto.V1.SeccompProfile.Builder, io.kubernetes.client.proto.V1.SeccompProfileOrBuilder> seccompProfileBuilder_;
      /**
       * <pre>
       * The seccomp options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
       * @return Whether the seccompProfile field is set.
       */
      public boolean hasSeccompProfile() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * The seccomp options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
       * @return The seccompProfile.
       */
      public io.kubernetes.client.proto.V1.SeccompProfile getSeccompProfile() {
        if (seccompProfileBuilder_ == null) {
          return seccompProfile_ == null ? io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance() : seccompProfile_;
        } else {
          return seccompProfileBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The seccomp options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
       */
      public Builder setSeccompProfile(io.kubernetes.client.proto.V1.SeccompProfile value) {
        if (seccompProfileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          seccompProfile_ = value;
        } else {
          seccompProfileBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The seccomp options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
       */
      public Builder setSeccompProfile(
          io.kubernetes.client.proto.V1.SeccompProfile.Builder builderForValue) {
        if (seccompProfileBuilder_ == null) {
          seccompProfile_ = builderForValue.build();
        } else {
          seccompProfileBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The seccomp options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
       */
      public Builder mergeSeccompProfile(io.kubernetes.client.proto.V1.SeccompProfile value) {
        if (seccompProfileBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            seccompProfile_ != null &&
            seccompProfile_ != io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance()) {
            getSeccompProfileBuilder().mergeFrom(value);
          } else {
            seccompProfile_ = value;
          }
        } else {
          seccompProfileBuilder_.mergeFrom(value);
        }
        if (seccompProfile_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The seccomp options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
       */
      public Builder clearSeccompProfile() {
        bitField0_ = (bitField0_ & ~0x00000200);
        seccompProfile_ = null;
        if (seccompProfileBuilder_ != null) {
          seccompProfileBuilder_.dispose();
          seccompProfileBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The seccomp options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
       */
      public io.kubernetes.client.proto.V1.SeccompProfile.Builder getSeccompProfileBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getSeccompProfileFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The seccomp options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
       */
      public io.kubernetes.client.proto.V1.SeccompProfileOrBuilder getSeccompProfileOrBuilder() {
        if (seccompProfileBuilder_ != null) {
          return seccompProfileBuilder_.getMessageOrBuilder();
        } else {
          return seccompProfile_ == null ?
              io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance() : seccompProfile_;
        }
      }
      /**
       * <pre>
       * The seccomp options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SeccompProfile, io.kubernetes.client.proto.V1.SeccompProfile.Builder, io.kubernetes.client.proto.V1.SeccompProfileOrBuilder> 
          getSeccompProfileFieldBuilder() {
        if (seccompProfileBuilder_ == null) {
          seccompProfileBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SeccompProfile, io.kubernetes.client.proto.V1.SeccompProfile.Builder, io.kubernetes.client.proto.V1.SeccompProfileOrBuilder>(
                  getSeccompProfile(),
                  getParentForChildren(),
                  isClean());
          seccompProfile_ = null;
        }
        return seccompProfileBuilder_;
      }

      private io.kubernetes.client.proto.V1.AppArmorProfile appArmorProfile_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AppArmorProfile, io.kubernetes.client.proto.V1.AppArmorProfile.Builder, io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder> appArmorProfileBuilder_;
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
       * @return Whether the appArmorProfile field is set.
       */
      public boolean hasAppArmorProfile() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
       * @return The appArmorProfile.
       */
      public io.kubernetes.client.proto.V1.AppArmorProfile getAppArmorProfile() {
        if (appArmorProfileBuilder_ == null) {
          return appArmorProfile_ == null ? io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance() : appArmorProfile_;
        } else {
          return appArmorProfileBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
       */
      public Builder setAppArmorProfile(io.kubernetes.client.proto.V1.AppArmorProfile value) {
        if (appArmorProfileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          appArmorProfile_ = value;
        } else {
          appArmorProfileBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
       */
      public Builder setAppArmorProfile(
          io.kubernetes.client.proto.V1.AppArmorProfile.Builder builderForValue) {
        if (appArmorProfileBuilder_ == null) {
          appArmorProfile_ = builderForValue.build();
        } else {
          appArmorProfileBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
       */
      public Builder mergeAppArmorProfile(io.kubernetes.client.proto.V1.AppArmorProfile value) {
        if (appArmorProfileBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            appArmorProfile_ != null &&
            appArmorProfile_ != io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance()) {
            getAppArmorProfileBuilder().mergeFrom(value);
          } else {
            appArmorProfile_ = value;
          }
        } else {
          appArmorProfileBuilder_.mergeFrom(value);
        }
        if (appArmorProfile_ != null) {
          bitField0_ |= 0x00000400;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
       */
      public Builder clearAppArmorProfile() {
        bitField0_ = (bitField0_ & ~0x00000400);
        appArmorProfile_ = null;
        if (appArmorProfileBuilder_ != null) {
          appArmorProfileBuilder_.dispose();
          appArmorProfileBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
       */
      public io.kubernetes.client.proto.V1.AppArmorProfile.Builder getAppArmorProfileBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getAppArmorProfileFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
       */
      public io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder getAppArmorProfileOrBuilder() {
        if (appArmorProfileBuilder_ != null) {
          return appArmorProfileBuilder_.getMessageOrBuilder();
        } else {
          return appArmorProfile_ == null ?
              io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance() : appArmorProfile_;
        }
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by the containers in this pod.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AppArmorProfile, io.kubernetes.client.proto.V1.AppArmorProfile.Builder, io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder> 
          getAppArmorProfileFieldBuilder() {
        if (appArmorProfileBuilder_ == null) {
          appArmorProfileBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.AppArmorProfile, io.kubernetes.client.proto.V1.AppArmorProfile.Builder, io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder>(
                  getAppArmorProfile(),
                  getParentForChildren(),
                  isClean());
          appArmorProfile_ = null;
        }
        return appArmorProfileBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodSecurityContext)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodSecurityContext)
    private static final io.kubernetes.client.proto.V1.PodSecurityContext DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodSecurityContext();
    }

    public static io.kubernetes.client.proto.V1.PodSecurityContext getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodSecurityContext>
        PARSER = new com.google.protobuf.AbstractParser<PodSecurityContext>() {
      @java.lang.Override
      public PodSecurityContext 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<PodSecurityContext> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodSecurityContext> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSecurityContext getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodSignatureOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodSignature)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Reference to controller whose pods should avoid this node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
     * @return Whether the podController field is set.
     */
    boolean hasPodController();
    /**
     * <pre>
     * Reference to controller whose pods should avoid this node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
     * @return The podController.
     */
    io.kubernetes.client.proto.Meta.OwnerReference getPodController();
    /**
     * <pre>
     * Reference to controller whose pods should avoid this node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
     */
    io.kubernetes.client.proto.Meta.OwnerReferenceOrBuilder getPodControllerOrBuilder();
  }
  /**
   * <pre>
   * Describes the class of pods that should avoid this node.
   * Exactly one field should be set.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodSignature}
   */
  public static final class PodSignature extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodSignature)
      PodSignatureOrBuilder {
  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= */ "",
        PodSignature.class.getName());
    }
    // Use PodSignature.newBuilder() to construct.
    private PodSignature(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodSignature() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSignature_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSignature_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodSignature.class, io.kubernetes.client.proto.V1.PodSignature.Builder.class);
    }

    private int bitField0_;
    public static final int PODCONTROLLER_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.OwnerReference podController_;
    /**
     * <pre>
     * Reference to controller whose pods should avoid this node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
     * @return Whether the podController field is set.
     */
    @java.lang.Override
    public boolean hasPodController() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Reference to controller whose pods should avoid this node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
     * @return The podController.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.OwnerReference getPodController() {
      return podController_ == null ? io.kubernetes.client.proto.Meta.OwnerReference.getDefaultInstance() : podController_;
    }
    /**
     * <pre>
     * Reference to controller whose pods should avoid this node.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.OwnerReferenceOrBuilder getPodControllerOrBuilder() {
      return podController_ == null ? io.kubernetes.client.proto.Meta.OwnerReference.getDefaultInstance() : podController_;
    }

    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, getPodController());
      }
      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, getPodController());
      }
      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.V1.PodSignature)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodSignature other = (io.kubernetes.client.proto.V1.PodSignature) obj;

      if (hasPodController() != other.hasPodController()) return false;
      if (hasPodController()) {
        if (!getPodController()
            .equals(other.getPodController())) 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 (hasPodController()) {
        hash = (37 * hash) + PODCONTROLLER_FIELD_NUMBER;
        hash = (53 * hash) + getPodController().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodSignature parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSignature 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.V1.PodSignature parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSignature 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.V1.PodSignature parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSignature parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodSignature parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodSignature 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.V1.PodSignature parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodSignature 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.V1.PodSignature parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodSignature 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.V1.PodSignature 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>
     * Describes the class of pods that should avoid this node.
     * Exactly one field should be set.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodSignature}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodSignature)
        io.kubernetes.client.proto.V1.PodSignatureOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSignature_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSignature_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodSignature.class, io.kubernetes.client.proto.V1.PodSignature.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodSignature.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPodControllerFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        podController_ = null;
        if (podControllerBuilder_ != null) {
          podControllerBuilder_.dispose();
          podControllerBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSignature_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSignature getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodSignature.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSignature build() {
        io.kubernetes.client.proto.V1.PodSignature result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSignature buildPartial() {
        io.kubernetes.client.proto.V1.PodSignature result = new io.kubernetes.client.proto.V1.PodSignature(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodSignature result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.podController_ = podControllerBuilder_ == null
              ? podController_
              : podControllerBuilder_.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.V1.PodSignature) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodSignature)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodSignature other) {
        if (other == io.kubernetes.client.proto.V1.PodSignature.getDefaultInstance()) return this;
        if (other.hasPodController()) {
          mergePodController(other.getPodController());
        }
        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(
                    getPodControllerFieldBuilder().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.Meta.OwnerReference podController_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.OwnerReference, io.kubernetes.client.proto.Meta.OwnerReference.Builder, io.kubernetes.client.proto.Meta.OwnerReferenceOrBuilder> podControllerBuilder_;
      /**
       * <pre>
       * Reference to controller whose pods should avoid this node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
       * @return Whether the podController field is set.
       */
      public boolean hasPodController() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Reference to controller whose pods should avoid this node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
       * @return The podController.
       */
      public io.kubernetes.client.proto.Meta.OwnerReference getPodController() {
        if (podControllerBuilder_ == null) {
          return podController_ == null ? io.kubernetes.client.proto.Meta.OwnerReference.getDefaultInstance() : podController_;
        } else {
          return podControllerBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Reference to controller whose pods should avoid this node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
       */
      public Builder setPodController(io.kubernetes.client.proto.Meta.OwnerReference value) {
        if (podControllerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          podController_ = value;
        } else {
          podControllerBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Reference to controller whose pods should avoid this node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
       */
      public Builder setPodController(
          io.kubernetes.client.proto.Meta.OwnerReference.Builder builderForValue) {
        if (podControllerBuilder_ == null) {
          podController_ = builderForValue.build();
        } else {
          podControllerBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Reference to controller whose pods should avoid this node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
       */
      public Builder mergePodController(io.kubernetes.client.proto.Meta.OwnerReference value) {
        if (podControllerBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            podController_ != null &&
            podController_ != io.kubernetes.client.proto.Meta.OwnerReference.getDefaultInstance()) {
            getPodControllerBuilder().mergeFrom(value);
          } else {
            podController_ = value;
          }
        } else {
          podControllerBuilder_.mergeFrom(value);
        }
        if (podController_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Reference to controller whose pods should avoid this node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
       */
      public Builder clearPodController() {
        bitField0_ = (bitField0_ & ~0x00000001);
        podController_ = null;
        if (podControllerBuilder_ != null) {
          podControllerBuilder_.dispose();
          podControllerBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Reference to controller whose pods should avoid this node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.OwnerReference.Builder getPodControllerBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPodControllerFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Reference to controller whose pods should avoid this node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.OwnerReferenceOrBuilder getPodControllerOrBuilder() {
        if (podControllerBuilder_ != null) {
          return podControllerBuilder_.getMessageOrBuilder();
        } else {
          return podController_ == null ?
              io.kubernetes.client.proto.Meta.OwnerReference.getDefaultInstance() : podController_;
        }
      }
      /**
       * <pre>
       * Reference to controller whose pods should avoid this node.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.OwnerReference, io.kubernetes.client.proto.Meta.OwnerReference.Builder, io.kubernetes.client.proto.Meta.OwnerReferenceOrBuilder> 
          getPodControllerFieldBuilder() {
        if (podControllerBuilder_ == null) {
          podControllerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.OwnerReference, io.kubernetes.client.proto.Meta.OwnerReference.Builder, io.kubernetes.client.proto.Meta.OwnerReferenceOrBuilder>(
                  getPodController(),
                  getParentForChildren(),
                  isClean());
          podController_ = null;
        }
        return podControllerBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodSignature)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodSignature)
    private static final io.kubernetes.client.proto.V1.PodSignature DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodSignature();
    }

    public static io.kubernetes.client.proto.V1.PodSignature getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodSignature>
        PARSER = new com.google.protobuf.AbstractParser<PodSignature>() {
      @java.lang.Override
      public PodSignature 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<PodSignature> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodSignature> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSignature getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * List of volumes that can be mounted by containers belonging to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Volume> 
        getVolumesList();
    /**
     * <pre>
     * List of volumes that can be mounted by containers belonging to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
     */
    io.kubernetes.client.proto.V1.Volume getVolumes(int index);
    /**
     * <pre>
     * List of volumes that can be mounted by containers belonging to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
     */
    int getVolumesCount();
    /**
     * <pre>
     * List of volumes that can be mounted by containers belonging to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.VolumeOrBuilder> 
        getVolumesOrBuilderList();
    /**
     * <pre>
     * List of volumes that can be mounted by containers belonging to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
     */
    io.kubernetes.client.proto.V1.VolumeOrBuilder getVolumesOrBuilder(
        int index);

    /**
     * <pre>
     * List of initialization containers belonging to the pod.
     * Init containers are executed in order prior to containers being started. If any
     * init container fails, the pod is considered to have failed and is handled according
     * to its restartPolicy. The name for an init container or normal container must be
     * unique among all containers.
     * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
     * The resourceRequirements of an init container are taken into account during scheduling
     * by finding the highest request/limit for each resource type, and then using the max of
     * of that value or the sum of the normal containers. Limits are applied to init containers
     * in a similar fashion.
     * Init containers cannot currently be added or removed.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Container> 
        getInitContainersList();
    /**
     * <pre>
     * List of initialization containers belonging to the pod.
     * Init containers are executed in order prior to containers being started. If any
     * init container fails, the pod is considered to have failed and is handled according
     * to its restartPolicy. The name for an init container or normal container must be
     * unique among all containers.
     * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
     * The resourceRequirements of an init container are taken into account during scheduling
     * by finding the highest request/limit for each resource type, and then using the max of
     * of that value or the sum of the normal containers. Limits are applied to init containers
     * in a similar fashion.
     * Init containers cannot currently be added or removed.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
     */
    io.kubernetes.client.proto.V1.Container getInitContainers(int index);
    /**
     * <pre>
     * List of initialization containers belonging to the pod.
     * Init containers are executed in order prior to containers being started. If any
     * init container fails, the pod is considered to have failed and is handled according
     * to its restartPolicy. The name for an init container or normal container must be
     * unique among all containers.
     * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
     * The resourceRequirements of an init container are taken into account during scheduling
     * by finding the highest request/limit for each resource type, and then using the max of
     * of that value or the sum of the normal containers. Limits are applied to init containers
     * in a similar fashion.
     * Init containers cannot currently be added or removed.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
     */
    int getInitContainersCount();
    /**
     * <pre>
     * List of initialization containers belonging to the pod.
     * Init containers are executed in order prior to containers being started. If any
     * init container fails, the pod is considered to have failed and is handled according
     * to its restartPolicy. The name for an init container or normal container must be
     * unique among all containers.
     * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
     * The resourceRequirements of an init container are taken into account during scheduling
     * by finding the highest request/limit for each resource type, and then using the max of
     * of that value or the sum of the normal containers. Limits are applied to init containers
     * in a similar fashion.
     * Init containers cannot currently be added or removed.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ContainerOrBuilder> 
        getInitContainersOrBuilderList();
    /**
     * <pre>
     * List of initialization containers belonging to the pod.
     * Init containers are executed in order prior to containers being started. If any
     * init container fails, the pod is considered to have failed and is handled according
     * to its restartPolicy. The name for an init container or normal container must be
     * unique among all containers.
     * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
     * The resourceRequirements of an init container are taken into account during scheduling
     * by finding the highest request/limit for each resource type, and then using the max of
     * of that value or the sum of the normal containers. Limits are applied to init containers
     * in a similar fashion.
     * Init containers cannot currently be added or removed.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
     */
    io.kubernetes.client.proto.V1.ContainerOrBuilder getInitContainersOrBuilder(
        int index);

    /**
     * <pre>
     * List of containers belonging to the pod.
     * Containers cannot currently be added or removed.
     * There must be at least one container in a Pod.
     * Cannot be updated.
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Container> 
        getContainersList();
    /**
     * <pre>
     * List of containers belonging to the pod.
     * Containers cannot currently be added or removed.
     * There must be at least one container in a Pod.
     * Cannot be updated.
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
     */
    io.kubernetes.client.proto.V1.Container getContainers(int index);
    /**
     * <pre>
     * List of containers belonging to the pod.
     * Containers cannot currently be added or removed.
     * There must be at least one container in a Pod.
     * Cannot be updated.
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
     */
    int getContainersCount();
    /**
     * <pre>
     * List of containers belonging to the pod.
     * Containers cannot currently be added or removed.
     * There must be at least one container in a Pod.
     * Cannot be updated.
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ContainerOrBuilder> 
        getContainersOrBuilderList();
    /**
     * <pre>
     * List of containers belonging to the pod.
     * Containers cannot currently be added or removed.
     * There must be at least one container in a Pod.
     * Cannot be updated.
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
     */
    io.kubernetes.client.proto.V1.ContainerOrBuilder getContainersOrBuilder(
        int index);

    /**
     * <pre>
     * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     * pod to perform user-initiated actions such as debugging. This list cannot be specified when
     * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
     * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.EphemeralContainer> 
        getEphemeralContainersList();
    /**
     * <pre>
     * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     * pod to perform user-initiated actions such as debugging. This list cannot be specified when
     * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
     * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
     */
    io.kubernetes.client.proto.V1.EphemeralContainer getEphemeralContainers(int index);
    /**
     * <pre>
     * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     * pod to perform user-initiated actions such as debugging. This list cannot be specified when
     * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
     * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
     */
    int getEphemeralContainersCount();
    /**
     * <pre>
     * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     * pod to perform user-initiated actions such as debugging. This list cannot be specified when
     * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
     * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.EphemeralContainerOrBuilder> 
        getEphemeralContainersOrBuilderList();
    /**
     * <pre>
     * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     * pod to perform user-initiated actions such as debugging. This list cannot be specified when
     * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
     * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
     */
    io.kubernetes.client.proto.V1.EphemeralContainerOrBuilder getEphemeralContainersOrBuilder(
        int index);

    /**
     * <pre>
     * Restart policy for all containers within the pod.
     * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
     * Default to Always.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 3;</code>
     * @return Whether the restartPolicy field is set.
     */
    boolean hasRestartPolicy();
    /**
     * <pre>
     * Restart policy for all containers within the pod.
     * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
     * Default to Always.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 3;</code>
     * @return The restartPolicy.
     */
    java.lang.String getRestartPolicy();
    /**
     * <pre>
     * Restart policy for all containers within the pod.
     * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
     * Default to Always.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 3;</code>
     * @return The bytes for restartPolicy.
     */
    com.google.protobuf.ByteString
        getRestartPolicyBytes();

    /**
     * <pre>
     * Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
     * Value must be non-negative integer. The value zero indicates stop immediately via
     * the kill signal (no opportunity to shut down).
     * If this value is nil, the default grace period will be used instead.
     * The grace period is the duration in seconds after the processes running in the pod are sent
     * a termination signal and the time when the processes are forcibly halted with a kill signal.
     * Set this value longer than the expected cleanup time for your process.
     * Defaults to 30 seconds.
     * +optional
     * </pre>
     *
     * <code>optional int64 terminationGracePeriodSeconds = 4;</code>
     * @return Whether the terminationGracePeriodSeconds field is set.
     */
    boolean hasTerminationGracePeriodSeconds();
    /**
     * <pre>
     * Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
     * Value must be non-negative integer. The value zero indicates stop immediately via
     * the kill signal (no opportunity to shut down).
     * If this value is nil, the default grace period will be used instead.
     * The grace period is the duration in seconds after the processes running in the pod are sent
     * a termination signal and the time when the processes are forcibly halted with a kill signal.
     * Set this value longer than the expected cleanup time for your process.
     * Defaults to 30 seconds.
     * +optional
     * </pre>
     *
     * <code>optional int64 terminationGracePeriodSeconds = 4;</code>
     * @return The terminationGracePeriodSeconds.
     */
    long getTerminationGracePeriodSeconds();

    /**
     * <pre>
     * Optional duration in seconds the pod may be active on the node relative to
     * StartTime before the system will actively try to mark it failed and kill associated containers.
     * Value must be a positive integer.
     * +optional
     * </pre>
     *
     * <code>optional int64 activeDeadlineSeconds = 5;</code>
     * @return Whether the activeDeadlineSeconds field is set.
     */
    boolean hasActiveDeadlineSeconds();
    /**
     * <pre>
     * Optional duration in seconds the pod may be active on the node relative to
     * StartTime before the system will actively try to mark it failed and kill associated containers.
     * Value must be a positive integer.
     * +optional
     * </pre>
     *
     * <code>optional int64 activeDeadlineSeconds = 5;</code>
     * @return The activeDeadlineSeconds.
     */
    long getActiveDeadlineSeconds();

    /**
     * <pre>
     * Set DNS policy for the pod.
     * Defaults to "ClusterFirst".
     * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
     * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
     * To have DNS options set along with hostNetwork, you have to specify DNS policy
     * explicitly to 'ClusterFirstWithHostNet'.
     * +optional
     * </pre>
     *
     * <code>optional string dnsPolicy = 6;</code>
     * @return Whether the dnsPolicy field is set.
     */
    boolean hasDnsPolicy();
    /**
     * <pre>
     * Set DNS policy for the pod.
     * Defaults to "ClusterFirst".
     * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
     * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
     * To have DNS options set along with hostNetwork, you have to specify DNS policy
     * explicitly to 'ClusterFirstWithHostNet'.
     * +optional
     * </pre>
     *
     * <code>optional string dnsPolicy = 6;</code>
     * @return The dnsPolicy.
     */
    java.lang.String getDnsPolicy();
    /**
     * <pre>
     * Set DNS policy for the pod.
     * Defaults to "ClusterFirst".
     * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
     * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
     * To have DNS options set along with hostNetwork, you have to specify DNS policy
     * explicitly to 'ClusterFirstWithHostNet'.
     * +optional
     * </pre>
     *
     * <code>optional string dnsPolicy = 6;</code>
     * @return The bytes for dnsPolicy.
     */
    com.google.protobuf.ByteString
        getDnsPolicyBytes();

    /**
     * <pre>
     * NodeSelector is a selector which must be true for the pod to fit on a node.
     * Selector which must match a node's labels for the pod to be scheduled on that node.
     * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
     */
    int getNodeSelectorCount();
    /**
     * <pre>
     * NodeSelector is a selector which must be true for the pod to fit on a node.
     * Selector which must match a node's labels for the pod to be scheduled on that node.
     * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
     */
    boolean containsNodeSelector(
        java.lang.String key);
    /**
     * Use {@link #getNodeSelectorMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getNodeSelector();
    /**
     * <pre>
     * NodeSelector is a selector which must be true for the pod to fit on a node.
     * Selector which must match a node's labels for the pod to be scheduled on that node.
     * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getNodeSelectorMap();
    /**
     * <pre>
     * NodeSelector is a selector which must be true for the pod to fit on a node.
     * Selector which must match a node's labels for the pod to be scheduled on that node.
     * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
     */
    /* nullable */
java.lang.String getNodeSelectorOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * NodeSelector is a selector which must be true for the pod to fit on a node.
     * Selector which must match a node's labels for the pod to be scheduled on that node.
     * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
     */
    java.lang.String getNodeSelectorOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccountName = 8;</code>
     * @return Whether the serviceAccountName field is set.
     */
    boolean hasServiceAccountName();
    /**
     * <pre>
     * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccountName = 8;</code>
     * @return The serviceAccountName.
     */
    java.lang.String getServiceAccountName();
    /**
     * <pre>
     * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccountName = 8;</code>
     * @return The bytes for serviceAccountName.
     */
    com.google.protobuf.ByteString
        getServiceAccountNameBytes();

    /**
     * <pre>
     * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
     * Deprecated: Use serviceAccountName instead.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccount = 9;</code>
     * @return Whether the serviceAccount field is set.
     */
    boolean hasServiceAccount();
    /**
     * <pre>
     * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
     * Deprecated: Use serviceAccountName instead.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccount = 9;</code>
     * @return The serviceAccount.
     */
    java.lang.String getServiceAccount();
    /**
     * <pre>
     * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
     * Deprecated: Use serviceAccountName instead.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccount = 9;</code>
     * @return The bytes for serviceAccount.
     */
    com.google.protobuf.ByteString
        getServiceAccountBytes();

    /**
     * <pre>
     * AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
     * +optional
     * </pre>
     *
     * <code>optional bool automountServiceAccountToken = 21;</code>
     * @return Whether the automountServiceAccountToken field is set.
     */
    boolean hasAutomountServiceAccountToken();
    /**
     * <pre>
     * AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
     * +optional
     * </pre>
     *
     * <code>optional bool automountServiceAccountToken = 21;</code>
     * @return The automountServiceAccountToken.
     */
    boolean getAutomountServiceAccountToken();

    /**
     * <pre>
     * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
     * the scheduler simply schedules this pod onto that node, assuming that it fits resource
     * requirements.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 10;</code>
     * @return Whether the nodeName field is set.
     */
    boolean hasNodeName();
    /**
     * <pre>
     * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
     * the scheduler simply schedules this pod onto that node, assuming that it fits resource
     * requirements.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 10;</code>
     * @return The nodeName.
     */
    java.lang.String getNodeName();
    /**
     * <pre>
     * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
     * the scheduler simply schedules this pod onto that node, assuming that it fits resource
     * requirements.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 10;</code>
     * @return The bytes for nodeName.
     */
    com.google.protobuf.ByteString
        getNodeNameBytes();

    /**
     * <pre>
     * Host networking requested for this pod. Use the host's network namespace.
     * If this option is set, the ports that will be used must be specified.
     * Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostNetwork = 11;</code>
     * @return Whether the hostNetwork field is set.
     */
    boolean hasHostNetwork();
    /**
     * <pre>
     * Host networking requested for this pod. Use the host's network namespace.
     * If this option is set, the ports that will be used must be specified.
     * Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostNetwork = 11;</code>
     * @return The hostNetwork.
     */
    boolean getHostNetwork();

    /**
     * <pre>
     * Use the host's pid namespace.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostPID = 12;</code>
     * @return Whether the hostPID field is set.
     */
    boolean hasHostPID();
    /**
     * <pre>
     * Use the host's pid namespace.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostPID = 12;</code>
     * @return The hostPID.
     */
    boolean getHostPID();

    /**
     * <pre>
     * Use the host's ipc namespace.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostIPC = 13;</code>
     * @return Whether the hostIPC field is set.
     */
    boolean hasHostIPC();
    /**
     * <pre>
     * Use the host's ipc namespace.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostIPC = 13;</code>
     * @return The hostIPC.
     */
    boolean getHostIPC();

    /**
     * <pre>
     * Share a single process namespace between all of the containers in a pod.
     * When this is set containers will be able to view and signal processes from other containers
     * in the same pod, and the first process in each container will not be assigned PID 1.
     * HostPID and ShareProcessNamespace cannot both be set.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool shareProcessNamespace = 27;</code>
     * @return Whether the shareProcessNamespace field is set.
     */
    boolean hasShareProcessNamespace();
    /**
     * <pre>
     * Share a single process namespace between all of the containers in a pod.
     * When this is set containers will be able to view and signal processes from other containers
     * in the same pod, and the first process in each container will not be assigned PID 1.
     * HostPID and ShareProcessNamespace cannot both be set.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool shareProcessNamespace = 27;</code>
     * @return The shareProcessNamespace.
     */
    boolean getShareProcessNamespace();

    /**
     * <pre>
     * SecurityContext holds pod-level security attributes and common container settings.
     * Optional: Defaults to empty.  See type description for default values of each field.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
     * @return Whether the securityContext field is set.
     */
    boolean hasSecurityContext();
    /**
     * <pre>
     * SecurityContext holds pod-level security attributes and common container settings.
     * Optional: Defaults to empty.  See type description for default values of each field.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
     * @return The securityContext.
     */
    io.kubernetes.client.proto.V1.PodSecurityContext getSecurityContext();
    /**
     * <pre>
     * SecurityContext holds pod-level security attributes and common container settings.
     * Optional: Defaults to empty.  See type description for default values of each field.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
     */
    io.kubernetes.client.proto.V1.PodSecurityContextOrBuilder getSecurityContextOrBuilder();

    /**
     * <pre>
     * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
     * If specified, these secrets will be passed to individual puller implementations for them to use.
     * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference> 
        getImagePullSecretsList();
    /**
     * <pre>
     * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
     * If specified, these secrets will be passed to individual puller implementations for them to use.
     * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getImagePullSecrets(int index);
    /**
     * <pre>
     * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
     * If specified, these secrets will be passed to individual puller implementations for them to use.
     * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
     */
    int getImagePullSecretsCount();
    /**
     * <pre>
     * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
     * If specified, these secrets will be passed to individual puller implementations for them to use.
     * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
        getImagePullSecretsOrBuilderList();
    /**
     * <pre>
     * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
     * If specified, these secrets will be passed to individual puller implementations for them to use.
     * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getImagePullSecretsOrBuilder(
        int index);

    /**
     * <pre>
     * Specifies the hostname of the Pod
     * If not specified, the pod's hostname will be set to a system-defined value.
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 16;</code>
     * @return Whether the hostname field is set.
     */
    boolean hasHostname();
    /**
     * <pre>
     * Specifies the hostname of the Pod
     * If not specified, the pod's hostname will be set to a system-defined value.
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 16;</code>
     * @return The hostname.
     */
    java.lang.String getHostname();
    /**
     * <pre>
     * Specifies the hostname of the Pod
     * If not specified, the pod's hostname will be set to a system-defined value.
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 16;</code>
     * @return The bytes for hostname.
     */
    com.google.protobuf.ByteString
        getHostnameBytes();

    /**
     * <pre>
     * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
     * If not specified, the pod will not have a domainname at all.
     * +optional
     * </pre>
     *
     * <code>optional string subdomain = 17;</code>
     * @return Whether the subdomain field is set.
     */
    boolean hasSubdomain();
    /**
     * <pre>
     * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
     * If not specified, the pod will not have a domainname at all.
     * +optional
     * </pre>
     *
     * <code>optional string subdomain = 17;</code>
     * @return The subdomain.
     */
    java.lang.String getSubdomain();
    /**
     * <pre>
     * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
     * If not specified, the pod will not have a domainname at all.
     * +optional
     * </pre>
     *
     * <code>optional string subdomain = 17;</code>
     * @return The bytes for subdomain.
     */
    com.google.protobuf.ByteString
        getSubdomainBytes();

    /**
     * <pre>
     * If specified, the pod's scheduling constraints
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
     * @return Whether the affinity field is set.
     */
    boolean hasAffinity();
    /**
     * <pre>
     * If specified, the pod's scheduling constraints
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
     * @return The affinity.
     */
    io.kubernetes.client.proto.V1.Affinity getAffinity();
    /**
     * <pre>
     * If specified, the pod's scheduling constraints
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
     */
    io.kubernetes.client.proto.V1.AffinityOrBuilder getAffinityOrBuilder();

    /**
     * <pre>
     * If specified, the pod will be dispatched by specified scheduler.
     * If not specified, the pod will be dispatched by default scheduler.
     * +optional
     * </pre>
     *
     * <code>optional string schedulerName = 19;</code>
     * @return Whether the schedulerName field is set.
     */
    boolean hasSchedulerName();
    /**
     * <pre>
     * If specified, the pod will be dispatched by specified scheduler.
     * If not specified, the pod will be dispatched by default scheduler.
     * +optional
     * </pre>
     *
     * <code>optional string schedulerName = 19;</code>
     * @return The schedulerName.
     */
    java.lang.String getSchedulerName();
    /**
     * <pre>
     * If specified, the pod will be dispatched by specified scheduler.
     * If not specified, the pod will be dispatched by default scheduler.
     * +optional
     * </pre>
     *
     * <code>optional string schedulerName = 19;</code>
     * @return The bytes for schedulerName.
     */
    com.google.protobuf.ByteString
        getSchedulerNameBytes();

    /**
     * <pre>
     * If specified, the pod's tolerations.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Toleration> 
        getTolerationsList();
    /**
     * <pre>
     * If specified, the pod's tolerations.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
     */
    io.kubernetes.client.proto.V1.Toleration getTolerations(int index);
    /**
     * <pre>
     * If specified, the pod's tolerations.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
     */
    int getTolerationsCount();
    /**
     * <pre>
     * If specified, the pod's tolerations.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.TolerationOrBuilder> 
        getTolerationsOrBuilderList();
    /**
     * <pre>
     * If specified, the pod's tolerations.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
     */
    io.kubernetes.client.proto.V1.TolerationOrBuilder getTolerationsOrBuilder(
        int index);

    /**
     * <pre>
     * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
     * file if specified.
     * +optional
     * +patchMergeKey=ip
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.HostAlias> 
        getHostAliasesList();
    /**
     * <pre>
     * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
     * file if specified.
     * +optional
     * +patchMergeKey=ip
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
     */
    io.kubernetes.client.proto.V1.HostAlias getHostAliases(int index);
    /**
     * <pre>
     * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
     * file if specified.
     * +optional
     * +patchMergeKey=ip
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
     */
    int getHostAliasesCount();
    /**
     * <pre>
     * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
     * file if specified.
     * +optional
     * +patchMergeKey=ip
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.HostAliasOrBuilder> 
        getHostAliasesOrBuilderList();
    /**
     * <pre>
     * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
     * file if specified.
     * +optional
     * +patchMergeKey=ip
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
     */
    io.kubernetes.client.proto.V1.HostAliasOrBuilder getHostAliasesOrBuilder(
        int index);

    /**
     * <pre>
     * If specified, indicates the pod's priority. "system-node-critical" and
     * "system-cluster-critical" are two special keywords which indicate the
     * highest priorities with the former being the highest priority. Any other
     * name must be defined by creating a PriorityClass object with that name.
     * If not specified, the pod priority will be default or zero if there is no
     * default.
     * +optional
     * </pre>
     *
     * <code>optional string priorityClassName = 24;</code>
     * @return Whether the priorityClassName field is set.
     */
    boolean hasPriorityClassName();
    /**
     * <pre>
     * If specified, indicates the pod's priority. "system-node-critical" and
     * "system-cluster-critical" are two special keywords which indicate the
     * highest priorities with the former being the highest priority. Any other
     * name must be defined by creating a PriorityClass object with that name.
     * If not specified, the pod priority will be default or zero if there is no
     * default.
     * +optional
     * </pre>
     *
     * <code>optional string priorityClassName = 24;</code>
     * @return The priorityClassName.
     */
    java.lang.String getPriorityClassName();
    /**
     * <pre>
     * If specified, indicates the pod's priority. "system-node-critical" and
     * "system-cluster-critical" are two special keywords which indicate the
     * highest priorities with the former being the highest priority. Any other
     * name must be defined by creating a PriorityClass object with that name.
     * If not specified, the pod priority will be default or zero if there is no
     * default.
     * +optional
     * </pre>
     *
     * <code>optional string priorityClassName = 24;</code>
     * @return The bytes for priorityClassName.
     */
    com.google.protobuf.ByteString
        getPriorityClassNameBytes();

    /**
     * <pre>
     * The priority value. Various system components use this field to find the
     * priority of the pod. When Priority Admission Controller is enabled, it
     * prevents users from setting this field. The admission controller populates
     * this field from PriorityClassName.
     * The higher the value, the higher the priority.
     * +optional
     * </pre>
     *
     * <code>optional int32 priority = 25;</code>
     * @return Whether the priority field is set.
     */
    boolean hasPriority();
    /**
     * <pre>
     * The priority value. Various system components use this field to find the
     * priority of the pod. When Priority Admission Controller is enabled, it
     * prevents users from setting this field. The admission controller populates
     * this field from PriorityClassName.
     * The higher the value, the higher the priority.
     * +optional
     * </pre>
     *
     * <code>optional int32 priority = 25;</code>
     * @return The priority.
     */
    int getPriority();

    /**
     * <pre>
     * Specifies the DNS parameters of a pod.
     * Parameters specified here will be merged to the generated DNS
     * configuration based on DNSPolicy.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
     * @return Whether the dnsConfig field is set.
     */
    boolean hasDnsConfig();
    /**
     * <pre>
     * Specifies the DNS parameters of a pod.
     * Parameters specified here will be merged to the generated DNS
     * configuration based on DNSPolicy.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
     * @return The dnsConfig.
     */
    io.kubernetes.client.proto.V1.PodDNSConfig getDnsConfig();
    /**
     * <pre>
     * Specifies the DNS parameters of a pod.
     * Parameters specified here will be merged to the generated DNS
     * configuration based on DNSPolicy.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
     */
    io.kubernetes.client.proto.V1.PodDNSConfigOrBuilder getDnsConfigOrBuilder();

    /**
     * <pre>
     * If specified, all readiness gates will be evaluated for pod readiness.
     * A pod is ready when all its containers are ready AND
     * all conditions specified in the readiness gates have status equal to "True"
     * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PodReadinessGate> 
        getReadinessGatesList();
    /**
     * <pre>
     * If specified, all readiness gates will be evaluated for pod readiness.
     * A pod is ready when all its containers are ready AND
     * all conditions specified in the readiness gates have status equal to "True"
     * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
     */
    io.kubernetes.client.proto.V1.PodReadinessGate getReadinessGates(int index);
    /**
     * <pre>
     * If specified, all readiness gates will be evaluated for pod readiness.
     * A pod is ready when all its containers are ready AND
     * all conditions specified in the readiness gates have status equal to "True"
     * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
     */
    int getReadinessGatesCount();
    /**
     * <pre>
     * If specified, all readiness gates will be evaluated for pod readiness.
     * A pod is ready when all its containers are ready AND
     * all conditions specified in the readiness gates have status equal to "True"
     * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodReadinessGateOrBuilder> 
        getReadinessGatesOrBuilderList();
    /**
     * <pre>
     * If specified, all readiness gates will be evaluated for pod readiness.
     * A pod is ready when all its containers are ready AND
     * all conditions specified in the readiness gates have status equal to "True"
     * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
     */
    io.kubernetes.client.proto.V1.PodReadinessGateOrBuilder getReadinessGatesOrBuilder(
        int index);

    /**
     * <pre>
     * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
     * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
     * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
     * empty definition that uses the default runtime handler.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
     * +optional
     * </pre>
     *
     * <code>optional string runtimeClassName = 29;</code>
     * @return Whether the runtimeClassName field is set.
     */
    boolean hasRuntimeClassName();
    /**
     * <pre>
     * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
     * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
     * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
     * empty definition that uses the default runtime handler.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
     * +optional
     * </pre>
     *
     * <code>optional string runtimeClassName = 29;</code>
     * @return The runtimeClassName.
     */
    java.lang.String getRuntimeClassName();
    /**
     * <pre>
     * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
     * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
     * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
     * empty definition that uses the default runtime handler.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
     * +optional
     * </pre>
     *
     * <code>optional string runtimeClassName = 29;</code>
     * @return The bytes for runtimeClassName.
     */
    com.google.protobuf.ByteString
        getRuntimeClassNameBytes();

    /**
     * <pre>
     * EnableServiceLinks indicates whether information about services should be injected into pod's
     * environment variables, matching the syntax of Docker links.
     * Optional: Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool enableServiceLinks = 30;</code>
     * @return Whether the enableServiceLinks field is set.
     */
    boolean hasEnableServiceLinks();
    /**
     * <pre>
     * EnableServiceLinks indicates whether information about services should be injected into pod's
     * environment variables, matching the syntax of Docker links.
     * Optional: Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool enableServiceLinks = 30;</code>
     * @return The enableServiceLinks.
     */
    boolean getEnableServiceLinks();

    /**
     * <pre>
     * PreemptionPolicy is the Policy for preempting pods with lower priority.
     * One of Never, PreemptLowerPriority.
     * Defaults to PreemptLowerPriority if unset.
     * +optional
     * </pre>
     *
     * <code>optional string preemptionPolicy = 31;</code>
     * @return Whether the preemptionPolicy field is set.
     */
    boolean hasPreemptionPolicy();
    /**
     * <pre>
     * PreemptionPolicy is the Policy for preempting pods with lower priority.
     * One of Never, PreemptLowerPriority.
     * Defaults to PreemptLowerPriority if unset.
     * +optional
     * </pre>
     *
     * <code>optional string preemptionPolicy = 31;</code>
     * @return The preemptionPolicy.
     */
    java.lang.String getPreemptionPolicy();
    /**
     * <pre>
     * PreemptionPolicy is the Policy for preempting pods with lower priority.
     * One of Never, PreemptLowerPriority.
     * Defaults to PreemptLowerPriority if unset.
     * +optional
     * </pre>
     *
     * <code>optional string preemptionPolicy = 31;</code>
     * @return The bytes for preemptionPolicy.
     */
    com.google.protobuf.ByteString
        getPreemptionPolicyBytes();

    /**
     * <pre>
     * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
     * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
     * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
     * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
     * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
     * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
     */
    int getOverheadCount();
    /**
     * <pre>
     * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
     * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
     * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
     * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
     * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
     * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
     */
    boolean containsOverhead(
        java.lang.String key);
    /**
     * Use {@link #getOverheadMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getOverhead();
    /**
     * <pre>
     * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
     * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
     * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
     * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
     * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
     * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getOverheadMap();
    /**
     * <pre>
     * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
     * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
     * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
     * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
     * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
     * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getOverheadOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
     * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
     * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
     * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
     * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
     * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getOverheadOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * TopologySpreadConstraints describes how a group of pods ought to spread across topology
     * domains. Scheduler will schedule pods in a way which abides by the constraints.
     * All topologySpreadConstraints are ANDed.
     * +optional
     * +patchMergeKey=topologyKey
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=topologyKey
     * +listMapKey=whenUnsatisfiable
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.TopologySpreadConstraint> 
        getTopologySpreadConstraintsList();
    /**
     * <pre>
     * TopologySpreadConstraints describes how a group of pods ought to spread across topology
     * domains. Scheduler will schedule pods in a way which abides by the constraints.
     * All topologySpreadConstraints are ANDed.
     * +optional
     * +patchMergeKey=topologyKey
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=topologyKey
     * +listMapKey=whenUnsatisfiable
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
     */
    io.kubernetes.client.proto.V1.TopologySpreadConstraint getTopologySpreadConstraints(int index);
    /**
     * <pre>
     * TopologySpreadConstraints describes how a group of pods ought to spread across topology
     * domains. Scheduler will schedule pods in a way which abides by the constraints.
     * All topologySpreadConstraints are ANDed.
     * +optional
     * +patchMergeKey=topologyKey
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=topologyKey
     * +listMapKey=whenUnsatisfiable
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
     */
    int getTopologySpreadConstraintsCount();
    /**
     * <pre>
     * TopologySpreadConstraints describes how a group of pods ought to spread across topology
     * domains. Scheduler will schedule pods in a way which abides by the constraints.
     * All topologySpreadConstraints are ANDed.
     * +optional
     * +patchMergeKey=topologyKey
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=topologyKey
     * +listMapKey=whenUnsatisfiable
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.TopologySpreadConstraintOrBuilder> 
        getTopologySpreadConstraintsOrBuilderList();
    /**
     * <pre>
     * TopologySpreadConstraints describes how a group of pods ought to spread across topology
     * domains. Scheduler will schedule pods in a way which abides by the constraints.
     * All topologySpreadConstraints are ANDed.
     * +optional
     * +patchMergeKey=topologyKey
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=topologyKey
     * +listMapKey=whenUnsatisfiable
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
     */
    io.kubernetes.client.proto.V1.TopologySpreadConstraintOrBuilder getTopologySpreadConstraintsOrBuilder(
        int index);

    /**
     * <pre>
     * If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).
     * In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).
     * In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE&#92;&#92;SYSTEM&#92;&#92;CurrentControlSet&#92;&#92;Services&#92;&#92;Tcpip&#92;&#92;Parameters to FQDN.
     * If a pod does not have FQDN, this has no effect.
     * Default to false.
     * +optional
     * </pre>
     *
     * <code>optional bool setHostnameAsFQDN = 35;</code>
     * @return Whether the setHostnameAsFQDN field is set.
     */
    boolean hasSetHostnameAsFQDN();
    /**
     * <pre>
     * If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).
     * In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).
     * In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE&#92;&#92;SYSTEM&#92;&#92;CurrentControlSet&#92;&#92;Services&#92;&#92;Tcpip&#92;&#92;Parameters to FQDN.
     * If a pod does not have FQDN, this has no effect.
     * Default to false.
     * +optional
     * </pre>
     *
     * <code>optional bool setHostnameAsFQDN = 35;</code>
     * @return The setHostnameAsFQDN.
     */
    boolean getSetHostnameAsFQDN();

    /**
     * <pre>
     * Specifies the OS of the containers in the pod.
     * Some pod and container fields are restricted if this is set.
     *
     * If the OS field is set to linux, the following fields must be unset:
     * -securityContext.windowsOptions
     *
     * If the OS field is set to windows, following fields must be unset:
     * - spec.hostPID
     * - spec.hostIPC
     * - spec.hostUsers
     * - spec.securityContext.appArmorProfile
     * - spec.securityContext.seLinuxOptions
     * - spec.securityContext.seccompProfile
     * - spec.securityContext.fsGroup
     * - spec.securityContext.fsGroupChangePolicy
     * - spec.securityContext.sysctls
     * - spec.shareProcessNamespace
     * - spec.securityContext.runAsUser
     * - spec.securityContext.runAsGroup
     * - spec.securityContext.supplementalGroups
     * - spec.containers[*].securityContext.appArmorProfile
     * - spec.containers[*].securityContext.seLinuxOptions
     * - spec.containers[*].securityContext.seccompProfile
     * - spec.containers[*].securityContext.capabilities
     * - spec.containers[*].securityContext.readOnlyRootFilesystem
     * - spec.containers[*].securityContext.privileged
     * - spec.containers[*].securityContext.allowPrivilegeEscalation
     * - spec.containers[*].securityContext.procMount
     * - spec.containers[*].securityContext.runAsUser
     * - spec.containers[*].securityContext.runAsGroup
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
     * @return Whether the os field is set.
     */
    boolean hasOs();
    /**
     * <pre>
     * Specifies the OS of the containers in the pod.
     * Some pod and container fields are restricted if this is set.
     *
     * If the OS field is set to linux, the following fields must be unset:
     * -securityContext.windowsOptions
     *
     * If the OS field is set to windows, following fields must be unset:
     * - spec.hostPID
     * - spec.hostIPC
     * - spec.hostUsers
     * - spec.securityContext.appArmorProfile
     * - spec.securityContext.seLinuxOptions
     * - spec.securityContext.seccompProfile
     * - spec.securityContext.fsGroup
     * - spec.securityContext.fsGroupChangePolicy
     * - spec.securityContext.sysctls
     * - spec.shareProcessNamespace
     * - spec.securityContext.runAsUser
     * - spec.securityContext.runAsGroup
     * - spec.securityContext.supplementalGroups
     * - spec.containers[*].securityContext.appArmorProfile
     * - spec.containers[*].securityContext.seLinuxOptions
     * - spec.containers[*].securityContext.seccompProfile
     * - spec.containers[*].securityContext.capabilities
     * - spec.containers[*].securityContext.readOnlyRootFilesystem
     * - spec.containers[*].securityContext.privileged
     * - spec.containers[*].securityContext.allowPrivilegeEscalation
     * - spec.containers[*].securityContext.procMount
     * - spec.containers[*].securityContext.runAsUser
     * - spec.containers[*].securityContext.runAsGroup
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
     * @return The os.
     */
    io.kubernetes.client.proto.V1.PodOS getOs();
    /**
     * <pre>
     * Specifies the OS of the containers in the pod.
     * Some pod and container fields are restricted if this is set.
     *
     * If the OS field is set to linux, the following fields must be unset:
     * -securityContext.windowsOptions
     *
     * If the OS field is set to windows, following fields must be unset:
     * - spec.hostPID
     * - spec.hostIPC
     * - spec.hostUsers
     * - spec.securityContext.appArmorProfile
     * - spec.securityContext.seLinuxOptions
     * - spec.securityContext.seccompProfile
     * - spec.securityContext.fsGroup
     * - spec.securityContext.fsGroupChangePolicy
     * - spec.securityContext.sysctls
     * - spec.shareProcessNamespace
     * - spec.securityContext.runAsUser
     * - spec.securityContext.runAsGroup
     * - spec.securityContext.supplementalGroups
     * - spec.containers[*].securityContext.appArmorProfile
     * - spec.containers[*].securityContext.seLinuxOptions
     * - spec.containers[*].securityContext.seccompProfile
     * - spec.containers[*].securityContext.capabilities
     * - spec.containers[*].securityContext.readOnlyRootFilesystem
     * - spec.containers[*].securityContext.privileged
     * - spec.containers[*].securityContext.allowPrivilegeEscalation
     * - spec.containers[*].securityContext.procMount
     * - spec.containers[*].securityContext.runAsUser
     * - spec.containers[*].securityContext.runAsGroup
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
     */
    io.kubernetes.client.proto.V1.PodOSOrBuilder getOsOrBuilder();

    /**
     * <pre>
     * Use the host's user namespace.
     * Optional: Default to true.
     * If set to true or not present, the pod will be run in the host user namespace, useful
     * for when the pod needs a feature only available to the host user namespace, such as
     * loading a kernel module with CAP_SYS_MODULE.
     * When set to false, a new userns is created for the pod. Setting false is useful for
     * mitigating container breakout vulnerabilities even allowing users to run their
     * containers as root without actually having root privileges on the host.
     * This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostUsers = 37;</code>
     * @return Whether the hostUsers field is set.
     */
    boolean hasHostUsers();
    /**
     * <pre>
     * Use the host's user namespace.
     * Optional: Default to true.
     * If set to true or not present, the pod will be run in the host user namespace, useful
     * for when the pod needs a feature only available to the host user namespace, such as
     * loading a kernel module with CAP_SYS_MODULE.
     * When set to false, a new userns is created for the pod. Setting false is useful for
     * mitigating container breakout vulnerabilities even allowing users to run their
     * containers as root without actually having root privileges on the host.
     * This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostUsers = 37;</code>
     * @return The hostUsers.
     */
    boolean getHostUsers();

    /**
     * <pre>
     * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
     * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
     * scheduler will not attempt to schedule the pod.
     *
     * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PodSchedulingGate> 
        getSchedulingGatesList();
    /**
     * <pre>
     * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
     * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
     * scheduler will not attempt to schedule the pod.
     *
     * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
     */
    io.kubernetes.client.proto.V1.PodSchedulingGate getSchedulingGates(int index);
    /**
     * <pre>
     * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
     * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
     * scheduler will not attempt to schedule the pod.
     *
     * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
     */
    int getSchedulingGatesCount();
    /**
     * <pre>
     * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
     * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
     * scheduler will not attempt to schedule the pod.
     *
     * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodSchedulingGateOrBuilder> 
        getSchedulingGatesOrBuilderList();
    /**
     * <pre>
     * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
     * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
     * scheduler will not attempt to schedule the pod.
     *
     * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
     */
    io.kubernetes.client.proto.V1.PodSchedulingGateOrBuilder getSchedulingGatesOrBuilder(
        int index);

    /**
     * <pre>
     * ResourceClaims defines which ResourceClaims must be allocated
     * and reserved before the Pod is allowed to start. The resources
     * will be made available to those containers which consume them
     * by name.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PodResourceClaim> 
        getResourceClaimsList();
    /**
     * <pre>
     * ResourceClaims defines which ResourceClaims must be allocated
     * and reserved before the Pod is allowed to start. The resources
     * will be made available to those containers which consume them
     * by name.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
     */
    io.kubernetes.client.proto.V1.PodResourceClaim getResourceClaims(int index);
    /**
     * <pre>
     * ResourceClaims defines which ResourceClaims must be allocated
     * and reserved before the Pod is allowed to start. The resources
     * will be made available to those containers which consume them
     * by name.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
     */
    int getResourceClaimsCount();
    /**
     * <pre>
     * ResourceClaims defines which ResourceClaims must be allocated
     * and reserved before the Pod is allowed to start. The resources
     * will be made available to those containers which consume them
     * by name.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodResourceClaimOrBuilder> 
        getResourceClaimsOrBuilderList();
    /**
     * <pre>
     * ResourceClaims defines which ResourceClaims must be allocated
     * and reserved before the Pod is allowed to start. The resources
     * will be made available to those containers which consume them
     * by name.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
     */
    io.kubernetes.client.proto.V1.PodResourceClaimOrBuilder getResourceClaimsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * PodSpec is a description of a pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodSpec}
   */
  public static final class PodSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodSpec)
      PodSpecOrBuilder {
  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= */ "",
        PodSpec.class.getName());
    }
    // Use PodSpec.newBuilder() to construct.
    private PodSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodSpec() {
      volumes_ = java.util.Collections.emptyList();
      initContainers_ = java.util.Collections.emptyList();
      containers_ = java.util.Collections.emptyList();
      ephemeralContainers_ = java.util.Collections.emptyList();
      restartPolicy_ = "";
      dnsPolicy_ = "";
      serviceAccountName_ = "";
      serviceAccount_ = "";
      nodeName_ = "";
      imagePullSecrets_ = java.util.Collections.emptyList();
      hostname_ = "";
      subdomain_ = "";
      schedulerName_ = "";
      tolerations_ = java.util.Collections.emptyList();
      hostAliases_ = java.util.Collections.emptyList();
      priorityClassName_ = "";
      readinessGates_ = java.util.Collections.emptyList();
      runtimeClassName_ = "";
      preemptionPolicy_ = "";
      topologySpreadConstraints_ = java.util.Collections.emptyList();
      schedulingGates_ = java.util.Collections.emptyList();
      resourceClaims_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSpec_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 7:
          return internalGetNodeSelector();
        case 32:
          return internalGetOverhead();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodSpec.class, io.kubernetes.client.proto.V1.PodSpec.Builder.class);
    }

    private int bitField0_;
    public static final int VOLUMES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.Volume> volumes_;
    /**
     * <pre>
     * List of volumes that can be mounted by containers belonging to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Volume> getVolumesList() {
      return volumes_;
    }
    /**
     * <pre>
     * List of volumes that can be mounted by containers belonging to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeOrBuilder> 
        getVolumesOrBuilderList() {
      return volumes_;
    }
    /**
     * <pre>
     * List of volumes that can be mounted by containers belonging to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
     */
    @java.lang.Override
    public int getVolumesCount() {
      return volumes_.size();
    }
    /**
     * <pre>
     * List of volumes that can be mounted by containers belonging to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Volume getVolumes(int index) {
      return volumes_.get(index);
    }
    /**
     * <pre>
     * List of volumes that can be mounted by containers belonging to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeOrBuilder getVolumesOrBuilder(
        int index) {
      return volumes_.get(index);
    }

    public static final int INITCONTAINERS_FIELD_NUMBER = 20;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.Container> initContainers_;
    /**
     * <pre>
     * List of initialization containers belonging to the pod.
     * Init containers are executed in order prior to containers being started. If any
     * init container fails, the pod is considered to have failed and is handled according
     * to its restartPolicy. The name for an init container or normal container must be
     * unique among all containers.
     * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
     * The resourceRequirements of an init container are taken into account during scheduling
     * by finding the highest request/limit for each resource type, and then using the max of
     * of that value or the sum of the normal containers. Limits are applied to init containers
     * in a similar fashion.
     * Init containers cannot currently be added or removed.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Container> getInitContainersList() {
      return initContainers_;
    }
    /**
     * <pre>
     * List of initialization containers belonging to the pod.
     * Init containers are executed in order prior to containers being started. If any
     * init container fails, the pod is considered to have failed and is handled according
     * to its restartPolicy. The name for an init container or normal container must be
     * unique among all containers.
     * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
     * The resourceRequirements of an init container are taken into account during scheduling
     * by finding the highest request/limit for each resource type, and then using the max of
     * of that value or the sum of the normal containers. Limits are applied to init containers
     * in a similar fashion.
     * Init containers cannot currently be added or removed.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerOrBuilder> 
        getInitContainersOrBuilderList() {
      return initContainers_;
    }
    /**
     * <pre>
     * List of initialization containers belonging to the pod.
     * Init containers are executed in order prior to containers being started. If any
     * init container fails, the pod is considered to have failed and is handled according
     * to its restartPolicy. The name for an init container or normal container must be
     * unique among all containers.
     * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
     * The resourceRequirements of an init container are taken into account during scheduling
     * by finding the highest request/limit for each resource type, and then using the max of
     * of that value or the sum of the normal containers. Limits are applied to init containers
     * in a similar fashion.
     * Init containers cannot currently be added or removed.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
     */
    @java.lang.Override
    public int getInitContainersCount() {
      return initContainers_.size();
    }
    /**
     * <pre>
     * List of initialization containers belonging to the pod.
     * Init containers are executed in order prior to containers being started. If any
     * init container fails, the pod is considered to have failed and is handled according
     * to its restartPolicy. The name for an init container or normal container must be
     * unique among all containers.
     * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
     * The resourceRequirements of an init container are taken into account during scheduling
     * by finding the highest request/limit for each resource type, and then using the max of
     * of that value or the sum of the normal containers. Limits are applied to init containers
     * in a similar fashion.
     * Init containers cannot currently be added or removed.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Container getInitContainers(int index) {
      return initContainers_.get(index);
    }
    /**
     * <pre>
     * List of initialization containers belonging to the pod.
     * Init containers are executed in order prior to containers being started. If any
     * init container fails, the pod is considered to have failed and is handled according
     * to its restartPolicy. The name for an init container or normal container must be
     * unique among all containers.
     * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
     * The resourceRequirements of an init container are taken into account during scheduling
     * by finding the highest request/limit for each resource type, and then using the max of
     * of that value or the sum of the normal containers. Limits are applied to init containers
     * in a similar fashion.
     * Init containers cannot currently be added or removed.
     * Cannot be updated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerOrBuilder getInitContainersOrBuilder(
        int index) {
      return initContainers_.get(index);
    }

    public static final int CONTAINERS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.Container> containers_;
    /**
     * <pre>
     * List of containers belonging to the pod.
     * Containers cannot currently be added or removed.
     * There must be at least one container in a Pod.
     * Cannot be updated.
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Container> getContainersList() {
      return containers_;
    }
    /**
     * <pre>
     * List of containers belonging to the pod.
     * Containers cannot currently be added or removed.
     * There must be at least one container in a Pod.
     * Cannot be updated.
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerOrBuilder> 
        getContainersOrBuilderList() {
      return containers_;
    }
    /**
     * <pre>
     * List of containers belonging to the pod.
     * Containers cannot currently be added or removed.
     * There must be at least one container in a Pod.
     * Cannot be updated.
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
     */
    @java.lang.Override
    public int getContainersCount() {
      return containers_.size();
    }
    /**
     * <pre>
     * List of containers belonging to the pod.
     * Containers cannot currently be added or removed.
     * There must be at least one container in a Pod.
     * Cannot be updated.
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Container getContainers(int index) {
      return containers_.get(index);
    }
    /**
     * <pre>
     * List of containers belonging to the pod.
     * Containers cannot currently be added or removed.
     * There must be at least one container in a Pod.
     * Cannot be updated.
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerOrBuilder getContainersOrBuilder(
        int index) {
      return containers_.get(index);
    }

    public static final int EPHEMERALCONTAINERS_FIELD_NUMBER = 34;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.EphemeralContainer> ephemeralContainers_;
    /**
     * <pre>
     * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     * pod to perform user-initiated actions such as debugging. This list cannot be specified when
     * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
     * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.EphemeralContainer> getEphemeralContainersList() {
      return ephemeralContainers_;
    }
    /**
     * <pre>
     * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     * pod to perform user-initiated actions such as debugging. This list cannot be specified when
     * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
     * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.EphemeralContainerOrBuilder> 
        getEphemeralContainersOrBuilderList() {
      return ephemeralContainers_;
    }
    /**
     * <pre>
     * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     * pod to perform user-initiated actions such as debugging. This list cannot be specified when
     * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
     * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
     */
    @java.lang.Override
    public int getEphemeralContainersCount() {
      return ephemeralContainers_.size();
    }
    /**
     * <pre>
     * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     * pod to perform user-initiated actions such as debugging. This list cannot be specified when
     * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
     * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EphemeralContainer getEphemeralContainers(int index) {
      return ephemeralContainers_.get(index);
    }
    /**
     * <pre>
     * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
     * pod to perform user-initiated actions such as debugging. This list cannot be specified when
     * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
     * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EphemeralContainerOrBuilder getEphemeralContainersOrBuilder(
        int index) {
      return ephemeralContainers_.get(index);
    }

    public static final int RESTARTPOLICY_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object restartPolicy_ = "";
    /**
     * <pre>
     * Restart policy for all containers within the pod.
     * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
     * Default to Always.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 3;</code>
     * @return Whether the restartPolicy field is set.
     */
    @java.lang.Override
    public boolean hasRestartPolicy() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Restart policy for all containers within the pod.
     * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
     * Default to Always.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 3;</code>
     * @return The restartPolicy.
     */
    @java.lang.Override
    public java.lang.String getRestartPolicy() {
      java.lang.Object ref = restartPolicy_;
      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()) {
          restartPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Restart policy for all containers within the pod.
     * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
     * Default to Always.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
     * +optional
     * </pre>
     *
     * <code>optional string restartPolicy = 3;</code>
     * @return The bytes for restartPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRestartPolicyBytes() {
      java.lang.Object ref = restartPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        restartPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TERMINATIONGRACEPERIODSECONDS_FIELD_NUMBER = 4;
    private long terminationGracePeriodSeconds_ = 0L;
    /**
     * <pre>
     * Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
     * Value must be non-negative integer. The value zero indicates stop immediately via
     * the kill signal (no opportunity to shut down).
     * If this value is nil, the default grace period will be used instead.
     * The grace period is the duration in seconds after the processes running in the pod are sent
     * a termination signal and the time when the processes are forcibly halted with a kill signal.
     * Set this value longer than the expected cleanup time for your process.
     * Defaults to 30 seconds.
     * +optional
     * </pre>
     *
     * <code>optional int64 terminationGracePeriodSeconds = 4;</code>
     * @return Whether the terminationGracePeriodSeconds field is set.
     */
    @java.lang.Override
    public boolean hasTerminationGracePeriodSeconds() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
     * Value must be non-negative integer. The value zero indicates stop immediately via
     * the kill signal (no opportunity to shut down).
     * If this value is nil, the default grace period will be used instead.
     * The grace period is the duration in seconds after the processes running in the pod are sent
     * a termination signal and the time when the processes are forcibly halted with a kill signal.
     * Set this value longer than the expected cleanup time for your process.
     * Defaults to 30 seconds.
     * +optional
     * </pre>
     *
     * <code>optional int64 terminationGracePeriodSeconds = 4;</code>
     * @return The terminationGracePeriodSeconds.
     */
    @java.lang.Override
    public long getTerminationGracePeriodSeconds() {
      return terminationGracePeriodSeconds_;
    }

    public static final int ACTIVEDEADLINESECONDS_FIELD_NUMBER = 5;
    private long activeDeadlineSeconds_ = 0L;
    /**
     * <pre>
     * Optional duration in seconds the pod may be active on the node relative to
     * StartTime before the system will actively try to mark it failed and kill associated containers.
     * Value must be a positive integer.
     * +optional
     * </pre>
     *
     * <code>optional int64 activeDeadlineSeconds = 5;</code>
     * @return Whether the activeDeadlineSeconds field is set.
     */
    @java.lang.Override
    public boolean hasActiveDeadlineSeconds() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Optional duration in seconds the pod may be active on the node relative to
     * StartTime before the system will actively try to mark it failed and kill associated containers.
     * Value must be a positive integer.
     * +optional
     * </pre>
     *
     * <code>optional int64 activeDeadlineSeconds = 5;</code>
     * @return The activeDeadlineSeconds.
     */
    @java.lang.Override
    public long getActiveDeadlineSeconds() {
      return activeDeadlineSeconds_;
    }

    public static final int DNSPOLICY_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object dnsPolicy_ = "";
    /**
     * <pre>
     * Set DNS policy for the pod.
     * Defaults to "ClusterFirst".
     * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
     * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
     * To have DNS options set along with hostNetwork, you have to specify DNS policy
     * explicitly to 'ClusterFirstWithHostNet'.
     * +optional
     * </pre>
     *
     * <code>optional string dnsPolicy = 6;</code>
     * @return Whether the dnsPolicy field is set.
     */
    @java.lang.Override
    public boolean hasDnsPolicy() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Set DNS policy for the pod.
     * Defaults to "ClusterFirst".
     * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
     * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
     * To have DNS options set along with hostNetwork, you have to specify DNS policy
     * explicitly to 'ClusterFirstWithHostNet'.
     * +optional
     * </pre>
     *
     * <code>optional string dnsPolicy = 6;</code>
     * @return The dnsPolicy.
     */
    @java.lang.Override
    public java.lang.String getDnsPolicy() {
      java.lang.Object ref = dnsPolicy_;
      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()) {
          dnsPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Set DNS policy for the pod.
     * Defaults to "ClusterFirst".
     * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
     * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
     * To have DNS options set along with hostNetwork, you have to specify DNS policy
     * explicitly to 'ClusterFirstWithHostNet'.
     * +optional
     * </pre>
     *
     * <code>optional string dnsPolicy = 6;</code>
     * @return The bytes for dnsPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDnsPolicyBytes() {
      java.lang.Object ref = dnsPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dnsPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NODESELECTOR_FIELD_NUMBER = 7;
    private static final class NodeSelectorDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSpec_NodeSelectorEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> nodeSelector_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetNodeSelector() {
      if (nodeSelector_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            NodeSelectorDefaultEntryHolder.defaultEntry);
      }
      return nodeSelector_;
    }
    public int getNodeSelectorCount() {
      return internalGetNodeSelector().getMap().size();
    }
    /**
     * <pre>
     * NodeSelector is a selector which must be true for the pod to fit on a node.
     * Selector which must match a node's labels for the pod to be scheduled on that node.
     * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
     */
    @java.lang.Override
    public boolean containsNodeSelector(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetNodeSelector().getMap().containsKey(key);
    }
    /**
     * Use {@link #getNodeSelectorMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getNodeSelector() {
      return getNodeSelectorMap();
    }
    /**
     * <pre>
     * NodeSelector is a selector which must be true for the pod to fit on a node.
     * Selector which must match a node's labels for the pod to be scheduled on that node.
     * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getNodeSelectorMap() {
      return internalGetNodeSelector().getMap();
    }
    /**
     * <pre>
     * NodeSelector is a selector which must be true for the pod to fit on a node.
     * Selector which must match a node's labels for the pod to be scheduled on that node.
     * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getNodeSelectorOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetNodeSelector().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * NodeSelector is a selector which must be true for the pod to fit on a node.
     * Selector which must match a node's labels for the pod to be scheduled on that node.
     * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
     */
    @java.lang.Override
    public java.lang.String getNodeSelectorOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetNodeSelector().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int SERVICEACCOUNTNAME_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object serviceAccountName_ = "";
    /**
     * <pre>
     * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccountName = 8;</code>
     * @return Whether the serviceAccountName field is set.
     */
    @java.lang.Override
    public boolean hasServiceAccountName() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccountName = 8;</code>
     * @return The serviceAccountName.
     */
    @java.lang.Override
    public java.lang.String getServiceAccountName() {
      java.lang.Object ref = serviceAccountName_;
      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()) {
          serviceAccountName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccountName = 8;</code>
     * @return The bytes for serviceAccountName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getServiceAccountNameBytes() {
      java.lang.Object ref = serviceAccountName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        serviceAccountName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SERVICEACCOUNT_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object serviceAccount_ = "";
    /**
     * <pre>
     * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
     * Deprecated: Use serviceAccountName instead.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccount = 9;</code>
     * @return Whether the serviceAccount field is set.
     */
    @java.lang.Override
    public boolean hasServiceAccount() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
     * Deprecated: Use serviceAccountName instead.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccount = 9;</code>
     * @return The serviceAccount.
     */
    @java.lang.Override
    public java.lang.String getServiceAccount() {
      java.lang.Object ref = serviceAccount_;
      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()) {
          serviceAccount_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
     * Deprecated: Use serviceAccountName instead.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional string serviceAccount = 9;</code>
     * @return The bytes for serviceAccount.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getServiceAccountBytes() {
      java.lang.Object ref = serviceAccount_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        serviceAccount_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int AUTOMOUNTSERVICEACCOUNTTOKEN_FIELD_NUMBER = 21;
    private boolean automountServiceAccountToken_ = false;
    /**
     * <pre>
     * AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
     * +optional
     * </pre>
     *
     * <code>optional bool automountServiceAccountToken = 21;</code>
     * @return Whether the automountServiceAccountToken field is set.
     */
    @java.lang.Override
    public boolean hasAutomountServiceAccountToken() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
     * +optional
     * </pre>
     *
     * <code>optional bool automountServiceAccountToken = 21;</code>
     * @return The automountServiceAccountToken.
     */
    @java.lang.Override
    public boolean getAutomountServiceAccountToken() {
      return automountServiceAccountToken_;
    }

    public static final int NODENAME_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private volatile java.lang.Object nodeName_ = "";
    /**
     * <pre>
     * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
     * the scheduler simply schedules this pod onto that node, assuming that it fits resource
     * requirements.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 10;</code>
     * @return Whether the nodeName field is set.
     */
    @java.lang.Override
    public boolean hasNodeName() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
     * the scheduler simply schedules this pod onto that node, assuming that it fits resource
     * requirements.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 10;</code>
     * @return The nodeName.
     */
    @java.lang.Override
    public java.lang.String getNodeName() {
      java.lang.Object ref = nodeName_;
      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()) {
          nodeName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
     * the scheduler simply schedules this pod onto that node, assuming that it fits resource
     * requirements.
     * +optional
     * </pre>
     *
     * <code>optional string nodeName = 10;</code>
     * @return The bytes for nodeName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNodeNameBytes() {
      java.lang.Object ref = nodeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nodeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HOSTNETWORK_FIELD_NUMBER = 11;
    private boolean hostNetwork_ = false;
    /**
     * <pre>
     * Host networking requested for this pod. Use the host's network namespace.
     * If this option is set, the ports that will be used must be specified.
     * Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostNetwork = 11;</code>
     * @return Whether the hostNetwork field is set.
     */
    @java.lang.Override
    public boolean hasHostNetwork() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * Host networking requested for this pod. Use the host's network namespace.
     * If this option is set, the ports that will be used must be specified.
     * Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostNetwork = 11;</code>
     * @return The hostNetwork.
     */
    @java.lang.Override
    public boolean getHostNetwork() {
      return hostNetwork_;
    }

    public static final int HOSTPID_FIELD_NUMBER = 12;
    private boolean hostPID_ = false;
    /**
     * <pre>
     * Use the host's pid namespace.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostPID = 12;</code>
     * @return Whether the hostPID field is set.
     */
    @java.lang.Override
    public boolean hasHostPID() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * Use the host's pid namespace.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostPID = 12;</code>
     * @return The hostPID.
     */
    @java.lang.Override
    public boolean getHostPID() {
      return hostPID_;
    }

    public static final int HOSTIPC_FIELD_NUMBER = 13;
    private boolean hostIPC_ = false;
    /**
     * <pre>
     * Use the host's ipc namespace.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostIPC = 13;</code>
     * @return Whether the hostIPC field is set.
     */
    @java.lang.Override
    public boolean hasHostIPC() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * Use the host's ipc namespace.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostIPC = 13;</code>
     * @return The hostIPC.
     */
    @java.lang.Override
    public boolean getHostIPC() {
      return hostIPC_;
    }

    public static final int SHAREPROCESSNAMESPACE_FIELD_NUMBER = 27;
    private boolean shareProcessNamespace_ = false;
    /**
     * <pre>
     * Share a single process namespace between all of the containers in a pod.
     * When this is set containers will be able to view and signal processes from other containers
     * in the same pod, and the first process in each container will not be assigned PID 1.
     * HostPID and ShareProcessNamespace cannot both be set.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool shareProcessNamespace = 27;</code>
     * @return Whether the shareProcessNamespace field is set.
     */
    @java.lang.Override
    public boolean hasShareProcessNamespace() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * Share a single process namespace between all of the containers in a pod.
     * When this is set containers will be able to view and signal processes from other containers
     * in the same pod, and the first process in each container will not be assigned PID 1.
     * HostPID and ShareProcessNamespace cannot both be set.
     * Optional: Default to false.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool shareProcessNamespace = 27;</code>
     * @return The shareProcessNamespace.
     */
    @java.lang.Override
    public boolean getShareProcessNamespace() {
      return shareProcessNamespace_;
    }

    public static final int SECURITYCONTEXT_FIELD_NUMBER = 14;
    private io.kubernetes.client.proto.V1.PodSecurityContext securityContext_;
    /**
     * <pre>
     * SecurityContext holds pod-level security attributes and common container settings.
     * Optional: Defaults to empty.  See type description for default values of each field.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
     * @return Whether the securityContext field is set.
     */
    @java.lang.Override
    public boolean hasSecurityContext() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <pre>
     * SecurityContext holds pod-level security attributes and common container settings.
     * Optional: Defaults to empty.  See type description for default values of each field.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
     * @return The securityContext.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSecurityContext getSecurityContext() {
      return securityContext_ == null ? io.kubernetes.client.proto.V1.PodSecurityContext.getDefaultInstance() : securityContext_;
    }
    /**
     * <pre>
     * SecurityContext holds pod-level security attributes and common container settings.
     * Optional: Defaults to empty.  See type description for default values of each field.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSecurityContextOrBuilder getSecurityContextOrBuilder() {
      return securityContext_ == null ? io.kubernetes.client.proto.V1.PodSecurityContext.getDefaultInstance() : securityContext_;
    }

    public static final int IMAGEPULLSECRETS_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference> imagePullSecrets_;
    /**
     * <pre>
     * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
     * If specified, these secrets will be passed to individual puller implementations for them to use.
     * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference> getImagePullSecretsList() {
      return imagePullSecrets_;
    }
    /**
     * <pre>
     * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
     * If specified, these secrets will be passed to individual puller implementations for them to use.
     * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
        getImagePullSecretsOrBuilderList() {
      return imagePullSecrets_;
    }
    /**
     * <pre>
     * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
     * If specified, these secrets will be passed to individual puller implementations for them to use.
     * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
     */
    @java.lang.Override
    public int getImagePullSecretsCount() {
      return imagePullSecrets_.size();
    }
    /**
     * <pre>
     * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
     * If specified, these secrets will be passed to individual puller implementations for them to use.
     * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getImagePullSecrets(int index) {
      return imagePullSecrets_.get(index);
    }
    /**
     * <pre>
     * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
     * If specified, these secrets will be passed to individual puller implementations for them to use.
     * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getImagePullSecretsOrBuilder(
        int index) {
      return imagePullSecrets_.get(index);
    }

    public static final int HOSTNAME_FIELD_NUMBER = 16;
    @SuppressWarnings("serial")
    private volatile java.lang.Object hostname_ = "";
    /**
     * <pre>
     * Specifies the hostname of the Pod
     * If not specified, the pod's hostname will be set to a system-defined value.
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 16;</code>
     * @return Whether the hostname field is set.
     */
    @java.lang.Override
    public boolean hasHostname() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     * Specifies the hostname of the Pod
     * If not specified, the pod's hostname will be set to a system-defined value.
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 16;</code>
     * @return The hostname.
     */
    @java.lang.Override
    public java.lang.String getHostname() {
      java.lang.Object ref = hostname_;
      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()) {
          hostname_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Specifies the hostname of the Pod
     * If not specified, the pod's hostname will be set to a system-defined value.
     * +optional
     * </pre>
     *
     * <code>optional string hostname = 16;</code>
     * @return The bytes for hostname.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHostnameBytes() {
      java.lang.Object ref = hostname_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hostname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SUBDOMAIN_FIELD_NUMBER = 17;
    @SuppressWarnings("serial")
    private volatile java.lang.Object subdomain_ = "";
    /**
     * <pre>
     * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
     * If not specified, the pod will not have a domainname at all.
     * +optional
     * </pre>
     *
     * <code>optional string subdomain = 17;</code>
     * @return Whether the subdomain field is set.
     */
    @java.lang.Override
    public boolean hasSubdomain() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <pre>
     * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
     * If not specified, the pod will not have a domainname at all.
     * +optional
     * </pre>
     *
     * <code>optional string subdomain = 17;</code>
     * @return The subdomain.
     */
    @java.lang.Override
    public java.lang.String getSubdomain() {
      java.lang.Object ref = subdomain_;
      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()) {
          subdomain_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
     * If not specified, the pod will not have a domainname at all.
     * +optional
     * </pre>
     *
     * <code>optional string subdomain = 17;</code>
     * @return The bytes for subdomain.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSubdomainBytes() {
      java.lang.Object ref = subdomain_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        subdomain_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int AFFINITY_FIELD_NUMBER = 18;
    private io.kubernetes.client.proto.V1.Affinity affinity_;
    /**
     * <pre>
     * If specified, the pod's scheduling constraints
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
     * @return Whether the affinity field is set.
     */
    @java.lang.Override
    public boolean hasAffinity() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <pre>
     * If specified, the pod's scheduling constraints
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
     * @return The affinity.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Affinity getAffinity() {
      return affinity_ == null ? io.kubernetes.client.proto.V1.Affinity.getDefaultInstance() : affinity_;
    }
    /**
     * <pre>
     * If specified, the pod's scheduling constraints
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AffinityOrBuilder getAffinityOrBuilder() {
      return affinity_ == null ? io.kubernetes.client.proto.V1.Affinity.getDefaultInstance() : affinity_;
    }

    public static final int SCHEDULERNAME_FIELD_NUMBER = 19;
    @SuppressWarnings("serial")
    private volatile java.lang.Object schedulerName_ = "";
    /**
     * <pre>
     * If specified, the pod will be dispatched by specified scheduler.
     * If not specified, the pod will be dispatched by default scheduler.
     * +optional
     * </pre>
     *
     * <code>optional string schedulerName = 19;</code>
     * @return Whether the schedulerName field is set.
     */
    @java.lang.Override
    public boolean hasSchedulerName() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <pre>
     * If specified, the pod will be dispatched by specified scheduler.
     * If not specified, the pod will be dispatched by default scheduler.
     * +optional
     * </pre>
     *
     * <code>optional string schedulerName = 19;</code>
     * @return The schedulerName.
     */
    @java.lang.Override
    public java.lang.String getSchedulerName() {
      java.lang.Object ref = schedulerName_;
      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()) {
          schedulerName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * If specified, the pod will be dispatched by specified scheduler.
     * If not specified, the pod will be dispatched by default scheduler.
     * +optional
     * </pre>
     *
     * <code>optional string schedulerName = 19;</code>
     * @return The bytes for schedulerName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSchedulerNameBytes() {
      java.lang.Object ref = schedulerName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        schedulerName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TOLERATIONS_FIELD_NUMBER = 22;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.Toleration> tolerations_;
    /**
     * <pre>
     * If specified, the pod's tolerations.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Toleration> getTolerationsList() {
      return tolerations_;
    }
    /**
     * <pre>
     * If specified, the pod's tolerations.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.TolerationOrBuilder> 
        getTolerationsOrBuilderList() {
      return tolerations_;
    }
    /**
     * <pre>
     * If specified, the pod's tolerations.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
     */
    @java.lang.Override
    public int getTolerationsCount() {
      return tolerations_.size();
    }
    /**
     * <pre>
     * If specified, the pod's tolerations.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Toleration getTolerations(int index) {
      return tolerations_.get(index);
    }
    /**
     * <pre>
     * If specified, the pod's tolerations.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TolerationOrBuilder getTolerationsOrBuilder(
        int index) {
      return tolerations_.get(index);
    }

    public static final int HOSTALIASES_FIELD_NUMBER = 23;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.HostAlias> hostAliases_;
    /**
     * <pre>
     * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
     * file if specified.
     * +optional
     * +patchMergeKey=ip
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.HostAlias> getHostAliasesList() {
      return hostAliases_;
    }
    /**
     * <pre>
     * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
     * file if specified.
     * +optional
     * +patchMergeKey=ip
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.HostAliasOrBuilder> 
        getHostAliasesOrBuilderList() {
      return hostAliases_;
    }
    /**
     * <pre>
     * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
     * file if specified.
     * +optional
     * +patchMergeKey=ip
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
     */
    @java.lang.Override
    public int getHostAliasesCount() {
      return hostAliases_.size();
    }
    /**
     * <pre>
     * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
     * file if specified.
     * +optional
     * +patchMergeKey=ip
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostAlias getHostAliases(int index) {
      return hostAliases_.get(index);
    }
    /**
     * <pre>
     * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
     * file if specified.
     * +optional
     * +patchMergeKey=ip
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostAliasOrBuilder getHostAliasesOrBuilder(
        int index) {
      return hostAliases_.get(index);
    }

    public static final int PRIORITYCLASSNAME_FIELD_NUMBER = 24;
    @SuppressWarnings("serial")
    private volatile java.lang.Object priorityClassName_ = "";
    /**
     * <pre>
     * If specified, indicates the pod's priority. "system-node-critical" and
     * "system-cluster-critical" are two special keywords which indicate the
     * highest priorities with the former being the highest priority. Any other
     * name must be defined by creating a PriorityClass object with that name.
     * If not specified, the pod priority will be default or zero if there is no
     * default.
     * +optional
     * </pre>
     *
     * <code>optional string priorityClassName = 24;</code>
     * @return Whether the priorityClassName field is set.
     */
    @java.lang.Override
    public boolean hasPriorityClassName() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <pre>
     * If specified, indicates the pod's priority. "system-node-critical" and
     * "system-cluster-critical" are two special keywords which indicate the
     * highest priorities with the former being the highest priority. Any other
     * name must be defined by creating a PriorityClass object with that name.
     * If not specified, the pod priority will be default or zero if there is no
     * default.
     * +optional
     * </pre>
     *
     * <code>optional string priorityClassName = 24;</code>
     * @return The priorityClassName.
     */
    @java.lang.Override
    public java.lang.String getPriorityClassName() {
      java.lang.Object ref = priorityClassName_;
      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()) {
          priorityClassName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * If specified, indicates the pod's priority. "system-node-critical" and
     * "system-cluster-critical" are two special keywords which indicate the
     * highest priorities with the former being the highest priority. Any other
     * name must be defined by creating a PriorityClass object with that name.
     * If not specified, the pod priority will be default or zero if there is no
     * default.
     * +optional
     * </pre>
     *
     * <code>optional string priorityClassName = 24;</code>
     * @return The bytes for priorityClassName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPriorityClassNameBytes() {
      java.lang.Object ref = priorityClassName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        priorityClassName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PRIORITY_FIELD_NUMBER = 25;
    private int priority_ = 0;
    /**
     * <pre>
     * The priority value. Various system components use this field to find the
     * priority of the pod. When Priority Admission Controller is enabled, it
     * prevents users from setting this field. The admission controller populates
     * this field from PriorityClassName.
     * The higher the value, the higher the priority.
     * +optional
     * </pre>
     *
     * <code>optional int32 priority = 25;</code>
     * @return Whether the priority field is set.
     */
    @java.lang.Override
    public boolean hasPriority() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <pre>
     * The priority value. Various system components use this field to find the
     * priority of the pod. When Priority Admission Controller is enabled, it
     * prevents users from setting this field. The admission controller populates
     * this field from PriorityClassName.
     * The higher the value, the higher the priority.
     * +optional
     * </pre>
     *
     * <code>optional int32 priority = 25;</code>
     * @return The priority.
     */
    @java.lang.Override
    public int getPriority() {
      return priority_;
    }

    public static final int DNSCONFIG_FIELD_NUMBER = 26;
    private io.kubernetes.client.proto.V1.PodDNSConfig dnsConfig_;
    /**
     * <pre>
     * Specifies the DNS parameters of a pod.
     * Parameters specified here will be merged to the generated DNS
     * configuration based on DNSPolicy.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
     * @return Whether the dnsConfig field is set.
     */
    @java.lang.Override
    public boolean hasDnsConfig() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * <pre>
     * Specifies the DNS parameters of a pod.
     * Parameters specified here will be merged to the generated DNS
     * configuration based on DNSPolicy.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
     * @return The dnsConfig.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodDNSConfig getDnsConfig() {
      return dnsConfig_ == null ? io.kubernetes.client.proto.V1.PodDNSConfig.getDefaultInstance() : dnsConfig_;
    }
    /**
     * <pre>
     * Specifies the DNS parameters of a pod.
     * Parameters specified here will be merged to the generated DNS
     * configuration based on DNSPolicy.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodDNSConfigOrBuilder getDnsConfigOrBuilder() {
      return dnsConfig_ == null ? io.kubernetes.client.proto.V1.PodDNSConfig.getDefaultInstance() : dnsConfig_;
    }

    public static final int READINESSGATES_FIELD_NUMBER = 28;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PodReadinessGate> readinessGates_;
    /**
     * <pre>
     * If specified, all readiness gates will be evaluated for pod readiness.
     * A pod is ready when all its containers are ready AND
     * all conditions specified in the readiness gates have status equal to "True"
     * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PodReadinessGate> getReadinessGatesList() {
      return readinessGates_;
    }
    /**
     * <pre>
     * If specified, all readiness gates will be evaluated for pod readiness.
     * A pod is ready when all its containers are ready AND
     * all conditions specified in the readiness gates have status equal to "True"
     * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodReadinessGateOrBuilder> 
        getReadinessGatesOrBuilderList() {
      return readinessGates_;
    }
    /**
     * <pre>
     * If specified, all readiness gates will be evaluated for pod readiness.
     * A pod is ready when all its containers are ready AND
     * all conditions specified in the readiness gates have status equal to "True"
     * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
     */
    @java.lang.Override
    public int getReadinessGatesCount() {
      return readinessGates_.size();
    }
    /**
     * <pre>
     * If specified, all readiness gates will be evaluated for pod readiness.
     * A pod is ready when all its containers are ready AND
     * all conditions specified in the readiness gates have status equal to "True"
     * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodReadinessGate getReadinessGates(int index) {
      return readinessGates_.get(index);
    }
    /**
     * <pre>
     * If specified, all readiness gates will be evaluated for pod readiness.
     * A pod is ready when all its containers are ready AND
     * all conditions specified in the readiness gates have status equal to "True"
     * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodReadinessGateOrBuilder getReadinessGatesOrBuilder(
        int index) {
      return readinessGates_.get(index);
    }

    public static final int RUNTIMECLASSNAME_FIELD_NUMBER = 29;
    @SuppressWarnings("serial")
    private volatile java.lang.Object runtimeClassName_ = "";
    /**
     * <pre>
     * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
     * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
     * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
     * empty definition that uses the default runtime handler.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
     * +optional
     * </pre>
     *
     * <code>optional string runtimeClassName = 29;</code>
     * @return Whether the runtimeClassName field is set.
     */
    @java.lang.Override
    public boolean hasRuntimeClassName() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * <pre>
     * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
     * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
     * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
     * empty definition that uses the default runtime handler.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
     * +optional
     * </pre>
     *
     * <code>optional string runtimeClassName = 29;</code>
     * @return The runtimeClassName.
     */
    @java.lang.Override
    public java.lang.String getRuntimeClassName() {
      java.lang.Object ref = runtimeClassName_;
      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()) {
          runtimeClassName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
     * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
     * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
     * empty definition that uses the default runtime handler.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
     * +optional
     * </pre>
     *
     * <code>optional string runtimeClassName = 29;</code>
     * @return The bytes for runtimeClassName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRuntimeClassNameBytes() {
      java.lang.Object ref = runtimeClassName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        runtimeClassName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENABLESERVICELINKS_FIELD_NUMBER = 30;
    private boolean enableServiceLinks_ = false;
    /**
     * <pre>
     * EnableServiceLinks indicates whether information about services should be injected into pod's
     * environment variables, matching the syntax of Docker links.
     * Optional: Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool enableServiceLinks = 30;</code>
     * @return Whether the enableServiceLinks field is set.
     */
    @java.lang.Override
    public boolean hasEnableServiceLinks() {
      return ((bitField0_ & 0x00200000) != 0);
    }
    /**
     * <pre>
     * EnableServiceLinks indicates whether information about services should be injected into pod's
     * environment variables, matching the syntax of Docker links.
     * Optional: Defaults to true.
     * +optional
     * </pre>
     *
     * <code>optional bool enableServiceLinks = 30;</code>
     * @return The enableServiceLinks.
     */
    @java.lang.Override
    public boolean getEnableServiceLinks() {
      return enableServiceLinks_;
    }

    public static final int PREEMPTIONPOLICY_FIELD_NUMBER = 31;
    @SuppressWarnings("serial")
    private volatile java.lang.Object preemptionPolicy_ = "";
    /**
     * <pre>
     * PreemptionPolicy is the Policy for preempting pods with lower priority.
     * One of Never, PreemptLowerPriority.
     * Defaults to PreemptLowerPriority if unset.
     * +optional
     * </pre>
     *
     * <code>optional string preemptionPolicy = 31;</code>
     * @return Whether the preemptionPolicy field is set.
     */
    @java.lang.Override
    public boolean hasPreemptionPolicy() {
      return ((bitField0_ & 0x00400000) != 0);
    }
    /**
     * <pre>
     * PreemptionPolicy is the Policy for preempting pods with lower priority.
     * One of Never, PreemptLowerPriority.
     * Defaults to PreemptLowerPriority if unset.
     * +optional
     * </pre>
     *
     * <code>optional string preemptionPolicy = 31;</code>
     * @return The preemptionPolicy.
     */
    @java.lang.Override
    public java.lang.String getPreemptionPolicy() {
      java.lang.Object ref = preemptionPolicy_;
      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()) {
          preemptionPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * PreemptionPolicy is the Policy for preempting pods with lower priority.
     * One of Never, PreemptLowerPriority.
     * Defaults to PreemptLowerPriority if unset.
     * +optional
     * </pre>
     *
     * <code>optional string preemptionPolicy = 31;</code>
     * @return The bytes for preemptionPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPreemptionPolicyBytes() {
      java.lang.Object ref = preemptionPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        preemptionPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OVERHEAD_FIELD_NUMBER = 32;
    private static final class OverheadDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSpec_OverheadEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> overhead_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetOverhead() {
      if (overhead_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            OverheadDefaultEntryHolder.defaultEntry);
      }
      return overhead_;
    }
    public int getOverheadCount() {
      return internalGetOverhead().getMap().size();
    }
    /**
     * <pre>
     * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
     * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
     * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
     * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
     * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
     * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
     */
    @java.lang.Override
    public boolean containsOverhead(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetOverhead().getMap().containsKey(key);
    }
    /**
     * Use {@link #getOverheadMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getOverhead() {
      return getOverheadMap();
    }
    /**
     * <pre>
     * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
     * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
     * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
     * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
     * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
     * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getOverheadMap() {
      return internalGetOverhead().getMap();
    }
    /**
     * <pre>
     * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
     * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
     * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
     * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
     * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
     * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getOverheadOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetOverhead().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
     * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
     * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
     * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
     * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
     * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
     * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getOverheadOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetOverhead().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int TOPOLOGYSPREADCONSTRAINTS_FIELD_NUMBER = 33;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.TopologySpreadConstraint> topologySpreadConstraints_;
    /**
     * <pre>
     * TopologySpreadConstraints describes how a group of pods ought to spread across topology
     * domains. Scheduler will schedule pods in a way which abides by the constraints.
     * All topologySpreadConstraints are ANDed.
     * +optional
     * +patchMergeKey=topologyKey
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=topologyKey
     * +listMapKey=whenUnsatisfiable
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.TopologySpreadConstraint> getTopologySpreadConstraintsList() {
      return topologySpreadConstraints_;
    }
    /**
     * <pre>
     * TopologySpreadConstraints describes how a group of pods ought to spread across topology
     * domains. Scheduler will schedule pods in a way which abides by the constraints.
     * All topologySpreadConstraints are ANDed.
     * +optional
     * +patchMergeKey=topologyKey
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=topologyKey
     * +listMapKey=whenUnsatisfiable
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.TopologySpreadConstraintOrBuilder> 
        getTopologySpreadConstraintsOrBuilderList() {
      return topologySpreadConstraints_;
    }
    /**
     * <pre>
     * TopologySpreadConstraints describes how a group of pods ought to spread across topology
     * domains. Scheduler will schedule pods in a way which abides by the constraints.
     * All topologySpreadConstraints are ANDed.
     * +optional
     * +patchMergeKey=topologyKey
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=topologyKey
     * +listMapKey=whenUnsatisfiable
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
     */
    @java.lang.Override
    public int getTopologySpreadConstraintsCount() {
      return topologySpreadConstraints_.size();
    }
    /**
     * <pre>
     * TopologySpreadConstraints describes how a group of pods ought to spread across topology
     * domains. Scheduler will schedule pods in a way which abides by the constraints.
     * All topologySpreadConstraints are ANDed.
     * +optional
     * +patchMergeKey=topologyKey
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=topologyKey
     * +listMapKey=whenUnsatisfiable
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TopologySpreadConstraint getTopologySpreadConstraints(int index) {
      return topologySpreadConstraints_.get(index);
    }
    /**
     * <pre>
     * TopologySpreadConstraints describes how a group of pods ought to spread across topology
     * domains. Scheduler will schedule pods in a way which abides by the constraints.
     * All topologySpreadConstraints are ANDed.
     * +optional
     * +patchMergeKey=topologyKey
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=topologyKey
     * +listMapKey=whenUnsatisfiable
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TopologySpreadConstraintOrBuilder getTopologySpreadConstraintsOrBuilder(
        int index) {
      return topologySpreadConstraints_.get(index);
    }

    public static final int SETHOSTNAMEASFQDN_FIELD_NUMBER = 35;
    private boolean setHostnameAsFQDN_ = false;
    /**
     * <pre>
     * If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).
     * In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).
     * In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE&#92;&#92;SYSTEM&#92;&#92;CurrentControlSet&#92;&#92;Services&#92;&#92;Tcpip&#92;&#92;Parameters to FQDN.
     * If a pod does not have FQDN, this has no effect.
     * Default to false.
     * +optional
     * </pre>
     *
     * <code>optional bool setHostnameAsFQDN = 35;</code>
     * @return Whether the setHostnameAsFQDN field is set.
     */
    @java.lang.Override
    public boolean hasSetHostnameAsFQDN() {
      return ((bitField0_ & 0x00800000) != 0);
    }
    /**
     * <pre>
     * If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).
     * In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).
     * In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE&#92;&#92;SYSTEM&#92;&#92;CurrentControlSet&#92;&#92;Services&#92;&#92;Tcpip&#92;&#92;Parameters to FQDN.
     * If a pod does not have FQDN, this has no effect.
     * Default to false.
     * +optional
     * </pre>
     *
     * <code>optional bool setHostnameAsFQDN = 35;</code>
     * @return The setHostnameAsFQDN.
     */
    @java.lang.Override
    public boolean getSetHostnameAsFQDN() {
      return setHostnameAsFQDN_;
    }

    public static final int OS_FIELD_NUMBER = 36;
    private io.kubernetes.client.proto.V1.PodOS os_;
    /**
     * <pre>
     * Specifies the OS of the containers in the pod.
     * Some pod and container fields are restricted if this is set.
     *
     * If the OS field is set to linux, the following fields must be unset:
     * -securityContext.windowsOptions
     *
     * If the OS field is set to windows, following fields must be unset:
     * - spec.hostPID
     * - spec.hostIPC
     * - spec.hostUsers
     * - spec.securityContext.appArmorProfile
     * - spec.securityContext.seLinuxOptions
     * - spec.securityContext.seccompProfile
     * - spec.securityContext.fsGroup
     * - spec.securityContext.fsGroupChangePolicy
     * - spec.securityContext.sysctls
     * - spec.shareProcessNamespace
     * - spec.securityContext.runAsUser
     * - spec.securityContext.runAsGroup
     * - spec.securityContext.supplementalGroups
     * - spec.containers[*].securityContext.appArmorProfile
     * - spec.containers[*].securityContext.seLinuxOptions
     * - spec.containers[*].securityContext.seccompProfile
     * - spec.containers[*].securityContext.capabilities
     * - spec.containers[*].securityContext.readOnlyRootFilesystem
     * - spec.containers[*].securityContext.privileged
     * - spec.containers[*].securityContext.allowPrivilegeEscalation
     * - spec.containers[*].securityContext.procMount
     * - spec.containers[*].securityContext.runAsUser
     * - spec.containers[*].securityContext.runAsGroup
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
     * @return Whether the os field is set.
     */
    @java.lang.Override
    public boolean hasOs() {
      return ((bitField0_ & 0x01000000) != 0);
    }
    /**
     * <pre>
     * Specifies the OS of the containers in the pod.
     * Some pod and container fields are restricted if this is set.
     *
     * If the OS field is set to linux, the following fields must be unset:
     * -securityContext.windowsOptions
     *
     * If the OS field is set to windows, following fields must be unset:
     * - spec.hostPID
     * - spec.hostIPC
     * - spec.hostUsers
     * - spec.securityContext.appArmorProfile
     * - spec.securityContext.seLinuxOptions
     * - spec.securityContext.seccompProfile
     * - spec.securityContext.fsGroup
     * - spec.securityContext.fsGroupChangePolicy
     * - spec.securityContext.sysctls
     * - spec.shareProcessNamespace
     * - spec.securityContext.runAsUser
     * - spec.securityContext.runAsGroup
     * - spec.securityContext.supplementalGroups
     * - spec.containers[*].securityContext.appArmorProfile
     * - spec.containers[*].securityContext.seLinuxOptions
     * - spec.containers[*].securityContext.seccompProfile
     * - spec.containers[*].securityContext.capabilities
     * - spec.containers[*].securityContext.readOnlyRootFilesystem
     * - spec.containers[*].securityContext.privileged
     * - spec.containers[*].securityContext.allowPrivilegeEscalation
     * - spec.containers[*].securityContext.procMount
     * - spec.containers[*].securityContext.runAsUser
     * - spec.containers[*].securityContext.runAsGroup
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
     * @return The os.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodOS getOs() {
      return os_ == null ? io.kubernetes.client.proto.V1.PodOS.getDefaultInstance() : os_;
    }
    /**
     * <pre>
     * Specifies the OS of the containers in the pod.
     * Some pod and container fields are restricted if this is set.
     *
     * If the OS field is set to linux, the following fields must be unset:
     * -securityContext.windowsOptions
     *
     * If the OS field is set to windows, following fields must be unset:
     * - spec.hostPID
     * - spec.hostIPC
     * - spec.hostUsers
     * - spec.securityContext.appArmorProfile
     * - spec.securityContext.seLinuxOptions
     * - spec.securityContext.seccompProfile
     * - spec.securityContext.fsGroup
     * - spec.securityContext.fsGroupChangePolicy
     * - spec.securityContext.sysctls
     * - spec.shareProcessNamespace
     * - spec.securityContext.runAsUser
     * - spec.securityContext.runAsGroup
     * - spec.securityContext.supplementalGroups
     * - spec.containers[*].securityContext.appArmorProfile
     * - spec.containers[*].securityContext.seLinuxOptions
     * - spec.containers[*].securityContext.seccompProfile
     * - spec.containers[*].securityContext.capabilities
     * - spec.containers[*].securityContext.readOnlyRootFilesystem
     * - spec.containers[*].securityContext.privileged
     * - spec.containers[*].securityContext.allowPrivilegeEscalation
     * - spec.containers[*].securityContext.procMount
     * - spec.containers[*].securityContext.runAsUser
     * - spec.containers[*].securityContext.runAsGroup
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodOSOrBuilder getOsOrBuilder() {
      return os_ == null ? io.kubernetes.client.proto.V1.PodOS.getDefaultInstance() : os_;
    }

    public static final int HOSTUSERS_FIELD_NUMBER = 37;
    private boolean hostUsers_ = false;
    /**
     * <pre>
     * Use the host's user namespace.
     * Optional: Default to true.
     * If set to true or not present, the pod will be run in the host user namespace, useful
     * for when the pod needs a feature only available to the host user namespace, such as
     * loading a kernel module with CAP_SYS_MODULE.
     * When set to false, a new userns is created for the pod. Setting false is useful for
     * mitigating container breakout vulnerabilities even allowing users to run their
     * containers as root without actually having root privileges on the host.
     * This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostUsers = 37;</code>
     * @return Whether the hostUsers field is set.
     */
    @java.lang.Override
    public boolean hasHostUsers() {
      return ((bitField0_ & 0x02000000) != 0);
    }
    /**
     * <pre>
     * Use the host's user namespace.
     * Optional: Default to true.
     * If set to true or not present, the pod will be run in the host user namespace, useful
     * for when the pod needs a feature only available to the host user namespace, such as
     * loading a kernel module with CAP_SYS_MODULE.
     * When set to false, a new userns is created for the pod. Setting false is useful for
     * mitigating container breakout vulnerabilities even allowing users to run their
     * containers as root without actually having root privileges on the host.
     * This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>optional bool hostUsers = 37;</code>
     * @return The hostUsers.
     */
    @java.lang.Override
    public boolean getHostUsers() {
      return hostUsers_;
    }

    public static final int SCHEDULINGGATES_FIELD_NUMBER = 38;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PodSchedulingGate> schedulingGates_;
    /**
     * <pre>
     * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
     * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
     * scheduler will not attempt to schedule the pod.
     *
     * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PodSchedulingGate> getSchedulingGatesList() {
      return schedulingGates_;
    }
    /**
     * <pre>
     * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
     * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
     * scheduler will not attempt to schedule the pod.
     *
     * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodSchedulingGateOrBuilder> 
        getSchedulingGatesOrBuilderList() {
      return schedulingGates_;
    }
    /**
     * <pre>
     * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
     * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
     * scheduler will not attempt to schedule the pod.
     *
     * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
     */
    @java.lang.Override
    public int getSchedulingGatesCount() {
      return schedulingGates_.size();
    }
    /**
     * <pre>
     * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
     * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
     * scheduler will not attempt to schedule the pod.
     *
     * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSchedulingGate getSchedulingGates(int index) {
      return schedulingGates_.get(index);
    }
    /**
     * <pre>
     * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
     * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
     * scheduler will not attempt to schedule the pod.
     *
     * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSchedulingGateOrBuilder getSchedulingGatesOrBuilder(
        int index) {
      return schedulingGates_.get(index);
    }

    public static final int RESOURCECLAIMS_FIELD_NUMBER = 39;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PodResourceClaim> resourceClaims_;
    /**
     * <pre>
     * ResourceClaims defines which ResourceClaims must be allocated
     * and reserved before the Pod is allowed to start. The resources
     * will be made available to those containers which consume them
     * by name.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PodResourceClaim> getResourceClaimsList() {
      return resourceClaims_;
    }
    /**
     * <pre>
     * ResourceClaims defines which ResourceClaims must be allocated
     * and reserved before the Pod is allowed to start. The resources
     * will be made available to those containers which consume them
     * by name.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodResourceClaimOrBuilder> 
        getResourceClaimsOrBuilderList() {
      return resourceClaims_;
    }
    /**
     * <pre>
     * ResourceClaims defines which ResourceClaims must be allocated
     * and reserved before the Pod is allowed to start. The resources
     * will be made available to those containers which consume them
     * by name.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
     */
    @java.lang.Override
    public int getResourceClaimsCount() {
      return resourceClaims_.size();
    }
    /**
     * <pre>
     * ResourceClaims defines which ResourceClaims must be allocated
     * and reserved before the Pod is allowed to start. The resources
     * will be made available to those containers which consume them
     * by name.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodResourceClaim getResourceClaims(int index) {
      return resourceClaims_.get(index);
    }
    /**
     * <pre>
     * ResourceClaims defines which ResourceClaims must be allocated
     * and reserved before the Pod is allowed to start. The resources
     * will be made available to those containers which consume them
     * by name.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable.
     *
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodResourceClaimOrBuilder getResourceClaimsOrBuilder(
        int index) {
      return resourceClaims_.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 {
      for (int i = 0; i < volumes_.size(); i++) {
        output.writeMessage(1, volumes_.get(i));
      }
      for (int i = 0; i < containers_.size(); i++) {
        output.writeMessage(2, containers_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, restartPolicy_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt64(4, terminationGracePeriodSeconds_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt64(5, activeDeadlineSeconds_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, dnsPolicy_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetNodeSelector(),
          NodeSelectorDefaultEntryHolder.defaultEntry,
          7);
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, serviceAccountName_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, serviceAccount_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 10, nodeName_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeBool(11, hostNetwork_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeBool(12, hostPID_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeBool(13, hostIPC_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeMessage(14, getSecurityContext());
      }
      for (int i = 0; i < imagePullSecrets_.size(); i++) {
        output.writeMessage(15, imagePullSecrets_.get(i));
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 16, hostname_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 17, subdomain_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        output.writeMessage(18, getAffinity());
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 19, schedulerName_);
      }
      for (int i = 0; i < initContainers_.size(); i++) {
        output.writeMessage(20, initContainers_.get(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeBool(21, automountServiceAccountToken_);
      }
      for (int i = 0; i < tolerations_.size(); i++) {
        output.writeMessage(22, tolerations_.get(i));
      }
      for (int i = 0; i < hostAliases_.size(); i++) {
        output.writeMessage(23, hostAliases_.get(i));
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 24, priorityClassName_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        output.writeInt32(25, priority_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        output.writeMessage(26, getDnsConfig());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeBool(27, shareProcessNamespace_);
      }
      for (int i = 0; i < readinessGates_.size(); i++) {
        output.writeMessage(28, readinessGates_.get(i));
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 29, runtimeClassName_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        output.writeBool(30, enableServiceLinks_);
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 31, preemptionPolicy_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetOverhead(),
          OverheadDefaultEntryHolder.defaultEntry,
          32);
      for (int i = 0; i < topologySpreadConstraints_.size(); i++) {
        output.writeMessage(33, topologySpreadConstraints_.get(i));
      }
      for (int i = 0; i < ephemeralContainers_.size(); i++) {
        output.writeMessage(34, ephemeralContainers_.get(i));
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        output.writeBool(35, setHostnameAsFQDN_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        output.writeMessage(36, getOs());
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        output.writeBool(37, hostUsers_);
      }
      for (int i = 0; i < schedulingGates_.size(); i++) {
        output.writeMessage(38, schedulingGates_.get(i));
      }
      for (int i = 0; i < resourceClaims_.size(); i++) {
        output.writeMessage(39, resourceClaims_.get(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 < volumes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, volumes_.get(i));
      }
      for (int i = 0; i < containers_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, containers_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, restartPolicy_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, terminationGracePeriodSeconds_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, activeDeadlineSeconds_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, dnsPolicy_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetNodeSelector().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        nodeSelector__ = NodeSelectorDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, nodeSelector__);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(8, serviceAccountName_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, serviceAccount_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(10, nodeName_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, hostNetwork_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(12, hostPID_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, hostIPC_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, getSecurityContext());
      }
      for (int i = 0; i < imagePullSecrets_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, imagePullSecrets_.get(i));
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(16, hostname_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(17, subdomain_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, getAffinity());
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(19, schedulerName_);
      }
      for (int i = 0; i < initContainers_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(20, initContainers_.get(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(21, automountServiceAccountToken_);
      }
      for (int i = 0; i < tolerations_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(22, tolerations_.get(i));
      }
      for (int i = 0; i < hostAliases_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(23, hostAliases_.get(i));
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(24, priorityClassName_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(25, priority_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(26, getDnsConfig());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(27, shareProcessNamespace_);
      }
      for (int i = 0; i < readinessGates_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(28, readinessGates_.get(i));
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(29, runtimeClassName_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(30, enableServiceLinks_);
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(31, preemptionPolicy_);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetOverhead().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        overhead__ = OverheadDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(32, overhead__);
      }
      for (int i = 0; i < topologySpreadConstraints_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(33, topologySpreadConstraints_.get(i));
      }
      for (int i = 0; i < ephemeralContainers_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(34, ephemeralContainers_.get(i));
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(35, setHostnameAsFQDN_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(36, getOs());
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(37, hostUsers_);
      }
      for (int i = 0; i < schedulingGates_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(38, schedulingGates_.get(i));
      }
      for (int i = 0; i < resourceClaims_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(39, resourceClaims_.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.V1.PodSpec)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodSpec other = (io.kubernetes.client.proto.V1.PodSpec) obj;

      if (!getVolumesList()
          .equals(other.getVolumesList())) return false;
      if (!getInitContainersList()
          .equals(other.getInitContainersList())) return false;
      if (!getContainersList()
          .equals(other.getContainersList())) return false;
      if (!getEphemeralContainersList()
          .equals(other.getEphemeralContainersList())) return false;
      if (hasRestartPolicy() != other.hasRestartPolicy()) return false;
      if (hasRestartPolicy()) {
        if (!getRestartPolicy()
            .equals(other.getRestartPolicy())) return false;
      }
      if (hasTerminationGracePeriodSeconds() != other.hasTerminationGracePeriodSeconds()) return false;
      if (hasTerminationGracePeriodSeconds()) {
        if (getTerminationGracePeriodSeconds()
            != other.getTerminationGracePeriodSeconds()) return false;
      }
      if (hasActiveDeadlineSeconds() != other.hasActiveDeadlineSeconds()) return false;
      if (hasActiveDeadlineSeconds()) {
        if (getActiveDeadlineSeconds()
            != other.getActiveDeadlineSeconds()) return false;
      }
      if (hasDnsPolicy() != other.hasDnsPolicy()) return false;
      if (hasDnsPolicy()) {
        if (!getDnsPolicy()
            .equals(other.getDnsPolicy())) return false;
      }
      if (!internalGetNodeSelector().equals(
          other.internalGetNodeSelector())) return false;
      if (hasServiceAccountName() != other.hasServiceAccountName()) return false;
      if (hasServiceAccountName()) {
        if (!getServiceAccountName()
            .equals(other.getServiceAccountName())) return false;
      }
      if (hasServiceAccount() != other.hasServiceAccount()) return false;
      if (hasServiceAccount()) {
        if (!getServiceAccount()
            .equals(other.getServiceAccount())) return false;
      }
      if (hasAutomountServiceAccountToken() != other.hasAutomountServiceAccountToken()) return false;
      if (hasAutomountServiceAccountToken()) {
        if (getAutomountServiceAccountToken()
            != other.getAutomountServiceAccountToken()) return false;
      }
      if (hasNodeName() != other.hasNodeName()) return false;
      if (hasNodeName()) {
        if (!getNodeName()
            .equals(other.getNodeName())) return false;
      }
      if (hasHostNetwork() != other.hasHostNetwork()) return false;
      if (hasHostNetwork()) {
        if (getHostNetwork()
            != other.getHostNetwork()) return false;
      }
      if (hasHostPID() != other.hasHostPID()) return false;
      if (hasHostPID()) {
        if (getHostPID()
            != other.getHostPID()) return false;
      }
      if (hasHostIPC() != other.hasHostIPC()) return false;
      if (hasHostIPC()) {
        if (getHostIPC()
            != other.getHostIPC()) return false;
      }
      if (hasShareProcessNamespace() != other.hasShareProcessNamespace()) return false;
      if (hasShareProcessNamespace()) {
        if (getShareProcessNamespace()
            != other.getShareProcessNamespace()) return false;
      }
      if (hasSecurityContext() != other.hasSecurityContext()) return false;
      if (hasSecurityContext()) {
        if (!getSecurityContext()
            .equals(other.getSecurityContext())) return false;
      }
      if (!getImagePullSecretsList()
          .equals(other.getImagePullSecretsList())) return false;
      if (hasHostname() != other.hasHostname()) return false;
      if (hasHostname()) {
        if (!getHostname()
            .equals(other.getHostname())) return false;
      }
      if (hasSubdomain() != other.hasSubdomain()) return false;
      if (hasSubdomain()) {
        if (!getSubdomain()
            .equals(other.getSubdomain())) return false;
      }
      if (hasAffinity() != other.hasAffinity()) return false;
      if (hasAffinity()) {
        if (!getAffinity()
            .equals(other.getAffinity())) return false;
      }
      if (hasSchedulerName() != other.hasSchedulerName()) return false;
      if (hasSchedulerName()) {
        if (!getSchedulerName()
            .equals(other.getSchedulerName())) return false;
      }
      if (!getTolerationsList()
          .equals(other.getTolerationsList())) return false;
      if (!getHostAliasesList()
          .equals(other.getHostAliasesList())) return false;
      if (hasPriorityClassName() != other.hasPriorityClassName()) return false;
      if (hasPriorityClassName()) {
        if (!getPriorityClassName()
            .equals(other.getPriorityClassName())) return false;
      }
      if (hasPriority() != other.hasPriority()) return false;
      if (hasPriority()) {
        if (getPriority()
            != other.getPriority()) return false;
      }
      if (hasDnsConfig() != other.hasDnsConfig()) return false;
      if (hasDnsConfig()) {
        if (!getDnsConfig()
            .equals(other.getDnsConfig())) return false;
      }
      if (!getReadinessGatesList()
          .equals(other.getReadinessGatesList())) return false;
      if (hasRuntimeClassName() != other.hasRuntimeClassName()) return false;
      if (hasRuntimeClassName()) {
        if (!getRuntimeClassName()
            .equals(other.getRuntimeClassName())) return false;
      }
      if (hasEnableServiceLinks() != other.hasEnableServiceLinks()) return false;
      if (hasEnableServiceLinks()) {
        if (getEnableServiceLinks()
            != other.getEnableServiceLinks()) return false;
      }
      if (hasPreemptionPolicy() != other.hasPreemptionPolicy()) return false;
      if (hasPreemptionPolicy()) {
        if (!getPreemptionPolicy()
            .equals(other.getPreemptionPolicy())) return false;
      }
      if (!internalGetOverhead().equals(
          other.internalGetOverhead())) return false;
      if (!getTopologySpreadConstraintsList()
          .equals(other.getTopologySpreadConstraintsList())) return false;
      if (hasSetHostnameAsFQDN() != other.hasSetHostnameAsFQDN()) return false;
      if (hasSetHostnameAsFQDN()) {
        if (getSetHostnameAsFQDN()
            != other.getSetHostnameAsFQDN()) return false;
      }
      if (hasOs() != other.hasOs()) return false;
      if (hasOs()) {
        if (!getOs()
            .equals(other.getOs())) return false;
      }
      if (hasHostUsers() != other.hasHostUsers()) return false;
      if (hasHostUsers()) {
        if (getHostUsers()
            != other.getHostUsers()) return false;
      }
      if (!getSchedulingGatesList()
          .equals(other.getSchedulingGatesList())) return false;
      if (!getResourceClaimsList()
          .equals(other.getResourceClaimsList())) 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 (getVolumesCount() > 0) {
        hash = (37 * hash) + VOLUMES_FIELD_NUMBER;
        hash = (53 * hash) + getVolumesList().hashCode();
      }
      if (getInitContainersCount() > 0) {
        hash = (37 * hash) + INITCONTAINERS_FIELD_NUMBER;
        hash = (53 * hash) + getInitContainersList().hashCode();
      }
      if (getContainersCount() > 0) {
        hash = (37 * hash) + CONTAINERS_FIELD_NUMBER;
        hash = (53 * hash) + getContainersList().hashCode();
      }
      if (getEphemeralContainersCount() > 0) {
        hash = (37 * hash) + EPHEMERALCONTAINERS_FIELD_NUMBER;
        hash = (53 * hash) + getEphemeralContainersList().hashCode();
      }
      if (hasRestartPolicy()) {
        hash = (37 * hash) + RESTARTPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getRestartPolicy().hashCode();
      }
      if (hasTerminationGracePeriodSeconds()) {
        hash = (37 * hash) + TERMINATIONGRACEPERIODSECONDS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTerminationGracePeriodSeconds());
      }
      if (hasActiveDeadlineSeconds()) {
        hash = (37 * hash) + ACTIVEDEADLINESECONDS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getActiveDeadlineSeconds());
      }
      if (hasDnsPolicy()) {
        hash = (37 * hash) + DNSPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getDnsPolicy().hashCode();
      }
      if (!internalGetNodeSelector().getMap().isEmpty()) {
        hash = (37 * hash) + NODESELECTOR_FIELD_NUMBER;
        hash = (53 * hash) + internalGetNodeSelector().hashCode();
      }
      if (hasServiceAccountName()) {
        hash = (37 * hash) + SERVICEACCOUNTNAME_FIELD_NUMBER;
        hash = (53 * hash) + getServiceAccountName().hashCode();
      }
      if (hasServiceAccount()) {
        hash = (37 * hash) + SERVICEACCOUNT_FIELD_NUMBER;
        hash = (53 * hash) + getServiceAccount().hashCode();
      }
      if (hasAutomountServiceAccountToken()) {
        hash = (37 * hash) + AUTOMOUNTSERVICEACCOUNTTOKEN_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getAutomountServiceAccountToken());
      }
      if (hasNodeName()) {
        hash = (37 * hash) + NODENAME_FIELD_NUMBER;
        hash = (53 * hash) + getNodeName().hashCode();
      }
      if (hasHostNetwork()) {
        hash = (37 * hash) + HOSTNETWORK_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHostNetwork());
      }
      if (hasHostPID()) {
        hash = (37 * hash) + HOSTPID_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHostPID());
      }
      if (hasHostIPC()) {
        hash = (37 * hash) + HOSTIPC_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHostIPC());
      }
      if (hasShareProcessNamespace()) {
        hash = (37 * hash) + SHAREPROCESSNAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getShareProcessNamespace());
      }
      if (hasSecurityContext()) {
        hash = (37 * hash) + SECURITYCONTEXT_FIELD_NUMBER;
        hash = (53 * hash) + getSecurityContext().hashCode();
      }
      if (getImagePullSecretsCount() > 0) {
        hash = (37 * hash) + IMAGEPULLSECRETS_FIELD_NUMBER;
        hash = (53 * hash) + getImagePullSecretsList().hashCode();
      }
      if (hasHostname()) {
        hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
        hash = (53 * hash) + getHostname().hashCode();
      }
      if (hasSubdomain()) {
        hash = (37 * hash) + SUBDOMAIN_FIELD_NUMBER;
        hash = (53 * hash) + getSubdomain().hashCode();
      }
      if (hasAffinity()) {
        hash = (37 * hash) + AFFINITY_FIELD_NUMBER;
        hash = (53 * hash) + getAffinity().hashCode();
      }
      if (hasSchedulerName()) {
        hash = (37 * hash) + SCHEDULERNAME_FIELD_NUMBER;
        hash = (53 * hash) + getSchedulerName().hashCode();
      }
      if (getTolerationsCount() > 0) {
        hash = (37 * hash) + TOLERATIONS_FIELD_NUMBER;
        hash = (53 * hash) + getTolerationsList().hashCode();
      }
      if (getHostAliasesCount() > 0) {
        hash = (37 * hash) + HOSTALIASES_FIELD_NUMBER;
        hash = (53 * hash) + getHostAliasesList().hashCode();
      }
      if (hasPriorityClassName()) {
        hash = (37 * hash) + PRIORITYCLASSNAME_FIELD_NUMBER;
        hash = (53 * hash) + getPriorityClassName().hashCode();
      }
      if (hasPriority()) {
        hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
        hash = (53 * hash) + getPriority();
      }
      if (hasDnsConfig()) {
        hash = (37 * hash) + DNSCONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getDnsConfig().hashCode();
      }
      if (getReadinessGatesCount() > 0) {
        hash = (37 * hash) + READINESSGATES_FIELD_NUMBER;
        hash = (53 * hash) + getReadinessGatesList().hashCode();
      }
      if (hasRuntimeClassName()) {
        hash = (37 * hash) + RUNTIMECLASSNAME_FIELD_NUMBER;
        hash = (53 * hash) + getRuntimeClassName().hashCode();
      }
      if (hasEnableServiceLinks()) {
        hash = (37 * hash) + ENABLESERVICELINKS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getEnableServiceLinks());
      }
      if (hasPreemptionPolicy()) {
        hash = (37 * hash) + PREEMPTIONPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getPreemptionPolicy().hashCode();
      }
      if (!internalGetOverhead().getMap().isEmpty()) {
        hash = (37 * hash) + OVERHEAD_FIELD_NUMBER;
        hash = (53 * hash) + internalGetOverhead().hashCode();
      }
      if (getTopologySpreadConstraintsCount() > 0) {
        hash = (37 * hash) + TOPOLOGYSPREADCONSTRAINTS_FIELD_NUMBER;
        hash = (53 * hash) + getTopologySpreadConstraintsList().hashCode();
      }
      if (hasSetHostnameAsFQDN()) {
        hash = (37 * hash) + SETHOSTNAMEASFQDN_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getSetHostnameAsFQDN());
      }
      if (hasOs()) {
        hash = (37 * hash) + OS_FIELD_NUMBER;
        hash = (53 * hash) + getOs().hashCode();
      }
      if (hasHostUsers()) {
        hash = (37 * hash) + HOSTUSERS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHostUsers());
      }
      if (getSchedulingGatesCount() > 0) {
        hash = (37 * hash) + SCHEDULINGGATES_FIELD_NUMBER;
        hash = (53 * hash) + getSchedulingGatesList().hashCode();
      }
      if (getResourceClaimsCount() > 0) {
        hash = (37 * hash) + RESOURCECLAIMS_FIELD_NUMBER;
        hash = (53 * hash) + getResourceClaimsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSpec 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.V1.PodSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSpec 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.V1.PodSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodSpec 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.V1.PodSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodSpec 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.V1.PodSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodSpec 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.V1.PodSpec 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>
     * PodSpec is a description of a pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodSpec)
        io.kubernetes.client.proto.V1.PodSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSpec_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 7:
            return internalGetNodeSelector();
          case 32:
            return internalGetOverhead();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 7:
            return internalGetMutableNodeSelector();
          case 32:
            return internalGetMutableOverhead();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodSpec.class, io.kubernetes.client.proto.V1.PodSpec.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodSpec.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getVolumesFieldBuilder();
          getInitContainersFieldBuilder();
          getContainersFieldBuilder();
          getEphemeralContainersFieldBuilder();
          getSecurityContextFieldBuilder();
          getImagePullSecretsFieldBuilder();
          getAffinityFieldBuilder();
          getTolerationsFieldBuilder();
          getHostAliasesFieldBuilder();
          getDnsConfigFieldBuilder();
          getReadinessGatesFieldBuilder();
          getTopologySpreadConstraintsFieldBuilder();
          getOsFieldBuilder();
          getSchedulingGatesFieldBuilder();
          getResourceClaimsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        bitField1_ = 0;
        if (volumesBuilder_ == null) {
          volumes_ = java.util.Collections.emptyList();
        } else {
          volumes_ = null;
          volumesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (initContainersBuilder_ == null) {
          initContainers_ = java.util.Collections.emptyList();
        } else {
          initContainers_ = null;
          initContainersBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (containersBuilder_ == null) {
          containers_ = java.util.Collections.emptyList();
        } else {
          containers_ = null;
          containersBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (ephemeralContainersBuilder_ == null) {
          ephemeralContainers_ = java.util.Collections.emptyList();
        } else {
          ephemeralContainers_ = null;
          ephemeralContainersBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        restartPolicy_ = "";
        terminationGracePeriodSeconds_ = 0L;
        activeDeadlineSeconds_ = 0L;
        dnsPolicy_ = "";
        internalGetMutableNodeSelector().clear();
        serviceAccountName_ = "";
        serviceAccount_ = "";
        automountServiceAccountToken_ = false;
        nodeName_ = "";
        hostNetwork_ = false;
        hostPID_ = false;
        hostIPC_ = false;
        shareProcessNamespace_ = false;
        securityContext_ = null;
        if (securityContextBuilder_ != null) {
          securityContextBuilder_.dispose();
          securityContextBuilder_ = null;
        }
        if (imagePullSecretsBuilder_ == null) {
          imagePullSecrets_ = java.util.Collections.emptyList();
        } else {
          imagePullSecrets_ = null;
          imagePullSecretsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00040000);
        hostname_ = "";
        subdomain_ = "";
        affinity_ = null;
        if (affinityBuilder_ != null) {
          affinityBuilder_.dispose();
          affinityBuilder_ = null;
        }
        schedulerName_ = "";
        if (tolerationsBuilder_ == null) {
          tolerations_ = java.util.Collections.emptyList();
        } else {
          tolerations_ = null;
          tolerationsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00800000);
        if (hostAliasesBuilder_ == null) {
          hostAliases_ = java.util.Collections.emptyList();
        } else {
          hostAliases_ = null;
          hostAliasesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x01000000);
        priorityClassName_ = "";
        priority_ = 0;
        dnsConfig_ = null;
        if (dnsConfigBuilder_ != null) {
          dnsConfigBuilder_.dispose();
          dnsConfigBuilder_ = null;
        }
        if (readinessGatesBuilder_ == null) {
          readinessGates_ = java.util.Collections.emptyList();
        } else {
          readinessGates_ = null;
          readinessGatesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x10000000);
        runtimeClassName_ = "";
        enableServiceLinks_ = false;
        preemptionPolicy_ = "";
        internalGetMutableOverhead().clear();
        if (topologySpreadConstraintsBuilder_ == null) {
          topologySpreadConstraints_ = java.util.Collections.emptyList();
        } else {
          topologySpreadConstraints_ = null;
          topologySpreadConstraintsBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000002);
        setHostnameAsFQDN_ = false;
        os_ = null;
        if (osBuilder_ != null) {
          osBuilder_.dispose();
          osBuilder_ = null;
        }
        hostUsers_ = false;
        if (schedulingGatesBuilder_ == null) {
          schedulingGates_ = java.util.Collections.emptyList();
        } else {
          schedulingGates_ = null;
          schedulingGatesBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000020);
        if (resourceClaimsBuilder_ == null) {
          resourceClaims_ = java.util.Collections.emptyList();
        } else {
          resourceClaims_ = null;
          resourceClaimsBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000040);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSpec build() {
        io.kubernetes.client.proto.V1.PodSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodSpec buildPartial() {
        io.kubernetes.client.proto.V1.PodSpec result = new io.kubernetes.client.proto.V1.PodSpec(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        if (bitField1_ != 0) { buildPartial1(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PodSpec result) {
        if (volumesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            volumes_ = java.util.Collections.unmodifiableList(volumes_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.volumes_ = volumes_;
        } else {
          result.volumes_ = volumesBuilder_.build();
        }
        if (initContainersBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            initContainers_ = java.util.Collections.unmodifiableList(initContainers_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.initContainers_ = initContainers_;
        } else {
          result.initContainers_ = initContainersBuilder_.build();
        }
        if (containersBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            containers_ = java.util.Collections.unmodifiableList(containers_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.containers_ = containers_;
        } else {
          result.containers_ = containersBuilder_.build();
        }
        if (ephemeralContainersBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            ephemeralContainers_ = java.util.Collections.unmodifiableList(ephemeralContainers_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.ephemeralContainers_ = ephemeralContainers_;
        } else {
          result.ephemeralContainers_ = ephemeralContainersBuilder_.build();
        }
        if (imagePullSecretsBuilder_ == null) {
          if (((bitField0_ & 0x00040000) != 0)) {
            imagePullSecrets_ = java.util.Collections.unmodifiableList(imagePullSecrets_);
            bitField0_ = (bitField0_ & ~0x00040000);
          }
          result.imagePullSecrets_ = imagePullSecrets_;
        } else {
          result.imagePullSecrets_ = imagePullSecretsBuilder_.build();
        }
        if (tolerationsBuilder_ == null) {
          if (((bitField0_ & 0x00800000) != 0)) {
            tolerations_ = java.util.Collections.unmodifiableList(tolerations_);
            bitField0_ = (bitField0_ & ~0x00800000);
          }
          result.tolerations_ = tolerations_;
        } else {
          result.tolerations_ = tolerationsBuilder_.build();
        }
        if (hostAliasesBuilder_ == null) {
          if (((bitField0_ & 0x01000000) != 0)) {
            hostAliases_ = java.util.Collections.unmodifiableList(hostAliases_);
            bitField0_ = (bitField0_ & ~0x01000000);
          }
          result.hostAliases_ = hostAliases_;
        } else {
          result.hostAliases_ = hostAliasesBuilder_.build();
        }
        if (readinessGatesBuilder_ == null) {
          if (((bitField0_ & 0x10000000) != 0)) {
            readinessGates_ = java.util.Collections.unmodifiableList(readinessGates_);
            bitField0_ = (bitField0_ & ~0x10000000);
          }
          result.readinessGates_ = readinessGates_;
        } else {
          result.readinessGates_ = readinessGatesBuilder_.build();
        }
        if (topologySpreadConstraintsBuilder_ == null) {
          if (((bitField1_ & 0x00000002) != 0)) {
            topologySpreadConstraints_ = java.util.Collections.unmodifiableList(topologySpreadConstraints_);
            bitField1_ = (bitField1_ & ~0x00000002);
          }
          result.topologySpreadConstraints_ = topologySpreadConstraints_;
        } else {
          result.topologySpreadConstraints_ = topologySpreadConstraintsBuilder_.build();
        }
        if (schedulingGatesBuilder_ == null) {
          if (((bitField1_ & 0x00000020) != 0)) {
            schedulingGates_ = java.util.Collections.unmodifiableList(schedulingGates_);
            bitField1_ = (bitField1_ & ~0x00000020);
          }
          result.schedulingGates_ = schedulingGates_;
        } else {
          result.schedulingGates_ = schedulingGatesBuilder_.build();
        }
        if (resourceClaimsBuilder_ == null) {
          if (((bitField1_ & 0x00000040) != 0)) {
            resourceClaims_ = java.util.Collections.unmodifiableList(resourceClaims_);
            bitField1_ = (bitField1_ & ~0x00000040);
          }
          result.resourceClaims_ = resourceClaims_;
        } else {
          result.resourceClaims_ = resourceClaimsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodSpec result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.restartPolicy_ = restartPolicy_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.terminationGracePeriodSeconds_ = terminationGracePeriodSeconds_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.activeDeadlineSeconds_ = activeDeadlineSeconds_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.dnsPolicy_ = dnsPolicy_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.nodeSelector_ = internalGetNodeSelector();
          result.nodeSelector_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.serviceAccountName_ = serviceAccountName_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.serviceAccount_ = serviceAccount_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.automountServiceAccountToken_ = automountServiceAccountToken_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.nodeName_ = nodeName_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.hostNetwork_ = hostNetwork_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.hostPID_ = hostPID_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.hostIPC_ = hostIPC_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.shareProcessNamespace_ = shareProcessNamespace_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.securityContext_ = securityContextBuilder_ == null
              ? securityContext_
              : securityContextBuilder_.build();
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.hostname_ = hostname_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.subdomain_ = subdomain_;
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00200000) != 0)) {
          result.affinity_ = affinityBuilder_ == null
              ? affinity_
              : affinityBuilder_.build();
          to_bitField0_ |= 0x00008000;
        }
        if (((from_bitField0_ & 0x00400000) != 0)) {
          result.schedulerName_ = schedulerName_;
          to_bitField0_ |= 0x00010000;
        }
        if (((from_bitField0_ & 0x02000000) != 0)) {
          result.priorityClassName_ = priorityClassName_;
          to_bitField0_ |= 0x00020000;
        }
        if (((from_bitField0_ & 0x04000000) != 0)) {
          result.priority_ = priority_;
          to_bitField0_ |= 0x00040000;
        }
        if (((from_bitField0_ & 0x08000000) != 0)) {
          result.dnsConfig_ = dnsConfigBuilder_ == null
              ? dnsConfig_
              : dnsConfigBuilder_.build();
          to_bitField0_ |= 0x00080000;
        }
        if (((from_bitField0_ & 0x20000000) != 0)) {
          result.runtimeClassName_ = runtimeClassName_;
          to_bitField0_ |= 0x00100000;
        }
        if (((from_bitField0_ & 0x40000000) != 0)) {
          result.enableServiceLinks_ = enableServiceLinks_;
          to_bitField0_ |= 0x00200000;
        }
        if (((from_bitField0_ & 0x80000000) != 0)) {
          result.preemptionPolicy_ = preemptionPolicy_;
          to_bitField0_ |= 0x00400000;
        }
        result.bitField0_ |= to_bitField0_;
      }

      private void buildPartial1(io.kubernetes.client.proto.V1.PodSpec result) {
        int from_bitField1_ = bitField1_;
        if (((from_bitField1_ & 0x00000001) != 0)) {
          result.overhead_ = internalGetOverhead().build(OverheadDefaultEntryHolder.defaultEntry);
        }
        int to_bitField0_ = 0;
        if (((from_bitField1_ & 0x00000004) != 0)) {
          result.setHostnameAsFQDN_ = setHostnameAsFQDN_;
          to_bitField0_ |= 0x00800000;
        }
        if (((from_bitField1_ & 0x00000008) != 0)) {
          result.os_ = osBuilder_ == null
              ? os_
              : osBuilder_.build();
          to_bitField0_ |= 0x01000000;
        }
        if (((from_bitField1_ & 0x00000010) != 0)) {
          result.hostUsers_ = hostUsers_;
          to_bitField0_ |= 0x02000000;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodSpec other) {
        if (other == io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance()) return this;
        if (volumesBuilder_ == null) {
          if (!other.volumes_.isEmpty()) {
            if (volumes_.isEmpty()) {
              volumes_ = other.volumes_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureVolumesIsMutable();
              volumes_.addAll(other.volumes_);
            }
            onChanged();
          }
        } else {
          if (!other.volumes_.isEmpty()) {
            if (volumesBuilder_.isEmpty()) {
              volumesBuilder_.dispose();
              volumesBuilder_ = null;
              volumes_ = other.volumes_;
              bitField0_ = (bitField0_ & ~0x00000001);
              volumesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVolumesFieldBuilder() : null;
            } else {
              volumesBuilder_.addAllMessages(other.volumes_);
            }
          }
        }
        if (initContainersBuilder_ == null) {
          if (!other.initContainers_.isEmpty()) {
            if (initContainers_.isEmpty()) {
              initContainers_ = other.initContainers_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureInitContainersIsMutable();
              initContainers_.addAll(other.initContainers_);
            }
            onChanged();
          }
        } else {
          if (!other.initContainers_.isEmpty()) {
            if (initContainersBuilder_.isEmpty()) {
              initContainersBuilder_.dispose();
              initContainersBuilder_ = null;
              initContainers_ = other.initContainers_;
              bitField0_ = (bitField0_ & ~0x00000002);
              initContainersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getInitContainersFieldBuilder() : null;
            } else {
              initContainersBuilder_.addAllMessages(other.initContainers_);
            }
          }
        }
        if (containersBuilder_ == null) {
          if (!other.containers_.isEmpty()) {
            if (containers_.isEmpty()) {
              containers_ = other.containers_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureContainersIsMutable();
              containers_.addAll(other.containers_);
            }
            onChanged();
          }
        } else {
          if (!other.containers_.isEmpty()) {
            if (containersBuilder_.isEmpty()) {
              containersBuilder_.dispose();
              containersBuilder_ = null;
              containers_ = other.containers_;
              bitField0_ = (bitField0_ & ~0x00000004);
              containersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getContainersFieldBuilder() : null;
            } else {
              containersBuilder_.addAllMessages(other.containers_);
            }
          }
        }
        if (ephemeralContainersBuilder_ == null) {
          if (!other.ephemeralContainers_.isEmpty()) {
            if (ephemeralContainers_.isEmpty()) {
              ephemeralContainers_ = other.ephemeralContainers_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureEphemeralContainersIsMutable();
              ephemeralContainers_.addAll(other.ephemeralContainers_);
            }
            onChanged();
          }
        } else {
          if (!other.ephemeralContainers_.isEmpty()) {
            if (ephemeralContainersBuilder_.isEmpty()) {
              ephemeralContainersBuilder_.dispose();
              ephemeralContainersBuilder_ = null;
              ephemeralContainers_ = other.ephemeralContainers_;
              bitField0_ = (bitField0_ & ~0x00000008);
              ephemeralContainersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEphemeralContainersFieldBuilder() : null;
            } else {
              ephemeralContainersBuilder_.addAllMessages(other.ephemeralContainers_);
            }
          }
        }
        if (other.hasRestartPolicy()) {
          restartPolicy_ = other.restartPolicy_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasTerminationGracePeriodSeconds()) {
          setTerminationGracePeriodSeconds(other.getTerminationGracePeriodSeconds());
        }
        if (other.hasActiveDeadlineSeconds()) {
          setActiveDeadlineSeconds(other.getActiveDeadlineSeconds());
        }
        if (other.hasDnsPolicy()) {
          dnsPolicy_ = other.dnsPolicy_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        internalGetMutableNodeSelector().mergeFrom(
            other.internalGetNodeSelector());
        bitField0_ |= 0x00000100;
        if (other.hasServiceAccountName()) {
          serviceAccountName_ = other.serviceAccountName_;
          bitField0_ |= 0x00000200;
          onChanged();
        }
        if (other.hasServiceAccount()) {
          serviceAccount_ = other.serviceAccount_;
          bitField0_ |= 0x00000400;
          onChanged();
        }
        if (other.hasAutomountServiceAccountToken()) {
          setAutomountServiceAccountToken(other.getAutomountServiceAccountToken());
        }
        if (other.hasNodeName()) {
          nodeName_ = other.nodeName_;
          bitField0_ |= 0x00001000;
          onChanged();
        }
        if (other.hasHostNetwork()) {
          setHostNetwork(other.getHostNetwork());
        }
        if (other.hasHostPID()) {
          setHostPID(other.getHostPID());
        }
        if (other.hasHostIPC()) {
          setHostIPC(other.getHostIPC());
        }
        if (other.hasShareProcessNamespace()) {
          setShareProcessNamespace(other.getShareProcessNamespace());
        }
        if (other.hasSecurityContext()) {
          mergeSecurityContext(other.getSecurityContext());
        }
        if (imagePullSecretsBuilder_ == null) {
          if (!other.imagePullSecrets_.isEmpty()) {
            if (imagePullSecrets_.isEmpty()) {
              imagePullSecrets_ = other.imagePullSecrets_;
              bitField0_ = (bitField0_ & ~0x00040000);
            } else {
              ensureImagePullSecretsIsMutable();
              imagePullSecrets_.addAll(other.imagePullSecrets_);
            }
            onChanged();
          }
        } else {
          if (!other.imagePullSecrets_.isEmpty()) {
            if (imagePullSecretsBuilder_.isEmpty()) {
              imagePullSecretsBuilder_.dispose();
              imagePullSecretsBuilder_ = null;
              imagePullSecrets_ = other.imagePullSecrets_;
              bitField0_ = (bitField0_ & ~0x00040000);
              imagePullSecretsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getImagePullSecretsFieldBuilder() : null;
            } else {
              imagePullSecretsBuilder_.addAllMessages(other.imagePullSecrets_);
            }
          }
        }
        if (other.hasHostname()) {
          hostname_ = other.hostname_;
          bitField0_ |= 0x00080000;
          onChanged();
        }
        if (other.hasSubdomain()) {
          subdomain_ = other.subdomain_;
          bitField0_ |= 0x00100000;
          onChanged();
        }
        if (other.hasAffinity()) {
          mergeAffinity(other.getAffinity());
        }
        if (other.hasSchedulerName()) {
          schedulerName_ = other.schedulerName_;
          bitField0_ |= 0x00400000;
          onChanged();
        }
        if (tolerationsBuilder_ == null) {
          if (!other.tolerations_.isEmpty()) {
            if (tolerations_.isEmpty()) {
              tolerations_ = other.tolerations_;
              bitField0_ = (bitField0_ & ~0x00800000);
            } else {
              ensureTolerationsIsMutable();
              tolerations_.addAll(other.tolerations_);
            }
            onChanged();
          }
        } else {
          if (!other.tolerations_.isEmpty()) {
            if (tolerationsBuilder_.isEmpty()) {
              tolerationsBuilder_.dispose();
              tolerationsBuilder_ = null;
              tolerations_ = other.tolerations_;
              bitField0_ = (bitField0_ & ~0x00800000);
              tolerationsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTolerationsFieldBuilder() : null;
            } else {
              tolerationsBuilder_.addAllMessages(other.tolerations_);
            }
          }
        }
        if (hostAliasesBuilder_ == null) {
          if (!other.hostAliases_.isEmpty()) {
            if (hostAliases_.isEmpty()) {
              hostAliases_ = other.hostAliases_;
              bitField0_ = (bitField0_ & ~0x01000000);
            } else {
              ensureHostAliasesIsMutable();
              hostAliases_.addAll(other.hostAliases_);
            }
            onChanged();
          }
        } else {
          if (!other.hostAliases_.isEmpty()) {
            if (hostAliasesBuilder_.isEmpty()) {
              hostAliasesBuilder_.dispose();
              hostAliasesBuilder_ = null;
              hostAliases_ = other.hostAliases_;
              bitField0_ = (bitField0_ & ~0x01000000);
              hostAliasesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getHostAliasesFieldBuilder() : null;
            } else {
              hostAliasesBuilder_.addAllMessages(other.hostAliases_);
            }
          }
        }
        if (other.hasPriorityClassName()) {
          priorityClassName_ = other.priorityClassName_;
          bitField0_ |= 0x02000000;
          onChanged();
        }
        if (other.hasPriority()) {
          setPriority(other.getPriority());
        }
        if (other.hasDnsConfig()) {
          mergeDnsConfig(other.getDnsConfig());
        }
        if (readinessGatesBuilder_ == null) {
          if (!other.readinessGates_.isEmpty()) {
            if (readinessGates_.isEmpty()) {
              readinessGates_ = other.readinessGates_;
              bitField0_ = (bitField0_ & ~0x10000000);
            } else {
              ensureReadinessGatesIsMutable();
              readinessGates_.addAll(other.readinessGates_);
            }
            onChanged();
          }
        } else {
          if (!other.readinessGates_.isEmpty()) {
            if (readinessGatesBuilder_.isEmpty()) {
              readinessGatesBuilder_.dispose();
              readinessGatesBuilder_ = null;
              readinessGates_ = other.readinessGates_;
              bitField0_ = (bitField0_ & ~0x10000000);
              readinessGatesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getReadinessGatesFieldBuilder() : null;
            } else {
              readinessGatesBuilder_.addAllMessages(other.readinessGates_);
            }
          }
        }
        if (other.hasRuntimeClassName()) {
          runtimeClassName_ = other.runtimeClassName_;
          bitField0_ |= 0x20000000;
          onChanged();
        }
        if (other.hasEnableServiceLinks()) {
          setEnableServiceLinks(other.getEnableServiceLinks());
        }
        if (other.hasPreemptionPolicy()) {
          preemptionPolicy_ = other.preemptionPolicy_;
          bitField0_ |= 0x80000000;
          onChanged();
        }
        internalGetMutableOverhead().mergeFrom(
            other.internalGetOverhead());
        bitField1_ |= 0x00000001;
        if (topologySpreadConstraintsBuilder_ == null) {
          if (!other.topologySpreadConstraints_.isEmpty()) {
            if (topologySpreadConstraints_.isEmpty()) {
              topologySpreadConstraints_ = other.topologySpreadConstraints_;
              bitField1_ = (bitField1_ & ~0x00000002);
            } else {
              ensureTopologySpreadConstraintsIsMutable();
              topologySpreadConstraints_.addAll(other.topologySpreadConstraints_);
            }
            onChanged();
          }
        } else {
          if (!other.topologySpreadConstraints_.isEmpty()) {
            if (topologySpreadConstraintsBuilder_.isEmpty()) {
              topologySpreadConstraintsBuilder_.dispose();
              topologySpreadConstraintsBuilder_ = null;
              topologySpreadConstraints_ = other.topologySpreadConstraints_;
              bitField1_ = (bitField1_ & ~0x00000002);
              topologySpreadConstraintsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTopologySpreadConstraintsFieldBuilder() : null;
            } else {
              topologySpreadConstraintsBuilder_.addAllMessages(other.topologySpreadConstraints_);
            }
          }
        }
        if (other.hasSetHostnameAsFQDN()) {
          setSetHostnameAsFQDN(other.getSetHostnameAsFQDN());
        }
        if (other.hasOs()) {
          mergeOs(other.getOs());
        }
        if (other.hasHostUsers()) {
          setHostUsers(other.getHostUsers());
        }
        if (schedulingGatesBuilder_ == null) {
          if (!other.schedulingGates_.isEmpty()) {
            if (schedulingGates_.isEmpty()) {
              schedulingGates_ = other.schedulingGates_;
              bitField1_ = (bitField1_ & ~0x00000020);
            } else {
              ensureSchedulingGatesIsMutable();
              schedulingGates_.addAll(other.schedulingGates_);
            }
            onChanged();
          }
        } else {
          if (!other.schedulingGates_.isEmpty()) {
            if (schedulingGatesBuilder_.isEmpty()) {
              schedulingGatesBuilder_.dispose();
              schedulingGatesBuilder_ = null;
              schedulingGates_ = other.schedulingGates_;
              bitField1_ = (bitField1_ & ~0x00000020);
              schedulingGatesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSchedulingGatesFieldBuilder() : null;
            } else {
              schedulingGatesBuilder_.addAllMessages(other.schedulingGates_);
            }
          }
        }
        if (resourceClaimsBuilder_ == null) {
          if (!other.resourceClaims_.isEmpty()) {
            if (resourceClaims_.isEmpty()) {
              resourceClaims_ = other.resourceClaims_;
              bitField1_ = (bitField1_ & ~0x00000040);
            } else {
              ensureResourceClaimsIsMutable();
              resourceClaims_.addAll(other.resourceClaims_);
            }
            onChanged();
          }
        } else {
          if (!other.resourceClaims_.isEmpty()) {
            if (resourceClaimsBuilder_.isEmpty()) {
              resourceClaimsBuilder_.dispose();
              resourceClaimsBuilder_ = null;
              resourceClaims_ = other.resourceClaims_;
              bitField1_ = (bitField1_ & ~0x00000040);
              resourceClaimsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getResourceClaimsFieldBuilder() : null;
            } else {
              resourceClaimsBuilder_.addAllMessages(other.resourceClaims_);
            }
          }
        }
        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.V1.Volume m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Volume.parser(),
                        extensionRegistry);
                if (volumesBuilder_ == null) {
                  ensureVolumesIsMutable();
                  volumes_.add(m);
                } else {
                  volumesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.Container m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Container.parser(),
                        extensionRegistry);
                if (containersBuilder_ == null) {
                  ensureContainersIsMutable();
                  containers_.add(m);
                } else {
                  containersBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                restartPolicy_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 26
              case 32: {
                terminationGracePeriodSeconds_ = input.readInt64();
                bitField0_ |= 0x00000020;
                break;
              } // case 32
              case 40: {
                activeDeadlineSeconds_ = input.readInt64();
                bitField0_ |= 0x00000040;
                break;
              } // case 40
              case 50: {
                dnsPolicy_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 50
              case 58: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                nodeSelector__ = input.readMessage(
                    NodeSelectorDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableNodeSelector().getMutableMap().put(
                    nodeSelector__.getKey(), nodeSelector__.getValue());
                bitField0_ |= 0x00000100;
                break;
              } // case 58
              case 66: {
                serviceAccountName_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 66
              case 74: {
                serviceAccount_ = input.readBytes();
                bitField0_ |= 0x00000400;
                break;
              } // case 74
              case 82: {
                nodeName_ = input.readBytes();
                bitField0_ |= 0x00001000;
                break;
              } // case 82
              case 88: {
                hostNetwork_ = input.readBool();
                bitField0_ |= 0x00002000;
                break;
              } // case 88
              case 96: {
                hostPID_ = input.readBool();
                bitField0_ |= 0x00004000;
                break;
              } // case 96
              case 104: {
                hostIPC_ = input.readBool();
                bitField0_ |= 0x00008000;
                break;
              } // case 104
              case 114: {
                input.readMessage(
                    getSecurityContextFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00020000;
                break;
              } // case 114
              case 122: {
                io.kubernetes.client.proto.V1.LocalObjectReference m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.LocalObjectReference.parser(),
                        extensionRegistry);
                if (imagePullSecretsBuilder_ == null) {
                  ensureImagePullSecretsIsMutable();
                  imagePullSecrets_.add(m);
                } else {
                  imagePullSecretsBuilder_.addMessage(m);
                }
                break;
              } // case 122
              case 130: {
                hostname_ = input.readBytes();
                bitField0_ |= 0x00080000;
                break;
              } // case 130
              case 138: {
                subdomain_ = input.readBytes();
                bitField0_ |= 0x00100000;
                break;
              } // case 138
              case 146: {
                input.readMessage(
                    getAffinityFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00200000;
                break;
              } // case 146
              case 154: {
                schedulerName_ = input.readBytes();
                bitField0_ |= 0x00400000;
                break;
              } // case 154
              case 162: {
                io.kubernetes.client.proto.V1.Container m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Container.parser(),
                        extensionRegistry);
                if (initContainersBuilder_ == null) {
                  ensureInitContainersIsMutable();
                  initContainers_.add(m);
                } else {
                  initContainersBuilder_.addMessage(m);
                }
                break;
              } // case 162
              case 168: {
                automountServiceAccountToken_ = input.readBool();
                bitField0_ |= 0x00000800;
                break;
              } // case 168
              case 178: {
                io.kubernetes.client.proto.V1.Toleration m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Toleration.parser(),
                        extensionRegistry);
                if (tolerationsBuilder_ == null) {
                  ensureTolerationsIsMutable();
                  tolerations_.add(m);
                } else {
                  tolerationsBuilder_.addMessage(m);
                }
                break;
              } // case 178
              case 186: {
                io.kubernetes.client.proto.V1.HostAlias m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.HostAlias.parser(),
                        extensionRegistry);
                if (hostAliasesBuilder_ == null) {
                  ensureHostAliasesIsMutable();
                  hostAliases_.add(m);
                } else {
                  hostAliasesBuilder_.addMessage(m);
                }
                break;
              } // case 186
              case 194: {
                priorityClassName_ = input.readBytes();
                bitField0_ |= 0x02000000;
                break;
              } // case 194
              case 200: {
                priority_ = input.readInt32();
                bitField0_ |= 0x04000000;
                break;
              } // case 200
              case 210: {
                input.readMessage(
                    getDnsConfigFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x08000000;
                break;
              } // case 210
              case 216: {
                shareProcessNamespace_ = input.readBool();
                bitField0_ |= 0x00010000;
                break;
              } // case 216
              case 226: {
                io.kubernetes.client.proto.V1.PodReadinessGate m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PodReadinessGate.parser(),
                        extensionRegistry);
                if (readinessGatesBuilder_ == null) {
                  ensureReadinessGatesIsMutable();
                  readinessGates_.add(m);
                } else {
                  readinessGatesBuilder_.addMessage(m);
                }
                break;
              } // case 226
              case 234: {
                runtimeClassName_ = input.readBytes();
                bitField0_ |= 0x20000000;
                break;
              } // case 234
              case 240: {
                enableServiceLinks_ = input.readBool();
                bitField0_ |= 0x40000000;
                break;
              } // case 240
              case 250: {
                preemptionPolicy_ = input.readBytes();
                bitField0_ |= 0x80000000;
                break;
              } // case 250
              case 258: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                overhead__ = input.readMessage(
                    OverheadDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableOverhead().ensureBuilderMap().put(
                    overhead__.getKey(), overhead__.getValue());
                bitField1_ |= 0x00000001;
                break;
              } // case 258
              case 266: {
                io.kubernetes.client.proto.V1.TopologySpreadConstraint m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.TopologySpreadConstraint.parser(),
                        extensionRegistry);
                if (topologySpreadConstraintsBuilder_ == null) {
                  ensureTopologySpreadConstraintsIsMutable();
                  topologySpreadConstraints_.add(m);
                } else {
                  topologySpreadConstraintsBuilder_.addMessage(m);
                }
                break;
              } // case 266
              case 274: {
                io.kubernetes.client.proto.V1.EphemeralContainer m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.EphemeralContainer.parser(),
                        extensionRegistry);
                if (ephemeralContainersBuilder_ == null) {
                  ensureEphemeralContainersIsMutable();
                  ephemeralContainers_.add(m);
                } else {
                  ephemeralContainersBuilder_.addMessage(m);
                }
                break;
              } // case 274
              case 280: {
                setHostnameAsFQDN_ = input.readBool();
                bitField1_ |= 0x00000004;
                break;
              } // case 280
              case 290: {
                input.readMessage(
                    getOsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField1_ |= 0x00000008;
                break;
              } // case 290
              case 296: {
                hostUsers_ = input.readBool();
                bitField1_ |= 0x00000010;
                break;
              } // case 296
              case 306: {
                io.kubernetes.client.proto.V1.PodSchedulingGate m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PodSchedulingGate.parser(),
                        extensionRegistry);
                if (schedulingGatesBuilder_ == null) {
                  ensureSchedulingGatesIsMutable();
                  schedulingGates_.add(m);
                } else {
                  schedulingGatesBuilder_.addMessage(m);
                }
                break;
              } // case 306
              case 314: {
                io.kubernetes.client.proto.V1.PodResourceClaim m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PodResourceClaim.parser(),
                        extensionRegistry);
                if (resourceClaimsBuilder_ == null) {
                  ensureResourceClaimsIsMutable();
                  resourceClaims_.add(m);
                } else {
                  resourceClaimsBuilder_.addMessage(m);
                }
                break;
              } // case 314
              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.util.List<io.kubernetes.client.proto.V1.Volume> volumes_ =
        java.util.Collections.emptyList();
      private void ensureVolumesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          volumes_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Volume>(volumes_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Volume, io.kubernetes.client.proto.V1.Volume.Builder, io.kubernetes.client.proto.V1.VolumeOrBuilder> volumesBuilder_;

      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Volume> getVolumesList() {
        if (volumesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(volumes_);
        } else {
          return volumesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public int getVolumesCount() {
        if (volumesBuilder_ == null) {
          return volumes_.size();
        } else {
          return volumesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public io.kubernetes.client.proto.V1.Volume getVolumes(int index) {
        if (volumesBuilder_ == null) {
          return volumes_.get(index);
        } else {
          return volumesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public Builder setVolumes(
          int index, io.kubernetes.client.proto.V1.Volume value) {
        if (volumesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumesIsMutable();
          volumes_.set(index, value);
          onChanged();
        } else {
          volumesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public Builder setVolumes(
          int index, io.kubernetes.client.proto.V1.Volume.Builder builderForValue) {
        if (volumesBuilder_ == null) {
          ensureVolumesIsMutable();
          volumes_.set(index, builderForValue.build());
          onChanged();
        } else {
          volumesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public Builder addVolumes(io.kubernetes.client.proto.V1.Volume value) {
        if (volumesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumesIsMutable();
          volumes_.add(value);
          onChanged();
        } else {
          volumesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public Builder addVolumes(
          int index, io.kubernetes.client.proto.V1.Volume value) {
        if (volumesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVolumesIsMutable();
          volumes_.add(index, value);
          onChanged();
        } else {
          volumesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public Builder addVolumes(
          io.kubernetes.client.proto.V1.Volume.Builder builderForValue) {
        if (volumesBuilder_ == null) {
          ensureVolumesIsMutable();
          volumes_.add(builderForValue.build());
          onChanged();
        } else {
          volumesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public Builder addVolumes(
          int index, io.kubernetes.client.proto.V1.Volume.Builder builderForValue) {
        if (volumesBuilder_ == null) {
          ensureVolumesIsMutable();
          volumes_.add(index, builderForValue.build());
          onChanged();
        } else {
          volumesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public Builder addAllVolumes(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Volume> values) {
        if (volumesBuilder_ == null) {
          ensureVolumesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, volumes_);
          onChanged();
        } else {
          volumesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public Builder clearVolumes() {
        if (volumesBuilder_ == null) {
          volumes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          volumesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public Builder removeVolumes(int index) {
        if (volumesBuilder_ == null) {
          ensureVolumesIsMutable();
          volumes_.remove(index);
          onChanged();
        } else {
          volumesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public io.kubernetes.client.proto.V1.Volume.Builder getVolumesBuilder(
          int index) {
        return getVolumesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeOrBuilder getVolumesOrBuilder(
          int index) {
        if (volumesBuilder_ == null) {
          return volumes_.get(index);  } else {
          return volumesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeOrBuilder> 
           getVolumesOrBuilderList() {
        if (volumesBuilder_ != null) {
          return volumesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(volumes_);
        }
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public io.kubernetes.client.proto.V1.Volume.Builder addVolumesBuilder() {
        return getVolumesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Volume.getDefaultInstance());
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public io.kubernetes.client.proto.V1.Volume.Builder addVolumesBuilder(
          int index) {
        return getVolumesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Volume.getDefaultInstance());
      }
      /**
       * <pre>
       * List of volumes that can be mounted by containers belonging to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Volume volumes = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Volume.Builder> 
           getVolumesBuilderList() {
        return getVolumesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Volume, io.kubernetes.client.proto.V1.Volume.Builder, io.kubernetes.client.proto.V1.VolumeOrBuilder> 
          getVolumesFieldBuilder() {
        if (volumesBuilder_ == null) {
          volumesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Volume, io.kubernetes.client.proto.V1.Volume.Builder, io.kubernetes.client.proto.V1.VolumeOrBuilder>(
                  volumes_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          volumes_ = null;
        }
        return volumesBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.Container> initContainers_ =
        java.util.Collections.emptyList();
      private void ensureInitContainersIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          initContainers_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Container>(initContainers_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Container, io.kubernetes.client.proto.V1.Container.Builder, io.kubernetes.client.proto.V1.ContainerOrBuilder> initContainersBuilder_;

      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Container> getInitContainersList() {
        if (initContainersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(initContainers_);
        } else {
          return initContainersBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public int getInitContainersCount() {
        if (initContainersBuilder_ == null) {
          return initContainers_.size();
        } else {
          return initContainersBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public io.kubernetes.client.proto.V1.Container getInitContainers(int index) {
        if (initContainersBuilder_ == null) {
          return initContainers_.get(index);
        } else {
          return initContainersBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public Builder setInitContainers(
          int index, io.kubernetes.client.proto.V1.Container value) {
        if (initContainersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInitContainersIsMutable();
          initContainers_.set(index, value);
          onChanged();
        } else {
          initContainersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public Builder setInitContainers(
          int index, io.kubernetes.client.proto.V1.Container.Builder builderForValue) {
        if (initContainersBuilder_ == null) {
          ensureInitContainersIsMutable();
          initContainers_.set(index, builderForValue.build());
          onChanged();
        } else {
          initContainersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public Builder addInitContainers(io.kubernetes.client.proto.V1.Container value) {
        if (initContainersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInitContainersIsMutable();
          initContainers_.add(value);
          onChanged();
        } else {
          initContainersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public Builder addInitContainers(
          int index, io.kubernetes.client.proto.V1.Container value) {
        if (initContainersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInitContainersIsMutable();
          initContainers_.add(index, value);
          onChanged();
        } else {
          initContainersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public Builder addInitContainers(
          io.kubernetes.client.proto.V1.Container.Builder builderForValue) {
        if (initContainersBuilder_ == null) {
          ensureInitContainersIsMutable();
          initContainers_.add(builderForValue.build());
          onChanged();
        } else {
          initContainersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public Builder addInitContainers(
          int index, io.kubernetes.client.proto.V1.Container.Builder builderForValue) {
        if (initContainersBuilder_ == null) {
          ensureInitContainersIsMutable();
          initContainers_.add(index, builderForValue.build());
          onChanged();
        } else {
          initContainersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public Builder addAllInitContainers(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Container> values) {
        if (initContainersBuilder_ == null) {
          ensureInitContainersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, initContainers_);
          onChanged();
        } else {
          initContainersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public Builder clearInitContainers() {
        if (initContainersBuilder_ == null) {
          initContainers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          initContainersBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public Builder removeInitContainers(int index) {
        if (initContainersBuilder_ == null) {
          ensureInitContainersIsMutable();
          initContainers_.remove(index);
          onChanged();
        } else {
          initContainersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public io.kubernetes.client.proto.V1.Container.Builder getInitContainersBuilder(
          int index) {
        return getInitContainersFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerOrBuilder getInitContainersOrBuilder(
          int index) {
        if (initContainersBuilder_ == null) {
          return initContainers_.get(index);  } else {
          return initContainersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerOrBuilder> 
           getInitContainersOrBuilderList() {
        if (initContainersBuilder_ != null) {
          return initContainersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(initContainers_);
        }
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public io.kubernetes.client.proto.V1.Container.Builder addInitContainersBuilder() {
        return getInitContainersFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Container.getDefaultInstance());
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public io.kubernetes.client.proto.V1.Container.Builder addInitContainersBuilder(
          int index) {
        return getInitContainersFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Container.getDefaultInstance());
      }
      /**
       * <pre>
       * List of initialization containers belonging to the pod.
       * Init containers are executed in order prior to containers being started. If any
       * init container fails, the pod is considered to have failed and is handled according
       * to its restartPolicy. The name for an init container or normal container must be
       * unique among all containers.
       * Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
       * The resourceRequirements of an init container are taken into account during scheduling
       * by finding the highest request/limit for each resource type, and then using the max of
       * of that value or the sum of the normal containers. Limits are applied to init containers
       * in a similar fashion.
       * Init containers cannot currently be added or removed.
       * Cannot be updated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container initContainers = 20;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Container.Builder> 
           getInitContainersBuilderList() {
        return getInitContainersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Container, io.kubernetes.client.proto.V1.Container.Builder, io.kubernetes.client.proto.V1.ContainerOrBuilder> 
          getInitContainersFieldBuilder() {
        if (initContainersBuilder_ == null) {
          initContainersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Container, io.kubernetes.client.proto.V1.Container.Builder, io.kubernetes.client.proto.V1.ContainerOrBuilder>(
                  initContainers_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          initContainers_ = null;
        }
        return initContainersBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.Container> containers_ =
        java.util.Collections.emptyList();
      private void ensureContainersIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          containers_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Container>(containers_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Container, io.kubernetes.client.proto.V1.Container.Builder, io.kubernetes.client.proto.V1.ContainerOrBuilder> containersBuilder_;

      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Container> getContainersList() {
        if (containersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(containers_);
        } else {
          return containersBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public int getContainersCount() {
        if (containersBuilder_ == null) {
          return containers_.size();
        } else {
          return containersBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Container getContainers(int index) {
        if (containersBuilder_ == null) {
          return containers_.get(index);
        } else {
          return containersBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public Builder setContainers(
          int index, io.kubernetes.client.proto.V1.Container value) {
        if (containersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContainersIsMutable();
          containers_.set(index, value);
          onChanged();
        } else {
          containersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public Builder setContainers(
          int index, io.kubernetes.client.proto.V1.Container.Builder builderForValue) {
        if (containersBuilder_ == null) {
          ensureContainersIsMutable();
          containers_.set(index, builderForValue.build());
          onChanged();
        } else {
          containersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public Builder addContainers(io.kubernetes.client.proto.V1.Container value) {
        if (containersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContainersIsMutable();
          containers_.add(value);
          onChanged();
        } else {
          containersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public Builder addContainers(
          int index, io.kubernetes.client.proto.V1.Container value) {
        if (containersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContainersIsMutable();
          containers_.add(index, value);
          onChanged();
        } else {
          containersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public Builder addContainers(
          io.kubernetes.client.proto.V1.Container.Builder builderForValue) {
        if (containersBuilder_ == null) {
          ensureContainersIsMutable();
          containers_.add(builderForValue.build());
          onChanged();
        } else {
          containersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public Builder addContainers(
          int index, io.kubernetes.client.proto.V1.Container.Builder builderForValue) {
        if (containersBuilder_ == null) {
          ensureContainersIsMutable();
          containers_.add(index, builderForValue.build());
          onChanged();
        } else {
          containersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public Builder addAllContainers(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Container> values) {
        if (containersBuilder_ == null) {
          ensureContainersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, containers_);
          onChanged();
        } else {
          containersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public Builder clearContainers() {
        if (containersBuilder_ == null) {
          containers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          containersBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public Builder removeContainers(int index) {
        if (containersBuilder_ == null) {
          ensureContainersIsMutable();
          containers_.remove(index);
          onChanged();
        } else {
          containersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Container.Builder getContainersBuilder(
          int index) {
        return getContainersFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerOrBuilder getContainersOrBuilder(
          int index) {
        if (containersBuilder_ == null) {
          return containers_.get(index);  } else {
          return containersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerOrBuilder> 
           getContainersOrBuilderList() {
        if (containersBuilder_ != null) {
          return containersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(containers_);
        }
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Container.Builder addContainersBuilder() {
        return getContainersFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Container.getDefaultInstance());
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Container.Builder addContainersBuilder(
          int index) {
        return getContainersFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Container.getDefaultInstance());
      }
      /**
       * <pre>
       * List of containers belonging to the pod.
       * Containers cannot currently be added or removed.
       * There must be at least one container in a Pod.
       * Cannot be updated.
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Container containers = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Container.Builder> 
           getContainersBuilderList() {
        return getContainersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Container, io.kubernetes.client.proto.V1.Container.Builder, io.kubernetes.client.proto.V1.ContainerOrBuilder> 
          getContainersFieldBuilder() {
        if (containersBuilder_ == null) {
          containersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Container, io.kubernetes.client.proto.V1.Container.Builder, io.kubernetes.client.proto.V1.ContainerOrBuilder>(
                  containers_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          containers_ = null;
        }
        return containersBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.EphemeralContainer> ephemeralContainers_ =
        java.util.Collections.emptyList();
      private void ensureEphemeralContainersIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          ephemeralContainers_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.EphemeralContainer>(ephemeralContainers_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EphemeralContainer, io.kubernetes.client.proto.V1.EphemeralContainer.Builder, io.kubernetes.client.proto.V1.EphemeralContainerOrBuilder> ephemeralContainersBuilder_;

      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EphemeralContainer> getEphemeralContainersList() {
        if (ephemeralContainersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ephemeralContainers_);
        } else {
          return ephemeralContainersBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public int getEphemeralContainersCount() {
        if (ephemeralContainersBuilder_ == null) {
          return ephemeralContainers_.size();
        } else {
          return ephemeralContainersBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public io.kubernetes.client.proto.V1.EphemeralContainer getEphemeralContainers(int index) {
        if (ephemeralContainersBuilder_ == null) {
          return ephemeralContainers_.get(index);
        } else {
          return ephemeralContainersBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public Builder setEphemeralContainers(
          int index, io.kubernetes.client.proto.V1.EphemeralContainer value) {
        if (ephemeralContainersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEphemeralContainersIsMutable();
          ephemeralContainers_.set(index, value);
          onChanged();
        } else {
          ephemeralContainersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public Builder setEphemeralContainers(
          int index, io.kubernetes.client.proto.V1.EphemeralContainer.Builder builderForValue) {
        if (ephemeralContainersBuilder_ == null) {
          ensureEphemeralContainersIsMutable();
          ephemeralContainers_.set(index, builderForValue.build());
          onChanged();
        } else {
          ephemeralContainersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public Builder addEphemeralContainers(io.kubernetes.client.proto.V1.EphemeralContainer value) {
        if (ephemeralContainersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEphemeralContainersIsMutable();
          ephemeralContainers_.add(value);
          onChanged();
        } else {
          ephemeralContainersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public Builder addEphemeralContainers(
          int index, io.kubernetes.client.proto.V1.EphemeralContainer value) {
        if (ephemeralContainersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEphemeralContainersIsMutable();
          ephemeralContainers_.add(index, value);
          onChanged();
        } else {
          ephemeralContainersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public Builder addEphemeralContainers(
          io.kubernetes.client.proto.V1.EphemeralContainer.Builder builderForValue) {
        if (ephemeralContainersBuilder_ == null) {
          ensureEphemeralContainersIsMutable();
          ephemeralContainers_.add(builderForValue.build());
          onChanged();
        } else {
          ephemeralContainersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public Builder addEphemeralContainers(
          int index, io.kubernetes.client.proto.V1.EphemeralContainer.Builder builderForValue) {
        if (ephemeralContainersBuilder_ == null) {
          ensureEphemeralContainersIsMutable();
          ephemeralContainers_.add(index, builderForValue.build());
          onChanged();
        } else {
          ephemeralContainersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public Builder addAllEphemeralContainers(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.EphemeralContainer> values) {
        if (ephemeralContainersBuilder_ == null) {
          ensureEphemeralContainersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ephemeralContainers_);
          onChanged();
        } else {
          ephemeralContainersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public Builder clearEphemeralContainers() {
        if (ephemeralContainersBuilder_ == null) {
          ephemeralContainers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          ephemeralContainersBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public Builder removeEphemeralContainers(int index) {
        if (ephemeralContainersBuilder_ == null) {
          ensureEphemeralContainersIsMutable();
          ephemeralContainers_.remove(index);
          onChanged();
        } else {
          ephemeralContainersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public io.kubernetes.client.proto.V1.EphemeralContainer.Builder getEphemeralContainersBuilder(
          int index) {
        return getEphemeralContainersFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public io.kubernetes.client.proto.V1.EphemeralContainerOrBuilder getEphemeralContainersOrBuilder(
          int index) {
        if (ephemeralContainersBuilder_ == null) {
          return ephemeralContainers_.get(index);  } else {
          return ephemeralContainersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.EphemeralContainerOrBuilder> 
           getEphemeralContainersOrBuilderList() {
        if (ephemeralContainersBuilder_ != null) {
          return ephemeralContainersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ephemeralContainers_);
        }
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public io.kubernetes.client.proto.V1.EphemeralContainer.Builder addEphemeralContainersBuilder() {
        return getEphemeralContainersFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.EphemeralContainer.getDefaultInstance());
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public io.kubernetes.client.proto.V1.EphemeralContainer.Builder addEphemeralContainersBuilder(
          int index) {
        return getEphemeralContainersFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.EphemeralContainer.getDefaultInstance());
      }
      /**
       * <pre>
       * List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
       * pod to perform user-initiated actions such as debugging. This list cannot be specified when
       * creating a pod, and it cannot be modified by updating the pod spec. In order to add an
       * ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.EphemeralContainer ephemeralContainers = 34;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.EphemeralContainer.Builder> 
           getEphemeralContainersBuilderList() {
        return getEphemeralContainersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.EphemeralContainer, io.kubernetes.client.proto.V1.EphemeralContainer.Builder, io.kubernetes.client.proto.V1.EphemeralContainerOrBuilder> 
          getEphemeralContainersFieldBuilder() {
        if (ephemeralContainersBuilder_ == null) {
          ephemeralContainersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.EphemeralContainer, io.kubernetes.client.proto.V1.EphemeralContainer.Builder, io.kubernetes.client.proto.V1.EphemeralContainerOrBuilder>(
                  ephemeralContainers_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          ephemeralContainers_ = null;
        }
        return ephemeralContainersBuilder_;
      }

      private java.lang.Object restartPolicy_ = "";
      /**
       * <pre>
       * Restart policy for all containers within the pod.
       * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
       * Default to Always.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 3;</code>
       * @return Whether the restartPolicy field is set.
       */
      public boolean hasRestartPolicy() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Restart policy for all containers within the pod.
       * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
       * Default to Always.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 3;</code>
       * @return The restartPolicy.
       */
      public java.lang.String getRestartPolicy() {
        java.lang.Object ref = restartPolicy_;
        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()) {
            restartPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Restart policy for all containers within the pod.
       * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
       * Default to Always.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 3;</code>
       * @return The bytes for restartPolicy.
       */
      public com.google.protobuf.ByteString
          getRestartPolicyBytes() {
        java.lang.Object ref = restartPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          restartPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Restart policy for all containers within the pod.
       * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
       * Default to Always.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 3;</code>
       * @param value The restartPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setRestartPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        restartPolicy_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Restart policy for all containers within the pod.
       * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
       * Default to Always.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRestartPolicy() {
        restartPolicy_ = getDefaultInstance().getRestartPolicy();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Restart policy for all containers within the pod.
       * One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.
       * Default to Always.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
       * +optional
       * </pre>
       *
       * <code>optional string restartPolicy = 3;</code>
       * @param value The bytes for restartPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setRestartPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        restartPolicy_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private long terminationGracePeriodSeconds_ ;
      /**
       * <pre>
       * Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
       * Value must be non-negative integer. The value zero indicates stop immediately via
       * the kill signal (no opportunity to shut down).
       * If this value is nil, the default grace period will be used instead.
       * The grace period is the duration in seconds after the processes running in the pod are sent
       * a termination signal and the time when the processes are forcibly halted with a kill signal.
       * Set this value longer than the expected cleanup time for your process.
       * Defaults to 30 seconds.
       * +optional
       * </pre>
       *
       * <code>optional int64 terminationGracePeriodSeconds = 4;</code>
       * @return Whether the terminationGracePeriodSeconds field is set.
       */
      @java.lang.Override
      public boolean hasTerminationGracePeriodSeconds() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
       * Value must be non-negative integer. The value zero indicates stop immediately via
       * the kill signal (no opportunity to shut down).
       * If this value is nil, the default grace period will be used instead.
       * The grace period is the duration in seconds after the processes running in the pod are sent
       * a termination signal and the time when the processes are forcibly halted with a kill signal.
       * Set this value longer than the expected cleanup time for your process.
       * Defaults to 30 seconds.
       * +optional
       * </pre>
       *
       * <code>optional int64 terminationGracePeriodSeconds = 4;</code>
       * @return The terminationGracePeriodSeconds.
       */
      @java.lang.Override
      public long getTerminationGracePeriodSeconds() {
        return terminationGracePeriodSeconds_;
      }
      /**
       * <pre>
       * Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
       * Value must be non-negative integer. The value zero indicates stop immediately via
       * the kill signal (no opportunity to shut down).
       * If this value is nil, the default grace period will be used instead.
       * The grace period is the duration in seconds after the processes running in the pod are sent
       * a termination signal and the time when the processes are forcibly halted with a kill signal.
       * Set this value longer than the expected cleanup time for your process.
       * Defaults to 30 seconds.
       * +optional
       * </pre>
       *
       * <code>optional int64 terminationGracePeriodSeconds = 4;</code>
       * @param value The terminationGracePeriodSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setTerminationGracePeriodSeconds(long value) {

        terminationGracePeriodSeconds_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
       * Value must be non-negative integer. The value zero indicates stop immediately via
       * the kill signal (no opportunity to shut down).
       * If this value is nil, the default grace period will be used instead.
       * The grace period is the duration in seconds after the processes running in the pod are sent
       * a termination signal and the time when the processes are forcibly halted with a kill signal.
       * Set this value longer than the expected cleanup time for your process.
       * Defaults to 30 seconds.
       * +optional
       * </pre>
       *
       * <code>optional int64 terminationGracePeriodSeconds = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTerminationGracePeriodSeconds() {
        bitField0_ = (bitField0_ & ~0x00000020);
        terminationGracePeriodSeconds_ = 0L;
        onChanged();
        return this;
      }

      private long activeDeadlineSeconds_ ;
      /**
       * <pre>
       * Optional duration in seconds the pod may be active on the node relative to
       * StartTime before the system will actively try to mark it failed and kill associated containers.
       * Value must be a positive integer.
       * +optional
       * </pre>
       *
       * <code>optional int64 activeDeadlineSeconds = 5;</code>
       * @return Whether the activeDeadlineSeconds field is set.
       */
      @java.lang.Override
      public boolean hasActiveDeadlineSeconds() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Optional duration in seconds the pod may be active on the node relative to
       * StartTime before the system will actively try to mark it failed and kill associated containers.
       * Value must be a positive integer.
       * +optional
       * </pre>
       *
       * <code>optional int64 activeDeadlineSeconds = 5;</code>
       * @return The activeDeadlineSeconds.
       */
      @java.lang.Override
      public long getActiveDeadlineSeconds() {
        return activeDeadlineSeconds_;
      }
      /**
       * <pre>
       * Optional duration in seconds the pod may be active on the node relative to
       * StartTime before the system will actively try to mark it failed and kill associated containers.
       * Value must be a positive integer.
       * +optional
       * </pre>
       *
       * <code>optional int64 activeDeadlineSeconds = 5;</code>
       * @param value The activeDeadlineSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setActiveDeadlineSeconds(long value) {

        activeDeadlineSeconds_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional duration in seconds the pod may be active on the node relative to
       * StartTime before the system will actively try to mark it failed and kill associated containers.
       * Value must be a positive integer.
       * +optional
       * </pre>
       *
       * <code>optional int64 activeDeadlineSeconds = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearActiveDeadlineSeconds() {
        bitField0_ = (bitField0_ & ~0x00000040);
        activeDeadlineSeconds_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object dnsPolicy_ = "";
      /**
       * <pre>
       * Set DNS policy for the pod.
       * Defaults to "ClusterFirst".
       * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
       * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
       * To have DNS options set along with hostNetwork, you have to specify DNS policy
       * explicitly to 'ClusterFirstWithHostNet'.
       * +optional
       * </pre>
       *
       * <code>optional string dnsPolicy = 6;</code>
       * @return Whether the dnsPolicy field is set.
       */
      public boolean hasDnsPolicy() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * Set DNS policy for the pod.
       * Defaults to "ClusterFirst".
       * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
       * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
       * To have DNS options set along with hostNetwork, you have to specify DNS policy
       * explicitly to 'ClusterFirstWithHostNet'.
       * +optional
       * </pre>
       *
       * <code>optional string dnsPolicy = 6;</code>
       * @return The dnsPolicy.
       */
      public java.lang.String getDnsPolicy() {
        java.lang.Object ref = dnsPolicy_;
        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()) {
            dnsPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Set DNS policy for the pod.
       * Defaults to "ClusterFirst".
       * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
       * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
       * To have DNS options set along with hostNetwork, you have to specify DNS policy
       * explicitly to 'ClusterFirstWithHostNet'.
       * +optional
       * </pre>
       *
       * <code>optional string dnsPolicy = 6;</code>
       * @return The bytes for dnsPolicy.
       */
      public com.google.protobuf.ByteString
          getDnsPolicyBytes() {
        java.lang.Object ref = dnsPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dnsPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Set DNS policy for the pod.
       * Defaults to "ClusterFirst".
       * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
       * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
       * To have DNS options set along with hostNetwork, you have to specify DNS policy
       * explicitly to 'ClusterFirstWithHostNet'.
       * +optional
       * </pre>
       *
       * <code>optional string dnsPolicy = 6;</code>
       * @param value The dnsPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setDnsPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        dnsPolicy_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Set DNS policy for the pod.
       * Defaults to "ClusterFirst".
       * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
       * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
       * To have DNS options set along with hostNetwork, you have to specify DNS policy
       * explicitly to 'ClusterFirstWithHostNet'.
       * +optional
       * </pre>
       *
       * <code>optional string dnsPolicy = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearDnsPolicy() {
        dnsPolicy_ = getDefaultInstance().getDnsPolicy();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Set DNS policy for the pod.
       * Defaults to "ClusterFirst".
       * Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
       * DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
       * To have DNS options set along with hostNetwork, you have to specify DNS policy
       * explicitly to 'ClusterFirstWithHostNet'.
       * +optional
       * </pre>
       *
       * <code>optional string dnsPolicy = 6;</code>
       * @param value The bytes for dnsPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setDnsPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        dnsPolicy_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> nodeSelector_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetNodeSelector() {
        if (nodeSelector_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              NodeSelectorDefaultEntryHolder.defaultEntry);
        }
        return nodeSelector_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableNodeSelector() {
        if (nodeSelector_ == null) {
          nodeSelector_ = com.google.protobuf.MapField.newMapField(
              NodeSelectorDefaultEntryHolder.defaultEntry);
        }
        if (!nodeSelector_.isMutable()) {
          nodeSelector_ = nodeSelector_.copy();
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return nodeSelector_;
      }
      public int getNodeSelectorCount() {
        return internalGetNodeSelector().getMap().size();
      }
      /**
       * <pre>
       * NodeSelector is a selector which must be true for the pod to fit on a node.
       * Selector which must match a node's labels for the pod to be scheduled on that node.
       * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
       */
      @java.lang.Override
      public boolean containsNodeSelector(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetNodeSelector().getMap().containsKey(key);
      }
      /**
       * Use {@link #getNodeSelectorMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getNodeSelector() {
        return getNodeSelectorMap();
      }
      /**
       * <pre>
       * NodeSelector is a selector which must be true for the pod to fit on a node.
       * Selector which must match a node's labels for the pod to be scheduled on that node.
       * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getNodeSelectorMap() {
        return internalGetNodeSelector().getMap();
      }
      /**
       * <pre>
       * NodeSelector is a selector which must be true for the pod to fit on a node.
       * Selector which must match a node's labels for the pod to be scheduled on that node.
       * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getNodeSelectorOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetNodeSelector().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * NodeSelector is a selector which must be true for the pod to fit on a node.
       * Selector which must match a node's labels for the pod to be scheduled on that node.
       * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
       */
      @java.lang.Override
      public java.lang.String getNodeSelectorOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetNodeSelector().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearNodeSelector() {
        bitField0_ = (bitField0_ & ~0x00000100);
        internalGetMutableNodeSelector().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * NodeSelector is a selector which must be true for the pod to fit on a node.
       * Selector which must match a node's labels for the pod to be scheduled on that node.
       * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
       */
      public Builder removeNodeSelector(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableNodeSelector().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableNodeSelector() {
        bitField0_ |= 0x00000100;
        return internalGetMutableNodeSelector().getMutableMap();
      }
      /**
       * <pre>
       * NodeSelector is a selector which must be true for the pod to fit on a node.
       * Selector which must match a node's labels for the pod to be scheduled on that node.
       * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
       */
      public Builder putNodeSelector(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableNodeSelector().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <pre>
       * NodeSelector is a selector which must be true for the pod to fit on a node.
       * Selector which must match a node's labels for the pod to be scheduled on that node.
       * More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; nodeSelector = 7;</code>
       */
      public Builder putAllNodeSelector(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableNodeSelector().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000100;
        return this;
      }

      private java.lang.Object serviceAccountName_ = "";
      /**
       * <pre>
       * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccountName = 8;</code>
       * @return Whether the serviceAccountName field is set.
       */
      public boolean hasServiceAccountName() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccountName = 8;</code>
       * @return The serviceAccountName.
       */
      public java.lang.String getServiceAccountName() {
        java.lang.Object ref = serviceAccountName_;
        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()) {
            serviceAccountName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccountName = 8;</code>
       * @return The bytes for serviceAccountName.
       */
      public com.google.protobuf.ByteString
          getServiceAccountNameBytes() {
        java.lang.Object ref = serviceAccountName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serviceAccountName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccountName = 8;</code>
       * @param value The serviceAccountName to set.
       * @return This builder for chaining.
       */
      public Builder setServiceAccountName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        serviceAccountName_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccountName = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearServiceAccountName() {
        serviceAccountName_ = getDefaultInstance().getServiceAccountName();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ServiceAccountName is the name of the ServiceAccount to use to run this pod.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccountName = 8;</code>
       * @param value The bytes for serviceAccountName to set.
       * @return This builder for chaining.
       */
      public Builder setServiceAccountNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        serviceAccountName_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      private java.lang.Object serviceAccount_ = "";
      /**
       * <pre>
       * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
       * Deprecated: Use serviceAccountName instead.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccount = 9;</code>
       * @return Whether the serviceAccount field is set.
       */
      public boolean hasServiceAccount() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
       * Deprecated: Use serviceAccountName instead.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccount = 9;</code>
       * @return The serviceAccount.
       */
      public java.lang.String getServiceAccount() {
        java.lang.Object ref = serviceAccount_;
        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()) {
            serviceAccount_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
       * Deprecated: Use serviceAccountName instead.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccount = 9;</code>
       * @return The bytes for serviceAccount.
       */
      public com.google.protobuf.ByteString
          getServiceAccountBytes() {
        java.lang.Object ref = serviceAccount_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serviceAccount_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
       * Deprecated: Use serviceAccountName instead.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccount = 9;</code>
       * @param value The serviceAccount to set.
       * @return This builder for chaining.
       */
      public Builder setServiceAccount(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        serviceAccount_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
       * Deprecated: Use serviceAccountName instead.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccount = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearServiceAccount() {
        serviceAccount_ = getDefaultInstance().getServiceAccount();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.
       * Deprecated: Use serviceAccountName instead.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional string serviceAccount = 9;</code>
       * @param value The bytes for serviceAccount to set.
       * @return This builder for chaining.
       */
      public Builder setServiceAccountBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        serviceAccount_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }

      private boolean automountServiceAccountToken_ ;
      /**
       * <pre>
       * AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
       * +optional
       * </pre>
       *
       * <code>optional bool automountServiceAccountToken = 21;</code>
       * @return Whether the automountServiceAccountToken field is set.
       */
      @java.lang.Override
      public boolean hasAutomountServiceAccountToken() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
       * +optional
       * </pre>
       *
       * <code>optional bool automountServiceAccountToken = 21;</code>
       * @return The automountServiceAccountToken.
       */
      @java.lang.Override
      public boolean getAutomountServiceAccountToken() {
        return automountServiceAccountToken_;
      }
      /**
       * <pre>
       * AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
       * +optional
       * </pre>
       *
       * <code>optional bool automountServiceAccountToken = 21;</code>
       * @param value The automountServiceAccountToken to set.
       * @return This builder for chaining.
       */
      public Builder setAutomountServiceAccountToken(boolean value) {

        automountServiceAccountToken_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
       * +optional
       * </pre>
       *
       * <code>optional bool automountServiceAccountToken = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearAutomountServiceAccountToken() {
        bitField0_ = (bitField0_ & ~0x00000800);
        automountServiceAccountToken_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object nodeName_ = "";
      /**
       * <pre>
       * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
       * the scheduler simply schedules this pod onto that node, assuming that it fits resource
       * requirements.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 10;</code>
       * @return Whether the nodeName field is set.
       */
      public boolean hasNodeName() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
       * the scheduler simply schedules this pod onto that node, assuming that it fits resource
       * requirements.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 10;</code>
       * @return The nodeName.
       */
      public java.lang.String getNodeName() {
        java.lang.Object ref = nodeName_;
        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()) {
            nodeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
       * the scheduler simply schedules this pod onto that node, assuming that it fits resource
       * requirements.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 10;</code>
       * @return The bytes for nodeName.
       */
      public com.google.protobuf.ByteString
          getNodeNameBytes() {
        java.lang.Object ref = nodeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nodeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
       * the scheduler simply schedules this pod onto that node, assuming that it fits resource
       * requirements.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 10;</code>
       * @param value The nodeName to set.
       * @return This builder for chaining.
       */
      public Builder setNodeName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        nodeName_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
       * the scheduler simply schedules this pod onto that node, assuming that it fits resource
       * requirements.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearNodeName() {
        nodeName_ = getDefaultInstance().getNodeName();
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
       * the scheduler simply schedules this pod onto that node, assuming that it fits resource
       * requirements.
       * +optional
       * </pre>
       *
       * <code>optional string nodeName = 10;</code>
       * @param value The bytes for nodeName to set.
       * @return This builder for chaining.
       */
      public Builder setNodeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        nodeName_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }

      private boolean hostNetwork_ ;
      /**
       * <pre>
       * Host networking requested for this pod. Use the host's network namespace.
       * If this option is set, the ports that will be used must be specified.
       * Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostNetwork = 11;</code>
       * @return Whether the hostNetwork field is set.
       */
      @java.lang.Override
      public boolean hasHostNetwork() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * Host networking requested for this pod. Use the host's network namespace.
       * If this option is set, the ports that will be used must be specified.
       * Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostNetwork = 11;</code>
       * @return The hostNetwork.
       */
      @java.lang.Override
      public boolean getHostNetwork() {
        return hostNetwork_;
      }
      /**
       * <pre>
       * Host networking requested for this pod. Use the host's network namespace.
       * If this option is set, the ports that will be used must be specified.
       * Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostNetwork = 11;</code>
       * @param value The hostNetwork to set.
       * @return This builder for chaining.
       */
      public Builder setHostNetwork(boolean value) {

        hostNetwork_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Host networking requested for this pod. Use the host's network namespace.
       * If this option is set, the ports that will be used must be specified.
       * Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostNetwork = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostNetwork() {
        bitField0_ = (bitField0_ & ~0x00002000);
        hostNetwork_ = false;
        onChanged();
        return this;
      }

      private boolean hostPID_ ;
      /**
       * <pre>
       * Use the host's pid namespace.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostPID = 12;</code>
       * @return Whether the hostPID field is set.
       */
      @java.lang.Override
      public boolean hasHostPID() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * Use the host's pid namespace.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostPID = 12;</code>
       * @return The hostPID.
       */
      @java.lang.Override
      public boolean getHostPID() {
        return hostPID_;
      }
      /**
       * <pre>
       * Use the host's pid namespace.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostPID = 12;</code>
       * @param value The hostPID to set.
       * @return This builder for chaining.
       */
      public Builder setHostPID(boolean value) {

        hostPID_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Use the host's pid namespace.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostPID = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostPID() {
        bitField0_ = (bitField0_ & ~0x00004000);
        hostPID_ = false;
        onChanged();
        return this;
      }

      private boolean hostIPC_ ;
      /**
       * <pre>
       * Use the host's ipc namespace.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostIPC = 13;</code>
       * @return Whether the hostIPC field is set.
       */
      @java.lang.Override
      public boolean hasHostIPC() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <pre>
       * Use the host's ipc namespace.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostIPC = 13;</code>
       * @return The hostIPC.
       */
      @java.lang.Override
      public boolean getHostIPC() {
        return hostIPC_;
      }
      /**
       * <pre>
       * Use the host's ipc namespace.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostIPC = 13;</code>
       * @param value The hostIPC to set.
       * @return This builder for chaining.
       */
      public Builder setHostIPC(boolean value) {

        hostIPC_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Use the host's ipc namespace.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostIPC = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostIPC() {
        bitField0_ = (bitField0_ & ~0x00008000);
        hostIPC_ = false;
        onChanged();
        return this;
      }

      private boolean shareProcessNamespace_ ;
      /**
       * <pre>
       * Share a single process namespace between all of the containers in a pod.
       * When this is set containers will be able to view and signal processes from other containers
       * in the same pod, and the first process in each container will not be assigned PID 1.
       * HostPID and ShareProcessNamespace cannot both be set.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool shareProcessNamespace = 27;</code>
       * @return Whether the shareProcessNamespace field is set.
       */
      @java.lang.Override
      public boolean hasShareProcessNamespace() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <pre>
       * Share a single process namespace between all of the containers in a pod.
       * When this is set containers will be able to view and signal processes from other containers
       * in the same pod, and the first process in each container will not be assigned PID 1.
       * HostPID and ShareProcessNamespace cannot both be set.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool shareProcessNamespace = 27;</code>
       * @return The shareProcessNamespace.
       */
      @java.lang.Override
      public boolean getShareProcessNamespace() {
        return shareProcessNamespace_;
      }
      /**
       * <pre>
       * Share a single process namespace between all of the containers in a pod.
       * When this is set containers will be able to view and signal processes from other containers
       * in the same pod, and the first process in each container will not be assigned PID 1.
       * HostPID and ShareProcessNamespace cannot both be set.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool shareProcessNamespace = 27;</code>
       * @param value The shareProcessNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setShareProcessNamespace(boolean value) {

        shareProcessNamespace_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Share a single process namespace between all of the containers in a pod.
       * When this is set containers will be able to view and signal processes from other containers
       * in the same pod, and the first process in each container will not be assigned PID 1.
       * HostPID and ShareProcessNamespace cannot both be set.
       * Optional: Default to false.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool shareProcessNamespace = 27;</code>
       * @return This builder for chaining.
       */
      public Builder clearShareProcessNamespace() {
        bitField0_ = (bitField0_ & ~0x00010000);
        shareProcessNamespace_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.PodSecurityContext securityContext_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodSecurityContext, io.kubernetes.client.proto.V1.PodSecurityContext.Builder, io.kubernetes.client.proto.V1.PodSecurityContextOrBuilder> securityContextBuilder_;
      /**
       * <pre>
       * SecurityContext holds pod-level security attributes and common container settings.
       * Optional: Defaults to empty.  See type description for default values of each field.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
       * @return Whether the securityContext field is set.
       */
      public boolean hasSecurityContext() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <pre>
       * SecurityContext holds pod-level security attributes and common container settings.
       * Optional: Defaults to empty.  See type description for default values of each field.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
       * @return The securityContext.
       */
      public io.kubernetes.client.proto.V1.PodSecurityContext getSecurityContext() {
        if (securityContextBuilder_ == null) {
          return securityContext_ == null ? io.kubernetes.client.proto.V1.PodSecurityContext.getDefaultInstance() : securityContext_;
        } else {
          return securityContextBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * SecurityContext holds pod-level security attributes and common container settings.
       * Optional: Defaults to empty.  See type description for default values of each field.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
       */
      public Builder setSecurityContext(io.kubernetes.client.proto.V1.PodSecurityContext value) {
        if (securityContextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          securityContext_ = value;
        } else {
          securityContextBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SecurityContext holds pod-level security attributes and common container settings.
       * Optional: Defaults to empty.  See type description for default values of each field.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
       */
      public Builder setSecurityContext(
          io.kubernetes.client.proto.V1.PodSecurityContext.Builder builderForValue) {
        if (securityContextBuilder_ == null) {
          securityContext_ = builderForValue.build();
        } else {
          securityContextBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SecurityContext holds pod-level security attributes and common container settings.
       * Optional: Defaults to empty.  See type description for default values of each field.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
       */
      public Builder mergeSecurityContext(io.kubernetes.client.proto.V1.PodSecurityContext value) {
        if (securityContextBuilder_ == null) {
          if (((bitField0_ & 0x00020000) != 0) &&
            securityContext_ != null &&
            securityContext_ != io.kubernetes.client.proto.V1.PodSecurityContext.getDefaultInstance()) {
            getSecurityContextBuilder().mergeFrom(value);
          } else {
            securityContext_ = value;
          }
        } else {
          securityContextBuilder_.mergeFrom(value);
        }
        if (securityContext_ != null) {
          bitField0_ |= 0x00020000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * SecurityContext holds pod-level security attributes and common container settings.
       * Optional: Defaults to empty.  See type description for default values of each field.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
       */
      public Builder clearSecurityContext() {
        bitField0_ = (bitField0_ & ~0x00020000);
        securityContext_ = null;
        if (securityContextBuilder_ != null) {
          securityContextBuilder_.dispose();
          securityContextBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SecurityContext holds pod-level security attributes and common container settings.
       * Optional: Defaults to empty.  See type description for default values of each field.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
       */
      public io.kubernetes.client.proto.V1.PodSecurityContext.Builder getSecurityContextBuilder() {
        bitField0_ |= 0x00020000;
        onChanged();
        return getSecurityContextFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * SecurityContext holds pod-level security attributes and common container settings.
       * Optional: Defaults to empty.  See type description for default values of each field.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
       */
      public io.kubernetes.client.proto.V1.PodSecurityContextOrBuilder getSecurityContextOrBuilder() {
        if (securityContextBuilder_ != null) {
          return securityContextBuilder_.getMessageOrBuilder();
        } else {
          return securityContext_ == null ?
              io.kubernetes.client.proto.V1.PodSecurityContext.getDefaultInstance() : securityContext_;
        }
      }
      /**
       * <pre>
       * SecurityContext holds pod-level security attributes and common container settings.
       * Optional: Defaults to empty.  See type description for default values of each field.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSecurityContext securityContext = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodSecurityContext, io.kubernetes.client.proto.V1.PodSecurityContext.Builder, io.kubernetes.client.proto.V1.PodSecurityContextOrBuilder> 
          getSecurityContextFieldBuilder() {
        if (securityContextBuilder_ == null) {
          securityContextBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodSecurityContext, io.kubernetes.client.proto.V1.PodSecurityContext.Builder, io.kubernetes.client.proto.V1.PodSecurityContextOrBuilder>(
                  getSecurityContext(),
                  getParentForChildren(),
                  isClean());
          securityContext_ = null;
        }
        return securityContextBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference> imagePullSecrets_ =
        java.util.Collections.emptyList();
      private void ensureImagePullSecretsIsMutable() {
        if (!((bitField0_ & 0x00040000) != 0)) {
          imagePullSecrets_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.LocalObjectReference>(imagePullSecrets_);
          bitField0_ |= 0x00040000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> imagePullSecretsBuilder_;

      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference> getImagePullSecretsList() {
        if (imagePullSecretsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(imagePullSecrets_);
        } else {
          return imagePullSecretsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public int getImagePullSecretsCount() {
        if (imagePullSecretsBuilder_ == null) {
          return imagePullSecrets_.size();
        } else {
          return imagePullSecretsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getImagePullSecrets(int index) {
        if (imagePullSecretsBuilder_ == null) {
          return imagePullSecrets_.get(index);
        } else {
          return imagePullSecretsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public Builder setImagePullSecrets(
          int index, io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (imagePullSecretsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.set(index, value);
          onChanged();
        } else {
          imagePullSecretsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public Builder setImagePullSecrets(
          int index, io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (imagePullSecretsBuilder_ == null) {
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.set(index, builderForValue.build());
          onChanged();
        } else {
          imagePullSecretsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public Builder addImagePullSecrets(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (imagePullSecretsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.add(value);
          onChanged();
        } else {
          imagePullSecretsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public Builder addImagePullSecrets(
          int index, io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (imagePullSecretsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.add(index, value);
          onChanged();
        } else {
          imagePullSecretsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public Builder addImagePullSecrets(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (imagePullSecretsBuilder_ == null) {
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.add(builderForValue.build());
          onChanged();
        } else {
          imagePullSecretsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public Builder addImagePullSecrets(
          int index, io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (imagePullSecretsBuilder_ == null) {
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.add(index, builderForValue.build());
          onChanged();
        } else {
          imagePullSecretsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public Builder addAllImagePullSecrets(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.LocalObjectReference> values) {
        if (imagePullSecretsBuilder_ == null) {
          ensureImagePullSecretsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, imagePullSecrets_);
          onChanged();
        } else {
          imagePullSecretsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public Builder clearImagePullSecrets() {
        if (imagePullSecretsBuilder_ == null) {
          imagePullSecrets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00040000);
          onChanged();
        } else {
          imagePullSecretsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public Builder removeImagePullSecrets(int index) {
        if (imagePullSecretsBuilder_ == null) {
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.remove(index);
          onChanged();
        } else {
          imagePullSecretsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getImagePullSecretsBuilder(
          int index) {
        return getImagePullSecretsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getImagePullSecretsOrBuilder(
          int index) {
        if (imagePullSecretsBuilder_ == null) {
          return imagePullSecrets_.get(index);  } else {
          return imagePullSecretsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
           getImagePullSecretsOrBuilderList() {
        if (imagePullSecretsBuilder_ != null) {
          return imagePullSecretsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(imagePullSecrets_);
        }
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder addImagePullSecretsBuilder() {
        return getImagePullSecretsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance());
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder addImagePullSecretsBuilder(
          int index) {
        return getImagePullSecretsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance());
      }
      /**
       * <pre>
       * ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
       * If specified, these secrets will be passed to individual puller implementations for them to use.
       * More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 15;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference.Builder> 
           getImagePullSecretsBuilderList() {
        return getImagePullSecretsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getImagePullSecretsFieldBuilder() {
        if (imagePullSecretsBuilder_ == null) {
          imagePullSecretsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  imagePullSecrets_,
                  ((bitField0_ & 0x00040000) != 0),
                  getParentForChildren(),
                  isClean());
          imagePullSecrets_ = null;
        }
        return imagePullSecretsBuilder_;
      }

      private java.lang.Object hostname_ = "";
      /**
       * <pre>
       * Specifies the hostname of the Pod
       * If not specified, the pod's hostname will be set to a system-defined value.
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 16;</code>
       * @return Whether the hostname field is set.
       */
      public boolean hasHostname() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <pre>
       * Specifies the hostname of the Pod
       * If not specified, the pod's hostname will be set to a system-defined value.
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 16;</code>
       * @return The hostname.
       */
      public java.lang.String getHostname() {
        java.lang.Object ref = hostname_;
        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()) {
            hostname_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Specifies the hostname of the Pod
       * If not specified, the pod's hostname will be set to a system-defined value.
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 16;</code>
       * @return The bytes for hostname.
       */
      public com.google.protobuf.ByteString
          getHostnameBytes() {
        java.lang.Object ref = hostname_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hostname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Specifies the hostname of the Pod
       * If not specified, the pod's hostname will be set to a system-defined value.
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 16;</code>
       * @param value The hostname to set.
       * @return This builder for chaining.
       */
      public Builder setHostname(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        hostname_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the hostname of the Pod
       * If not specified, the pod's hostname will be set to a system-defined value.
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostname() {
        hostname_ = getDefaultInstance().getHostname();
        bitField0_ = (bitField0_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the hostname of the Pod
       * If not specified, the pod's hostname will be set to a system-defined value.
       * +optional
       * </pre>
       *
       * <code>optional string hostname = 16;</code>
       * @param value The bytes for hostname to set.
       * @return This builder for chaining.
       */
      public Builder setHostnameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        hostname_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }

      private java.lang.Object subdomain_ = "";
      /**
       * <pre>
       * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
       * If not specified, the pod will not have a domainname at all.
       * +optional
       * </pre>
       *
       * <code>optional string subdomain = 17;</code>
       * @return Whether the subdomain field is set.
       */
      public boolean hasSubdomain() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <pre>
       * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
       * If not specified, the pod will not have a domainname at all.
       * +optional
       * </pre>
       *
       * <code>optional string subdomain = 17;</code>
       * @return The subdomain.
       */
      public java.lang.String getSubdomain() {
        java.lang.Object ref = subdomain_;
        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()) {
            subdomain_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
       * If not specified, the pod will not have a domainname at all.
       * +optional
       * </pre>
       *
       * <code>optional string subdomain = 17;</code>
       * @return The bytes for subdomain.
       */
      public com.google.protobuf.ByteString
          getSubdomainBytes() {
        java.lang.Object ref = subdomain_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          subdomain_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
       * If not specified, the pod will not have a domainname at all.
       * +optional
       * </pre>
       *
       * <code>optional string subdomain = 17;</code>
       * @param value The subdomain to set.
       * @return This builder for chaining.
       */
      public Builder setSubdomain(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        subdomain_ = value;
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
       * If not specified, the pod will not have a domainname at all.
       * +optional
       * </pre>
       *
       * <code>optional string subdomain = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubdomain() {
        subdomain_ = getDefaultInstance().getSubdomain();
        bitField0_ = (bitField0_ & ~0x00100000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified, the fully qualified Pod hostname will be "&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;".
       * If not specified, the pod will not have a domainname at all.
       * +optional
       * </pre>
       *
       * <code>optional string subdomain = 17;</code>
       * @param value The bytes for subdomain to set.
       * @return This builder for chaining.
       */
      public Builder setSubdomainBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        subdomain_ = value;
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.Affinity affinity_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Affinity, io.kubernetes.client.proto.V1.Affinity.Builder, io.kubernetes.client.proto.V1.AffinityOrBuilder> affinityBuilder_;
      /**
       * <pre>
       * If specified, the pod's scheduling constraints
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
       * @return Whether the affinity field is set.
       */
      public boolean hasAffinity() {
        return ((bitField0_ & 0x00200000) != 0);
      }
      /**
       * <pre>
       * If specified, the pod's scheduling constraints
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
       * @return The affinity.
       */
      public io.kubernetes.client.proto.V1.Affinity getAffinity() {
        if (affinityBuilder_ == null) {
          return affinity_ == null ? io.kubernetes.client.proto.V1.Affinity.getDefaultInstance() : affinity_;
        } else {
          return affinityBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * If specified, the pod's scheduling constraints
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
       */
      public Builder setAffinity(io.kubernetes.client.proto.V1.Affinity value) {
        if (affinityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          affinity_ = value;
        } else {
          affinityBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's scheduling constraints
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
       */
      public Builder setAffinity(
          io.kubernetes.client.proto.V1.Affinity.Builder builderForValue) {
        if (affinityBuilder_ == null) {
          affinity_ = builderForValue.build();
        } else {
          affinityBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's scheduling constraints
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
       */
      public Builder mergeAffinity(io.kubernetes.client.proto.V1.Affinity value) {
        if (affinityBuilder_ == null) {
          if (((bitField0_ & 0x00200000) != 0) &&
            affinity_ != null &&
            affinity_ != io.kubernetes.client.proto.V1.Affinity.getDefaultInstance()) {
            getAffinityBuilder().mergeFrom(value);
          } else {
            affinity_ = value;
          }
        } else {
          affinityBuilder_.mergeFrom(value);
        }
        if (affinity_ != null) {
          bitField0_ |= 0x00200000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's scheduling constraints
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
       */
      public Builder clearAffinity() {
        bitField0_ = (bitField0_ & ~0x00200000);
        affinity_ = null;
        if (affinityBuilder_ != null) {
          affinityBuilder_.dispose();
          affinityBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's scheduling constraints
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
       */
      public io.kubernetes.client.proto.V1.Affinity.Builder getAffinityBuilder() {
        bitField0_ |= 0x00200000;
        onChanged();
        return getAffinityFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * If specified, the pod's scheduling constraints
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
       */
      public io.kubernetes.client.proto.V1.AffinityOrBuilder getAffinityOrBuilder() {
        if (affinityBuilder_ != null) {
          return affinityBuilder_.getMessageOrBuilder();
        } else {
          return affinity_ == null ?
              io.kubernetes.client.proto.V1.Affinity.getDefaultInstance() : affinity_;
        }
      }
      /**
       * <pre>
       * If specified, the pod's scheduling constraints
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Affinity affinity = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Affinity, io.kubernetes.client.proto.V1.Affinity.Builder, io.kubernetes.client.proto.V1.AffinityOrBuilder> 
          getAffinityFieldBuilder() {
        if (affinityBuilder_ == null) {
          affinityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.Affinity, io.kubernetes.client.proto.V1.Affinity.Builder, io.kubernetes.client.proto.V1.AffinityOrBuilder>(
                  getAffinity(),
                  getParentForChildren(),
                  isClean());
          affinity_ = null;
        }
        return affinityBuilder_;
      }

      private java.lang.Object schedulerName_ = "";
      /**
       * <pre>
       * If specified, the pod will be dispatched by specified scheduler.
       * If not specified, the pod will be dispatched by default scheduler.
       * +optional
       * </pre>
       *
       * <code>optional string schedulerName = 19;</code>
       * @return Whether the schedulerName field is set.
       */
      public boolean hasSchedulerName() {
        return ((bitField0_ & 0x00400000) != 0);
      }
      /**
       * <pre>
       * If specified, the pod will be dispatched by specified scheduler.
       * If not specified, the pod will be dispatched by default scheduler.
       * +optional
       * </pre>
       *
       * <code>optional string schedulerName = 19;</code>
       * @return The schedulerName.
       */
      public java.lang.String getSchedulerName() {
        java.lang.Object ref = schedulerName_;
        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()) {
            schedulerName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * If specified, the pod will be dispatched by specified scheduler.
       * If not specified, the pod will be dispatched by default scheduler.
       * +optional
       * </pre>
       *
       * <code>optional string schedulerName = 19;</code>
       * @return The bytes for schedulerName.
       */
      public com.google.protobuf.ByteString
          getSchedulerNameBytes() {
        java.lang.Object ref = schedulerName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          schedulerName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * If specified, the pod will be dispatched by specified scheduler.
       * If not specified, the pod will be dispatched by default scheduler.
       * +optional
       * </pre>
       *
       * <code>optional string schedulerName = 19;</code>
       * @param value The schedulerName to set.
       * @return This builder for chaining.
       */
      public Builder setSchedulerName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        schedulerName_ = value;
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified, the pod will be dispatched by specified scheduler.
       * If not specified, the pod will be dispatched by default scheduler.
       * +optional
       * </pre>
       *
       * <code>optional string schedulerName = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearSchedulerName() {
        schedulerName_ = getDefaultInstance().getSchedulerName();
        bitField0_ = (bitField0_ & ~0x00400000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified, the pod will be dispatched by specified scheduler.
       * If not specified, the pod will be dispatched by default scheduler.
       * +optional
       * </pre>
       *
       * <code>optional string schedulerName = 19;</code>
       * @param value The bytes for schedulerName to set.
       * @return This builder for chaining.
       */
      public Builder setSchedulerNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        schedulerName_ = value;
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.Toleration> tolerations_ =
        java.util.Collections.emptyList();
      private void ensureTolerationsIsMutable() {
        if (!((bitField0_ & 0x00800000) != 0)) {
          tolerations_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Toleration>(tolerations_);
          bitField0_ |= 0x00800000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Toleration, io.kubernetes.client.proto.V1.Toleration.Builder, io.kubernetes.client.proto.V1.TolerationOrBuilder> tolerationsBuilder_;

      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Toleration> getTolerationsList() {
        if (tolerationsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(tolerations_);
        } else {
          return tolerationsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public int getTolerationsCount() {
        if (tolerationsBuilder_ == null) {
          return tolerations_.size();
        } else {
          return tolerationsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public io.kubernetes.client.proto.V1.Toleration getTolerations(int index) {
        if (tolerationsBuilder_ == null) {
          return tolerations_.get(index);
        } else {
          return tolerationsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public Builder setTolerations(
          int index, io.kubernetes.client.proto.V1.Toleration value) {
        if (tolerationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTolerationsIsMutable();
          tolerations_.set(index, value);
          onChanged();
        } else {
          tolerationsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public Builder setTolerations(
          int index, io.kubernetes.client.proto.V1.Toleration.Builder builderForValue) {
        if (tolerationsBuilder_ == null) {
          ensureTolerationsIsMutable();
          tolerations_.set(index, builderForValue.build());
          onChanged();
        } else {
          tolerationsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public Builder addTolerations(io.kubernetes.client.proto.V1.Toleration value) {
        if (tolerationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTolerationsIsMutable();
          tolerations_.add(value);
          onChanged();
        } else {
          tolerationsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public Builder addTolerations(
          int index, io.kubernetes.client.proto.V1.Toleration value) {
        if (tolerationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTolerationsIsMutable();
          tolerations_.add(index, value);
          onChanged();
        } else {
          tolerationsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public Builder addTolerations(
          io.kubernetes.client.proto.V1.Toleration.Builder builderForValue) {
        if (tolerationsBuilder_ == null) {
          ensureTolerationsIsMutable();
          tolerations_.add(builderForValue.build());
          onChanged();
        } else {
          tolerationsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public Builder addTolerations(
          int index, io.kubernetes.client.proto.V1.Toleration.Builder builderForValue) {
        if (tolerationsBuilder_ == null) {
          ensureTolerationsIsMutable();
          tolerations_.add(index, builderForValue.build());
          onChanged();
        } else {
          tolerationsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public Builder addAllTolerations(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Toleration> values) {
        if (tolerationsBuilder_ == null) {
          ensureTolerationsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, tolerations_);
          onChanged();
        } else {
          tolerationsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public Builder clearTolerations() {
        if (tolerationsBuilder_ == null) {
          tolerations_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00800000);
          onChanged();
        } else {
          tolerationsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public Builder removeTolerations(int index) {
        if (tolerationsBuilder_ == null) {
          ensureTolerationsIsMutable();
          tolerations_.remove(index);
          onChanged();
        } else {
          tolerationsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public io.kubernetes.client.proto.V1.Toleration.Builder getTolerationsBuilder(
          int index) {
        return getTolerationsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public io.kubernetes.client.proto.V1.TolerationOrBuilder getTolerationsOrBuilder(
          int index) {
        if (tolerationsBuilder_ == null) {
          return tolerations_.get(index);  } else {
          return tolerationsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.TolerationOrBuilder> 
           getTolerationsOrBuilderList() {
        if (tolerationsBuilder_ != null) {
          return tolerationsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(tolerations_);
        }
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public io.kubernetes.client.proto.V1.Toleration.Builder addTolerationsBuilder() {
        return getTolerationsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Toleration.getDefaultInstance());
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public io.kubernetes.client.proto.V1.Toleration.Builder addTolerationsBuilder(
          int index) {
        return getTolerationsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Toleration.getDefaultInstance());
      }
      /**
       * <pre>
       * If specified, the pod's tolerations.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Toleration tolerations = 22;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Toleration.Builder> 
           getTolerationsBuilderList() {
        return getTolerationsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Toleration, io.kubernetes.client.proto.V1.Toleration.Builder, io.kubernetes.client.proto.V1.TolerationOrBuilder> 
          getTolerationsFieldBuilder() {
        if (tolerationsBuilder_ == null) {
          tolerationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Toleration, io.kubernetes.client.proto.V1.Toleration.Builder, io.kubernetes.client.proto.V1.TolerationOrBuilder>(
                  tolerations_,
                  ((bitField0_ & 0x00800000) != 0),
                  getParentForChildren(),
                  isClean());
          tolerations_ = null;
        }
        return tolerationsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.HostAlias> hostAliases_ =
        java.util.Collections.emptyList();
      private void ensureHostAliasesIsMutable() {
        if (!((bitField0_ & 0x01000000) != 0)) {
          hostAliases_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.HostAlias>(hostAliases_);
          bitField0_ |= 0x01000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.HostAlias, io.kubernetes.client.proto.V1.HostAlias.Builder, io.kubernetes.client.proto.V1.HostAliasOrBuilder> hostAliasesBuilder_;

      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.HostAlias> getHostAliasesList() {
        if (hostAliasesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(hostAliases_);
        } else {
          return hostAliasesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public int getHostAliasesCount() {
        if (hostAliasesBuilder_ == null) {
          return hostAliases_.size();
        } else {
          return hostAliasesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public io.kubernetes.client.proto.V1.HostAlias getHostAliases(int index) {
        if (hostAliasesBuilder_ == null) {
          return hostAliases_.get(index);
        } else {
          return hostAliasesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public Builder setHostAliases(
          int index, io.kubernetes.client.proto.V1.HostAlias value) {
        if (hostAliasesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHostAliasesIsMutable();
          hostAliases_.set(index, value);
          onChanged();
        } else {
          hostAliasesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public Builder setHostAliases(
          int index, io.kubernetes.client.proto.V1.HostAlias.Builder builderForValue) {
        if (hostAliasesBuilder_ == null) {
          ensureHostAliasesIsMutable();
          hostAliases_.set(index, builderForValue.build());
          onChanged();
        } else {
          hostAliasesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public Builder addHostAliases(io.kubernetes.client.proto.V1.HostAlias value) {
        if (hostAliasesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHostAliasesIsMutable();
          hostAliases_.add(value);
          onChanged();
        } else {
          hostAliasesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public Builder addHostAliases(
          int index, io.kubernetes.client.proto.V1.HostAlias value) {
        if (hostAliasesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHostAliasesIsMutable();
          hostAliases_.add(index, value);
          onChanged();
        } else {
          hostAliasesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public Builder addHostAliases(
          io.kubernetes.client.proto.V1.HostAlias.Builder builderForValue) {
        if (hostAliasesBuilder_ == null) {
          ensureHostAliasesIsMutable();
          hostAliases_.add(builderForValue.build());
          onChanged();
        } else {
          hostAliasesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public Builder addHostAliases(
          int index, io.kubernetes.client.proto.V1.HostAlias.Builder builderForValue) {
        if (hostAliasesBuilder_ == null) {
          ensureHostAliasesIsMutable();
          hostAliases_.add(index, builderForValue.build());
          onChanged();
        } else {
          hostAliasesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public Builder addAllHostAliases(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.HostAlias> values) {
        if (hostAliasesBuilder_ == null) {
          ensureHostAliasesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, hostAliases_);
          onChanged();
        } else {
          hostAliasesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public Builder clearHostAliases() {
        if (hostAliasesBuilder_ == null) {
          hostAliases_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x01000000);
          onChanged();
        } else {
          hostAliasesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public Builder removeHostAliases(int index) {
        if (hostAliasesBuilder_ == null) {
          ensureHostAliasesIsMutable();
          hostAliases_.remove(index);
          onChanged();
        } else {
          hostAliasesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public io.kubernetes.client.proto.V1.HostAlias.Builder getHostAliasesBuilder(
          int index) {
        return getHostAliasesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public io.kubernetes.client.proto.V1.HostAliasOrBuilder getHostAliasesOrBuilder(
          int index) {
        if (hostAliasesBuilder_ == null) {
          return hostAliases_.get(index);  } else {
          return hostAliasesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.HostAliasOrBuilder> 
           getHostAliasesOrBuilderList() {
        if (hostAliasesBuilder_ != null) {
          return hostAliasesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(hostAliases_);
        }
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public io.kubernetes.client.proto.V1.HostAlias.Builder addHostAliasesBuilder() {
        return getHostAliasesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.HostAlias.getDefaultInstance());
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public io.kubernetes.client.proto.V1.HostAlias.Builder addHostAliasesBuilder(
          int index) {
        return getHostAliasesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.HostAlias.getDefaultInstance());
      }
      /**
       * <pre>
       * HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
       * file if specified.
       * +optional
       * +patchMergeKey=ip
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostAlias hostAliases = 23;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.HostAlias.Builder> 
           getHostAliasesBuilderList() {
        return getHostAliasesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.HostAlias, io.kubernetes.client.proto.V1.HostAlias.Builder, io.kubernetes.client.proto.V1.HostAliasOrBuilder> 
          getHostAliasesFieldBuilder() {
        if (hostAliasesBuilder_ == null) {
          hostAliasesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.HostAlias, io.kubernetes.client.proto.V1.HostAlias.Builder, io.kubernetes.client.proto.V1.HostAliasOrBuilder>(
                  hostAliases_,
                  ((bitField0_ & 0x01000000) != 0),
                  getParentForChildren(),
                  isClean());
          hostAliases_ = null;
        }
        return hostAliasesBuilder_;
      }

      private java.lang.Object priorityClassName_ = "";
      /**
       * <pre>
       * If specified, indicates the pod's priority. "system-node-critical" and
       * "system-cluster-critical" are two special keywords which indicate the
       * highest priorities with the former being the highest priority. Any other
       * name must be defined by creating a PriorityClass object with that name.
       * If not specified, the pod priority will be default or zero if there is no
       * default.
       * +optional
       * </pre>
       *
       * <code>optional string priorityClassName = 24;</code>
       * @return Whether the priorityClassName field is set.
       */
      public boolean hasPriorityClassName() {
        return ((bitField0_ & 0x02000000) != 0);
      }
      /**
       * <pre>
       * If specified, indicates the pod's priority. "system-node-critical" and
       * "system-cluster-critical" are two special keywords which indicate the
       * highest priorities with the former being the highest priority. Any other
       * name must be defined by creating a PriorityClass object with that name.
       * If not specified, the pod priority will be default or zero if there is no
       * default.
       * +optional
       * </pre>
       *
       * <code>optional string priorityClassName = 24;</code>
       * @return The priorityClassName.
       */
      public java.lang.String getPriorityClassName() {
        java.lang.Object ref = priorityClassName_;
        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()) {
            priorityClassName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * If specified, indicates the pod's priority. "system-node-critical" and
       * "system-cluster-critical" are two special keywords which indicate the
       * highest priorities with the former being the highest priority. Any other
       * name must be defined by creating a PriorityClass object with that name.
       * If not specified, the pod priority will be default or zero if there is no
       * default.
       * +optional
       * </pre>
       *
       * <code>optional string priorityClassName = 24;</code>
       * @return The bytes for priorityClassName.
       */
      public com.google.protobuf.ByteString
          getPriorityClassNameBytes() {
        java.lang.Object ref = priorityClassName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          priorityClassName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * If specified, indicates the pod's priority. "system-node-critical" and
       * "system-cluster-critical" are two special keywords which indicate the
       * highest priorities with the former being the highest priority. Any other
       * name must be defined by creating a PriorityClass object with that name.
       * If not specified, the pod priority will be default or zero if there is no
       * default.
       * +optional
       * </pre>
       *
       * <code>optional string priorityClassName = 24;</code>
       * @param value The priorityClassName to set.
       * @return This builder for chaining.
       */
      public Builder setPriorityClassName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        priorityClassName_ = value;
        bitField0_ |= 0x02000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified, indicates the pod's priority. "system-node-critical" and
       * "system-cluster-critical" are two special keywords which indicate the
       * highest priorities with the former being the highest priority. Any other
       * name must be defined by creating a PriorityClass object with that name.
       * If not specified, the pod priority will be default or zero if there is no
       * default.
       * +optional
       * </pre>
       *
       * <code>optional string priorityClassName = 24;</code>
       * @return This builder for chaining.
       */
      public Builder clearPriorityClassName() {
        priorityClassName_ = getDefaultInstance().getPriorityClassName();
        bitField0_ = (bitField0_ & ~0x02000000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified, indicates the pod's priority. "system-node-critical" and
       * "system-cluster-critical" are two special keywords which indicate the
       * highest priorities with the former being the highest priority. Any other
       * name must be defined by creating a PriorityClass object with that name.
       * If not specified, the pod priority will be default or zero if there is no
       * default.
       * +optional
       * </pre>
       *
       * <code>optional string priorityClassName = 24;</code>
       * @param value The bytes for priorityClassName to set.
       * @return This builder for chaining.
       */
      public Builder setPriorityClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        priorityClassName_ = value;
        bitField0_ |= 0x02000000;
        onChanged();
        return this;
      }

      private int priority_ ;
      /**
       * <pre>
       * The priority value. Various system components use this field to find the
       * priority of the pod. When Priority Admission Controller is enabled, it
       * prevents users from setting this field. The admission controller populates
       * this field from PriorityClassName.
       * The higher the value, the higher the priority.
       * +optional
       * </pre>
       *
       * <code>optional int32 priority = 25;</code>
       * @return Whether the priority field is set.
       */
      @java.lang.Override
      public boolean hasPriority() {
        return ((bitField0_ & 0x04000000) != 0);
      }
      /**
       * <pre>
       * The priority value. Various system components use this field to find the
       * priority of the pod. When Priority Admission Controller is enabled, it
       * prevents users from setting this field. The admission controller populates
       * this field from PriorityClassName.
       * The higher the value, the higher the priority.
       * +optional
       * </pre>
       *
       * <code>optional int32 priority = 25;</code>
       * @return The priority.
       */
      @java.lang.Override
      public int getPriority() {
        return priority_;
      }
      /**
       * <pre>
       * The priority value. Various system components use this field to find the
       * priority of the pod. When Priority Admission Controller is enabled, it
       * prevents users from setting this field. The admission controller populates
       * this field from PriorityClassName.
       * The higher the value, the higher the priority.
       * +optional
       * </pre>
       *
       * <code>optional int32 priority = 25;</code>
       * @param value The priority to set.
       * @return This builder for chaining.
       */
      public Builder setPriority(int value) {

        priority_ = value;
        bitField0_ |= 0x04000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The priority value. Various system components use this field to find the
       * priority of the pod. When Priority Admission Controller is enabled, it
       * prevents users from setting this field. The admission controller populates
       * this field from PriorityClassName.
       * The higher the value, the higher the priority.
       * +optional
       * </pre>
       *
       * <code>optional int32 priority = 25;</code>
       * @return This builder for chaining.
       */
      public Builder clearPriority() {
        bitField0_ = (bitField0_ & ~0x04000000);
        priority_ = 0;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.PodDNSConfig dnsConfig_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodDNSConfig, io.kubernetes.client.proto.V1.PodDNSConfig.Builder, io.kubernetes.client.proto.V1.PodDNSConfigOrBuilder> dnsConfigBuilder_;
      /**
       * <pre>
       * Specifies the DNS parameters of a pod.
       * Parameters specified here will be merged to the generated DNS
       * configuration based on DNSPolicy.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
       * @return Whether the dnsConfig field is set.
       */
      public boolean hasDnsConfig() {
        return ((bitField0_ & 0x08000000) != 0);
      }
      /**
       * <pre>
       * Specifies the DNS parameters of a pod.
       * Parameters specified here will be merged to the generated DNS
       * configuration based on DNSPolicy.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
       * @return The dnsConfig.
       */
      public io.kubernetes.client.proto.V1.PodDNSConfig getDnsConfig() {
        if (dnsConfigBuilder_ == null) {
          return dnsConfig_ == null ? io.kubernetes.client.proto.V1.PodDNSConfig.getDefaultInstance() : dnsConfig_;
        } else {
          return dnsConfigBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Specifies the DNS parameters of a pod.
       * Parameters specified here will be merged to the generated DNS
       * configuration based on DNSPolicy.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
       */
      public Builder setDnsConfig(io.kubernetes.client.proto.V1.PodDNSConfig value) {
        if (dnsConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dnsConfig_ = value;
        } else {
          dnsConfigBuilder_.setMessage(value);
        }
        bitField0_ |= 0x08000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the DNS parameters of a pod.
       * Parameters specified here will be merged to the generated DNS
       * configuration based on DNSPolicy.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
       */
      public Builder setDnsConfig(
          io.kubernetes.client.proto.V1.PodDNSConfig.Builder builderForValue) {
        if (dnsConfigBuilder_ == null) {
          dnsConfig_ = builderForValue.build();
        } else {
          dnsConfigBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x08000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the DNS parameters of a pod.
       * Parameters specified here will be merged to the generated DNS
       * configuration based on DNSPolicy.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
       */
      public Builder mergeDnsConfig(io.kubernetes.client.proto.V1.PodDNSConfig value) {
        if (dnsConfigBuilder_ == null) {
          if (((bitField0_ & 0x08000000) != 0) &&
            dnsConfig_ != null &&
            dnsConfig_ != io.kubernetes.client.proto.V1.PodDNSConfig.getDefaultInstance()) {
            getDnsConfigBuilder().mergeFrom(value);
          } else {
            dnsConfig_ = value;
          }
        } else {
          dnsConfigBuilder_.mergeFrom(value);
        }
        if (dnsConfig_ != null) {
          bitField0_ |= 0x08000000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Specifies the DNS parameters of a pod.
       * Parameters specified here will be merged to the generated DNS
       * configuration based on DNSPolicy.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
       */
      public Builder clearDnsConfig() {
        bitField0_ = (bitField0_ & ~0x08000000);
        dnsConfig_ = null;
        if (dnsConfigBuilder_ != null) {
          dnsConfigBuilder_.dispose();
          dnsConfigBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the DNS parameters of a pod.
       * Parameters specified here will be merged to the generated DNS
       * configuration based on DNSPolicy.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
       */
      public io.kubernetes.client.proto.V1.PodDNSConfig.Builder getDnsConfigBuilder() {
        bitField0_ |= 0x08000000;
        onChanged();
        return getDnsConfigFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Specifies the DNS parameters of a pod.
       * Parameters specified here will be merged to the generated DNS
       * configuration based on DNSPolicy.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
       */
      public io.kubernetes.client.proto.V1.PodDNSConfigOrBuilder getDnsConfigOrBuilder() {
        if (dnsConfigBuilder_ != null) {
          return dnsConfigBuilder_.getMessageOrBuilder();
        } else {
          return dnsConfig_ == null ?
              io.kubernetes.client.proto.V1.PodDNSConfig.getDefaultInstance() : dnsConfig_;
        }
      }
      /**
       * <pre>
       * Specifies the DNS parameters of a pod.
       * Parameters specified here will be merged to the generated DNS
       * configuration based on DNSPolicy.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodDNSConfig dnsConfig = 26;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodDNSConfig, io.kubernetes.client.proto.V1.PodDNSConfig.Builder, io.kubernetes.client.proto.V1.PodDNSConfigOrBuilder> 
          getDnsConfigFieldBuilder() {
        if (dnsConfigBuilder_ == null) {
          dnsConfigBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodDNSConfig, io.kubernetes.client.proto.V1.PodDNSConfig.Builder, io.kubernetes.client.proto.V1.PodDNSConfigOrBuilder>(
                  getDnsConfig(),
                  getParentForChildren(),
                  isClean());
          dnsConfig_ = null;
        }
        return dnsConfigBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.PodReadinessGate> readinessGates_ =
        java.util.Collections.emptyList();
      private void ensureReadinessGatesIsMutable() {
        if (!((bitField0_ & 0x10000000) != 0)) {
          readinessGates_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PodReadinessGate>(readinessGates_);
          bitField0_ |= 0x10000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodReadinessGate, io.kubernetes.client.proto.V1.PodReadinessGate.Builder, io.kubernetes.client.proto.V1.PodReadinessGateOrBuilder> readinessGatesBuilder_;

      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodReadinessGate> getReadinessGatesList() {
        if (readinessGatesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(readinessGates_);
        } else {
          return readinessGatesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public int getReadinessGatesCount() {
        if (readinessGatesBuilder_ == null) {
          return readinessGates_.size();
        } else {
          return readinessGatesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public io.kubernetes.client.proto.V1.PodReadinessGate getReadinessGates(int index) {
        if (readinessGatesBuilder_ == null) {
          return readinessGates_.get(index);
        } else {
          return readinessGatesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public Builder setReadinessGates(
          int index, io.kubernetes.client.proto.V1.PodReadinessGate value) {
        if (readinessGatesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReadinessGatesIsMutable();
          readinessGates_.set(index, value);
          onChanged();
        } else {
          readinessGatesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public Builder setReadinessGates(
          int index, io.kubernetes.client.proto.V1.PodReadinessGate.Builder builderForValue) {
        if (readinessGatesBuilder_ == null) {
          ensureReadinessGatesIsMutable();
          readinessGates_.set(index, builderForValue.build());
          onChanged();
        } else {
          readinessGatesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public Builder addReadinessGates(io.kubernetes.client.proto.V1.PodReadinessGate value) {
        if (readinessGatesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReadinessGatesIsMutable();
          readinessGates_.add(value);
          onChanged();
        } else {
          readinessGatesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public Builder addReadinessGates(
          int index, io.kubernetes.client.proto.V1.PodReadinessGate value) {
        if (readinessGatesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReadinessGatesIsMutable();
          readinessGates_.add(index, value);
          onChanged();
        } else {
          readinessGatesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public Builder addReadinessGates(
          io.kubernetes.client.proto.V1.PodReadinessGate.Builder builderForValue) {
        if (readinessGatesBuilder_ == null) {
          ensureReadinessGatesIsMutable();
          readinessGates_.add(builderForValue.build());
          onChanged();
        } else {
          readinessGatesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public Builder addReadinessGates(
          int index, io.kubernetes.client.proto.V1.PodReadinessGate.Builder builderForValue) {
        if (readinessGatesBuilder_ == null) {
          ensureReadinessGatesIsMutable();
          readinessGates_.add(index, builderForValue.build());
          onChanged();
        } else {
          readinessGatesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public Builder addAllReadinessGates(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PodReadinessGate> values) {
        if (readinessGatesBuilder_ == null) {
          ensureReadinessGatesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, readinessGates_);
          onChanged();
        } else {
          readinessGatesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public Builder clearReadinessGates() {
        if (readinessGatesBuilder_ == null) {
          readinessGates_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x10000000);
          onChanged();
        } else {
          readinessGatesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public Builder removeReadinessGates(int index) {
        if (readinessGatesBuilder_ == null) {
          ensureReadinessGatesIsMutable();
          readinessGates_.remove(index);
          onChanged();
        } else {
          readinessGatesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public io.kubernetes.client.proto.V1.PodReadinessGate.Builder getReadinessGatesBuilder(
          int index) {
        return getReadinessGatesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public io.kubernetes.client.proto.V1.PodReadinessGateOrBuilder getReadinessGatesOrBuilder(
          int index) {
        if (readinessGatesBuilder_ == null) {
          return readinessGates_.get(index);  } else {
          return readinessGatesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodReadinessGateOrBuilder> 
           getReadinessGatesOrBuilderList() {
        if (readinessGatesBuilder_ != null) {
          return readinessGatesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(readinessGates_);
        }
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public io.kubernetes.client.proto.V1.PodReadinessGate.Builder addReadinessGatesBuilder() {
        return getReadinessGatesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PodReadinessGate.getDefaultInstance());
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public io.kubernetes.client.proto.V1.PodReadinessGate.Builder addReadinessGatesBuilder(
          int index) {
        return getReadinessGatesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PodReadinessGate.getDefaultInstance());
      }
      /**
       * <pre>
       * If specified, all readiness gates will be evaluated for pod readiness.
       * A pod is ready when all its containers are ready AND
       * all conditions specified in the readiness gates have status equal to "True"
       * More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodReadinessGate readinessGates = 28;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodReadinessGate.Builder> 
           getReadinessGatesBuilderList() {
        return getReadinessGatesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodReadinessGate, io.kubernetes.client.proto.V1.PodReadinessGate.Builder, io.kubernetes.client.proto.V1.PodReadinessGateOrBuilder> 
          getReadinessGatesFieldBuilder() {
        if (readinessGatesBuilder_ == null) {
          readinessGatesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PodReadinessGate, io.kubernetes.client.proto.V1.PodReadinessGate.Builder, io.kubernetes.client.proto.V1.PodReadinessGateOrBuilder>(
                  readinessGates_,
                  ((bitField0_ & 0x10000000) != 0),
                  getParentForChildren(),
                  isClean());
          readinessGates_ = null;
        }
        return readinessGatesBuilder_;
      }

      private java.lang.Object runtimeClassName_ = "";
      /**
       * <pre>
       * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
       * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
       * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
       * empty definition that uses the default runtime handler.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
       * +optional
       * </pre>
       *
       * <code>optional string runtimeClassName = 29;</code>
       * @return Whether the runtimeClassName field is set.
       */
      public boolean hasRuntimeClassName() {
        return ((bitField0_ & 0x20000000) != 0);
      }
      /**
       * <pre>
       * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
       * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
       * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
       * empty definition that uses the default runtime handler.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
       * +optional
       * </pre>
       *
       * <code>optional string runtimeClassName = 29;</code>
       * @return The runtimeClassName.
       */
      public java.lang.String getRuntimeClassName() {
        java.lang.Object ref = runtimeClassName_;
        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()) {
            runtimeClassName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
       * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
       * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
       * empty definition that uses the default runtime handler.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
       * +optional
       * </pre>
       *
       * <code>optional string runtimeClassName = 29;</code>
       * @return The bytes for runtimeClassName.
       */
      public com.google.protobuf.ByteString
          getRuntimeClassNameBytes() {
        java.lang.Object ref = runtimeClassName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          runtimeClassName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
       * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
       * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
       * empty definition that uses the default runtime handler.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
       * +optional
       * </pre>
       *
       * <code>optional string runtimeClassName = 29;</code>
       * @param value The runtimeClassName to set.
       * @return This builder for chaining.
       */
      public Builder setRuntimeClassName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        runtimeClassName_ = value;
        bitField0_ |= 0x20000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
       * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
       * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
       * empty definition that uses the default runtime handler.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
       * +optional
       * </pre>
       *
       * <code>optional string runtimeClassName = 29;</code>
       * @return This builder for chaining.
       */
      public Builder clearRuntimeClassName() {
        runtimeClassName_ = getDefaultInstance().getRuntimeClassName();
        bitField0_ = (bitField0_ & ~0x20000000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
       * to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run.
       * If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
       * empty definition that uses the default runtime handler.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
       * +optional
       * </pre>
       *
       * <code>optional string runtimeClassName = 29;</code>
       * @param value The bytes for runtimeClassName to set.
       * @return This builder for chaining.
       */
      public Builder setRuntimeClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        runtimeClassName_ = value;
        bitField0_ |= 0x20000000;
        onChanged();
        return this;
      }

      private boolean enableServiceLinks_ ;
      /**
       * <pre>
       * EnableServiceLinks indicates whether information about services should be injected into pod's
       * environment variables, matching the syntax of Docker links.
       * Optional: Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool enableServiceLinks = 30;</code>
       * @return Whether the enableServiceLinks field is set.
       */
      @java.lang.Override
      public boolean hasEnableServiceLinks() {
        return ((bitField0_ & 0x40000000) != 0);
      }
      /**
       * <pre>
       * EnableServiceLinks indicates whether information about services should be injected into pod's
       * environment variables, matching the syntax of Docker links.
       * Optional: Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool enableServiceLinks = 30;</code>
       * @return The enableServiceLinks.
       */
      @java.lang.Override
      public boolean getEnableServiceLinks() {
        return enableServiceLinks_;
      }
      /**
       * <pre>
       * EnableServiceLinks indicates whether information about services should be injected into pod's
       * environment variables, matching the syntax of Docker links.
       * Optional: Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool enableServiceLinks = 30;</code>
       * @param value The enableServiceLinks to set.
       * @return This builder for chaining.
       */
      public Builder setEnableServiceLinks(boolean value) {

        enableServiceLinks_ = value;
        bitField0_ |= 0x40000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * EnableServiceLinks indicates whether information about services should be injected into pod's
       * environment variables, matching the syntax of Docker links.
       * Optional: Defaults to true.
       * +optional
       * </pre>
       *
       * <code>optional bool enableServiceLinks = 30;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnableServiceLinks() {
        bitField0_ = (bitField0_ & ~0x40000000);
        enableServiceLinks_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object preemptionPolicy_ = "";
      /**
       * <pre>
       * PreemptionPolicy is the Policy for preempting pods with lower priority.
       * One of Never, PreemptLowerPriority.
       * Defaults to PreemptLowerPriority if unset.
       * +optional
       * </pre>
       *
       * <code>optional string preemptionPolicy = 31;</code>
       * @return Whether the preemptionPolicy field is set.
       */
      public boolean hasPreemptionPolicy() {
        return ((bitField0_ & 0x80000000) != 0);
      }
      /**
       * <pre>
       * PreemptionPolicy is the Policy for preempting pods with lower priority.
       * One of Never, PreemptLowerPriority.
       * Defaults to PreemptLowerPriority if unset.
       * +optional
       * </pre>
       *
       * <code>optional string preemptionPolicy = 31;</code>
       * @return The preemptionPolicy.
       */
      public java.lang.String getPreemptionPolicy() {
        java.lang.Object ref = preemptionPolicy_;
        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()) {
            preemptionPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * PreemptionPolicy is the Policy for preempting pods with lower priority.
       * One of Never, PreemptLowerPriority.
       * Defaults to PreemptLowerPriority if unset.
       * +optional
       * </pre>
       *
       * <code>optional string preemptionPolicy = 31;</code>
       * @return The bytes for preemptionPolicy.
       */
      public com.google.protobuf.ByteString
          getPreemptionPolicyBytes() {
        java.lang.Object ref = preemptionPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          preemptionPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * PreemptionPolicy is the Policy for preempting pods with lower priority.
       * One of Never, PreemptLowerPriority.
       * Defaults to PreemptLowerPriority if unset.
       * +optional
       * </pre>
       *
       * <code>optional string preemptionPolicy = 31;</code>
       * @param value The preemptionPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setPreemptionPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        preemptionPolicy_ = value;
        bitField0_ |= 0x80000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PreemptionPolicy is the Policy for preempting pods with lower priority.
       * One of Never, PreemptLowerPriority.
       * Defaults to PreemptLowerPriority if unset.
       * +optional
       * </pre>
       *
       * <code>optional string preemptionPolicy = 31;</code>
       * @return This builder for chaining.
       */
      public Builder clearPreemptionPolicy() {
        preemptionPolicy_ = getDefaultInstance().getPreemptionPolicy();
        bitField0_ = (bitField0_ & ~0x80000000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PreemptionPolicy is the Policy for preempting pods with lower priority.
       * One of Never, PreemptLowerPriority.
       * Defaults to PreemptLowerPriority if unset.
       * +optional
       * </pre>
       *
       * <code>optional string preemptionPolicy = 31;</code>
       * @param value The bytes for preemptionPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setPreemptionPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        preemptionPolicy_ = value;
        bitField0_ |= 0x80000000;
        onChanged();
        return this;
      }

      private static final class OverheadConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return OverheadDefaultEntryHolder.defaultEntry;
        }
      };
      private static final OverheadConverter overheadConverter = new OverheadConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> overhead_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetOverhead() {
        if (overhead_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(overheadConverter);
        }
        return overhead_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableOverhead() {
        if (overhead_ == null) {
          overhead_ = new com.google.protobuf.MapFieldBuilder<>(overheadConverter);
        }
        bitField1_ |= 0x00000001;
        onChanged();
        return overhead_;
      }
      public int getOverheadCount() {
        return internalGetOverhead().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
       * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
       * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
       * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
       * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
       * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
       */
      @java.lang.Override
      public boolean containsOverhead(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetOverhead().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getOverheadMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getOverhead() {
        return getOverheadMap();
      }
      /**
       * <pre>
       * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
       * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
       * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
       * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
       * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
       * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getOverheadMap() {
        return internalGetOverhead().getImmutableMap();
      }
      /**
       * <pre>
       * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
       * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
       * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
       * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
       * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
       * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getOverheadOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableOverhead().ensureBuilderMap();
        return map.containsKey(key) ? overheadConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
       * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
       * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
       * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
       * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
       * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getOverheadOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableOverhead().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return overheadConverter.build(map.get(key));
      }
      public Builder clearOverhead() {
        bitField1_ = (bitField1_ & ~0x00000001);
        internalGetMutableOverhead().clear();
        return this;
      }
      /**
       * <pre>
       * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
       * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
       * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
       * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
       * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
       * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
       */
      public Builder removeOverhead(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableOverhead().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableOverhead() {
        bitField1_ |= 0x00000001;
        return internalGetMutableOverhead().ensureMessageMap();
      }
      /**
       * <pre>
       * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
       * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
       * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
       * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
       * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
       * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
       */
      public Builder putOverhead(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableOverhead().ensureBuilderMap()
            .put(key, value);
        bitField1_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
       * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
       * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
       * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
       * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
       * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
       */
      public Builder putAllOverhead(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableOverhead().ensureBuilderMap()
            .putAll(values);
        bitField1_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
       * This field will be autopopulated at admission time by the RuntimeClass admission controller. If
       * the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
       * The RuntimeClass admission controller will reject Pod create requests which have the overhead already
       * set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
       * defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
       * More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; overhead = 32;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putOverheadBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableOverhead().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private java.util.List<io.kubernetes.client.proto.V1.TopologySpreadConstraint> topologySpreadConstraints_ =
        java.util.Collections.emptyList();
      private void ensureTopologySpreadConstraintsIsMutable() {
        if (!((bitField1_ & 0x00000002) != 0)) {
          topologySpreadConstraints_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.TopologySpreadConstraint>(topologySpreadConstraints_);
          bitField1_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.TopologySpreadConstraint, io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder, io.kubernetes.client.proto.V1.TopologySpreadConstraintOrBuilder> topologySpreadConstraintsBuilder_;

      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.TopologySpreadConstraint> getTopologySpreadConstraintsList() {
        if (topologySpreadConstraintsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(topologySpreadConstraints_);
        } else {
          return topologySpreadConstraintsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public int getTopologySpreadConstraintsCount() {
        if (topologySpreadConstraintsBuilder_ == null) {
          return topologySpreadConstraints_.size();
        } else {
          return topologySpreadConstraintsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public io.kubernetes.client.proto.V1.TopologySpreadConstraint getTopologySpreadConstraints(int index) {
        if (topologySpreadConstraintsBuilder_ == null) {
          return topologySpreadConstraints_.get(index);
        } else {
          return topologySpreadConstraintsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public Builder setTopologySpreadConstraints(
          int index, io.kubernetes.client.proto.V1.TopologySpreadConstraint value) {
        if (topologySpreadConstraintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologySpreadConstraintsIsMutable();
          topologySpreadConstraints_.set(index, value);
          onChanged();
        } else {
          topologySpreadConstraintsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public Builder setTopologySpreadConstraints(
          int index, io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder builderForValue) {
        if (topologySpreadConstraintsBuilder_ == null) {
          ensureTopologySpreadConstraintsIsMutable();
          topologySpreadConstraints_.set(index, builderForValue.build());
          onChanged();
        } else {
          topologySpreadConstraintsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public Builder addTopologySpreadConstraints(io.kubernetes.client.proto.V1.TopologySpreadConstraint value) {
        if (topologySpreadConstraintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologySpreadConstraintsIsMutable();
          topologySpreadConstraints_.add(value);
          onChanged();
        } else {
          topologySpreadConstraintsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public Builder addTopologySpreadConstraints(
          int index, io.kubernetes.client.proto.V1.TopologySpreadConstraint value) {
        if (topologySpreadConstraintsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopologySpreadConstraintsIsMutable();
          topologySpreadConstraints_.add(index, value);
          onChanged();
        } else {
          topologySpreadConstraintsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public Builder addTopologySpreadConstraints(
          io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder builderForValue) {
        if (topologySpreadConstraintsBuilder_ == null) {
          ensureTopologySpreadConstraintsIsMutable();
          topologySpreadConstraints_.add(builderForValue.build());
          onChanged();
        } else {
          topologySpreadConstraintsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public Builder addTopologySpreadConstraints(
          int index, io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder builderForValue) {
        if (topologySpreadConstraintsBuilder_ == null) {
          ensureTopologySpreadConstraintsIsMutable();
          topologySpreadConstraints_.add(index, builderForValue.build());
          onChanged();
        } else {
          topologySpreadConstraintsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public Builder addAllTopologySpreadConstraints(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.TopologySpreadConstraint> values) {
        if (topologySpreadConstraintsBuilder_ == null) {
          ensureTopologySpreadConstraintsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, topologySpreadConstraints_);
          onChanged();
        } else {
          topologySpreadConstraintsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public Builder clearTopologySpreadConstraints() {
        if (topologySpreadConstraintsBuilder_ == null) {
          topologySpreadConstraints_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00000002);
          onChanged();
        } else {
          topologySpreadConstraintsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public Builder removeTopologySpreadConstraints(int index) {
        if (topologySpreadConstraintsBuilder_ == null) {
          ensureTopologySpreadConstraintsIsMutable();
          topologySpreadConstraints_.remove(index);
          onChanged();
        } else {
          topologySpreadConstraintsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder getTopologySpreadConstraintsBuilder(
          int index) {
        return getTopologySpreadConstraintsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public io.kubernetes.client.proto.V1.TopologySpreadConstraintOrBuilder getTopologySpreadConstraintsOrBuilder(
          int index) {
        if (topologySpreadConstraintsBuilder_ == null) {
          return topologySpreadConstraints_.get(index);  } else {
          return topologySpreadConstraintsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.TopologySpreadConstraintOrBuilder> 
           getTopologySpreadConstraintsOrBuilderList() {
        if (topologySpreadConstraintsBuilder_ != null) {
          return topologySpreadConstraintsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(topologySpreadConstraints_);
        }
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder addTopologySpreadConstraintsBuilder() {
        return getTopologySpreadConstraintsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.TopologySpreadConstraint.getDefaultInstance());
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder addTopologySpreadConstraintsBuilder(
          int index) {
        return getTopologySpreadConstraintsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.TopologySpreadConstraint.getDefaultInstance());
      }
      /**
       * <pre>
       * TopologySpreadConstraints describes how a group of pods ought to spread across topology
       * domains. Scheduler will schedule pods in a way which abides by the constraints.
       * All topologySpreadConstraints are ANDed.
       * +optional
       * +patchMergeKey=topologyKey
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=topologyKey
       * +listMapKey=whenUnsatisfiable
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySpreadConstraint topologySpreadConstraints = 33;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder> 
           getTopologySpreadConstraintsBuilderList() {
        return getTopologySpreadConstraintsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.TopologySpreadConstraint, io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder, io.kubernetes.client.proto.V1.TopologySpreadConstraintOrBuilder> 
          getTopologySpreadConstraintsFieldBuilder() {
        if (topologySpreadConstraintsBuilder_ == null) {
          topologySpreadConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.TopologySpreadConstraint, io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder, io.kubernetes.client.proto.V1.TopologySpreadConstraintOrBuilder>(
                  topologySpreadConstraints_,
                  ((bitField1_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          topologySpreadConstraints_ = null;
        }
        return topologySpreadConstraintsBuilder_;
      }

      private boolean setHostnameAsFQDN_ ;
      /**
       * <pre>
       * If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).
       * In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).
       * In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE&#92;&#92;SYSTEM&#92;&#92;CurrentControlSet&#92;&#92;Services&#92;&#92;Tcpip&#92;&#92;Parameters to FQDN.
       * If a pod does not have FQDN, this has no effect.
       * Default to false.
       * +optional
       * </pre>
       *
       * <code>optional bool setHostnameAsFQDN = 35;</code>
       * @return Whether the setHostnameAsFQDN field is set.
       */
      @java.lang.Override
      public boolean hasSetHostnameAsFQDN() {
        return ((bitField1_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).
       * In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).
       * In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE&#92;&#92;SYSTEM&#92;&#92;CurrentControlSet&#92;&#92;Services&#92;&#92;Tcpip&#92;&#92;Parameters to FQDN.
       * If a pod does not have FQDN, this has no effect.
       * Default to false.
       * +optional
       * </pre>
       *
       * <code>optional bool setHostnameAsFQDN = 35;</code>
       * @return The setHostnameAsFQDN.
       */
      @java.lang.Override
      public boolean getSetHostnameAsFQDN() {
        return setHostnameAsFQDN_;
      }
      /**
       * <pre>
       * If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).
       * In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).
       * In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE&#92;&#92;SYSTEM&#92;&#92;CurrentControlSet&#92;&#92;Services&#92;&#92;Tcpip&#92;&#92;Parameters to FQDN.
       * If a pod does not have FQDN, this has no effect.
       * Default to false.
       * +optional
       * </pre>
       *
       * <code>optional bool setHostnameAsFQDN = 35;</code>
       * @param value The setHostnameAsFQDN to set.
       * @return This builder for chaining.
       */
      public Builder setSetHostnameAsFQDN(boolean value) {

        setHostnameAsFQDN_ = value;
        bitField1_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).
       * In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).
       * In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE&#92;&#92;SYSTEM&#92;&#92;CurrentControlSet&#92;&#92;Services&#92;&#92;Tcpip&#92;&#92;Parameters to FQDN.
       * If a pod does not have FQDN, this has no effect.
       * Default to false.
       * +optional
       * </pre>
       *
       * <code>optional bool setHostnameAsFQDN = 35;</code>
       * @return This builder for chaining.
       */
      public Builder clearSetHostnameAsFQDN() {
        bitField1_ = (bitField1_ & ~0x00000004);
        setHostnameAsFQDN_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.PodOS os_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodOS, io.kubernetes.client.proto.V1.PodOS.Builder, io.kubernetes.client.proto.V1.PodOSOrBuilder> osBuilder_;
      /**
       * <pre>
       * Specifies the OS of the containers in the pod.
       * Some pod and container fields are restricted if this is set.
       *
       * If the OS field is set to linux, the following fields must be unset:
       * -securityContext.windowsOptions
       *
       * If the OS field is set to windows, following fields must be unset:
       * - spec.hostPID
       * - spec.hostIPC
       * - spec.hostUsers
       * - spec.securityContext.appArmorProfile
       * - spec.securityContext.seLinuxOptions
       * - spec.securityContext.seccompProfile
       * - spec.securityContext.fsGroup
       * - spec.securityContext.fsGroupChangePolicy
       * - spec.securityContext.sysctls
       * - spec.shareProcessNamespace
       * - spec.securityContext.runAsUser
       * - spec.securityContext.runAsGroup
       * - spec.securityContext.supplementalGroups
       * - spec.containers[*].securityContext.appArmorProfile
       * - spec.containers[*].securityContext.seLinuxOptions
       * - spec.containers[*].securityContext.seccompProfile
       * - spec.containers[*].securityContext.capabilities
       * - spec.containers[*].securityContext.readOnlyRootFilesystem
       * - spec.containers[*].securityContext.privileged
       * - spec.containers[*].securityContext.allowPrivilegeEscalation
       * - spec.containers[*].securityContext.procMount
       * - spec.containers[*].securityContext.runAsUser
       * - spec.containers[*].securityContext.runAsGroup
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
       * @return Whether the os field is set.
       */
      public boolean hasOs() {
        return ((bitField1_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Specifies the OS of the containers in the pod.
       * Some pod and container fields are restricted if this is set.
       *
       * If the OS field is set to linux, the following fields must be unset:
       * -securityContext.windowsOptions
       *
       * If the OS field is set to windows, following fields must be unset:
       * - spec.hostPID
       * - spec.hostIPC
       * - spec.hostUsers
       * - spec.securityContext.appArmorProfile
       * - spec.securityContext.seLinuxOptions
       * - spec.securityContext.seccompProfile
       * - spec.securityContext.fsGroup
       * - spec.securityContext.fsGroupChangePolicy
       * - spec.securityContext.sysctls
       * - spec.shareProcessNamespace
       * - spec.securityContext.runAsUser
       * - spec.securityContext.runAsGroup
       * - spec.securityContext.supplementalGroups
       * - spec.containers[*].securityContext.appArmorProfile
       * - spec.containers[*].securityContext.seLinuxOptions
       * - spec.containers[*].securityContext.seccompProfile
       * - spec.containers[*].securityContext.capabilities
       * - spec.containers[*].securityContext.readOnlyRootFilesystem
       * - spec.containers[*].securityContext.privileged
       * - spec.containers[*].securityContext.allowPrivilegeEscalation
       * - spec.containers[*].securityContext.procMount
       * - spec.containers[*].securityContext.runAsUser
       * - spec.containers[*].securityContext.runAsGroup
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
       * @return The os.
       */
      public io.kubernetes.client.proto.V1.PodOS getOs() {
        if (osBuilder_ == null) {
          return os_ == null ? io.kubernetes.client.proto.V1.PodOS.getDefaultInstance() : os_;
        } else {
          return osBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Specifies the OS of the containers in the pod.
       * Some pod and container fields are restricted if this is set.
       *
       * If the OS field is set to linux, the following fields must be unset:
       * -securityContext.windowsOptions
       *
       * If the OS field is set to windows, following fields must be unset:
       * - spec.hostPID
       * - spec.hostIPC
       * - spec.hostUsers
       * - spec.securityContext.appArmorProfile
       * - spec.securityContext.seLinuxOptions
       * - spec.securityContext.seccompProfile
       * - spec.securityContext.fsGroup
       * - spec.securityContext.fsGroupChangePolicy
       * - spec.securityContext.sysctls
       * - spec.shareProcessNamespace
       * - spec.securityContext.runAsUser
       * - spec.securityContext.runAsGroup
       * - spec.securityContext.supplementalGroups
       * - spec.containers[*].securityContext.appArmorProfile
       * - spec.containers[*].securityContext.seLinuxOptions
       * - spec.containers[*].securityContext.seccompProfile
       * - spec.containers[*].securityContext.capabilities
       * - spec.containers[*].securityContext.readOnlyRootFilesystem
       * - spec.containers[*].securityContext.privileged
       * - spec.containers[*].securityContext.allowPrivilegeEscalation
       * - spec.containers[*].securityContext.procMount
       * - spec.containers[*].securityContext.runAsUser
       * - spec.containers[*].securityContext.runAsGroup
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
       */
      public Builder setOs(io.kubernetes.client.proto.V1.PodOS value) {
        if (osBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          os_ = value;
        } else {
          osBuilder_.setMessage(value);
        }
        bitField1_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the OS of the containers in the pod.
       * Some pod and container fields are restricted if this is set.
       *
       * If the OS field is set to linux, the following fields must be unset:
       * -securityContext.windowsOptions
       *
       * If the OS field is set to windows, following fields must be unset:
       * - spec.hostPID
       * - spec.hostIPC
       * - spec.hostUsers
       * - spec.securityContext.appArmorProfile
       * - spec.securityContext.seLinuxOptions
       * - spec.securityContext.seccompProfile
       * - spec.securityContext.fsGroup
       * - spec.securityContext.fsGroupChangePolicy
       * - spec.securityContext.sysctls
       * - spec.shareProcessNamespace
       * - spec.securityContext.runAsUser
       * - spec.securityContext.runAsGroup
       * - spec.securityContext.supplementalGroups
       * - spec.containers[*].securityContext.appArmorProfile
       * - spec.containers[*].securityContext.seLinuxOptions
       * - spec.containers[*].securityContext.seccompProfile
       * - spec.containers[*].securityContext.capabilities
       * - spec.containers[*].securityContext.readOnlyRootFilesystem
       * - spec.containers[*].securityContext.privileged
       * - spec.containers[*].securityContext.allowPrivilegeEscalation
       * - spec.containers[*].securityContext.procMount
       * - spec.containers[*].securityContext.runAsUser
       * - spec.containers[*].securityContext.runAsGroup
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
       */
      public Builder setOs(
          io.kubernetes.client.proto.V1.PodOS.Builder builderForValue) {
        if (osBuilder_ == null) {
          os_ = builderForValue.build();
        } else {
          osBuilder_.setMessage(builderForValue.build());
        }
        bitField1_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the OS of the containers in the pod.
       * Some pod and container fields are restricted if this is set.
       *
       * If the OS field is set to linux, the following fields must be unset:
       * -securityContext.windowsOptions
       *
       * If the OS field is set to windows, following fields must be unset:
       * - spec.hostPID
       * - spec.hostIPC
       * - spec.hostUsers
       * - spec.securityContext.appArmorProfile
       * - spec.securityContext.seLinuxOptions
       * - spec.securityContext.seccompProfile
       * - spec.securityContext.fsGroup
       * - spec.securityContext.fsGroupChangePolicy
       * - spec.securityContext.sysctls
       * - spec.shareProcessNamespace
       * - spec.securityContext.runAsUser
       * - spec.securityContext.runAsGroup
       * - spec.securityContext.supplementalGroups
       * - spec.containers[*].securityContext.appArmorProfile
       * - spec.containers[*].securityContext.seLinuxOptions
       * - spec.containers[*].securityContext.seccompProfile
       * - spec.containers[*].securityContext.capabilities
       * - spec.containers[*].securityContext.readOnlyRootFilesystem
       * - spec.containers[*].securityContext.privileged
       * - spec.containers[*].securityContext.allowPrivilegeEscalation
       * - spec.containers[*].securityContext.procMount
       * - spec.containers[*].securityContext.runAsUser
       * - spec.containers[*].securityContext.runAsGroup
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
       */
      public Builder mergeOs(io.kubernetes.client.proto.V1.PodOS value) {
        if (osBuilder_ == null) {
          if (((bitField1_ & 0x00000008) != 0) &&
            os_ != null &&
            os_ != io.kubernetes.client.proto.V1.PodOS.getDefaultInstance()) {
            getOsBuilder().mergeFrom(value);
          } else {
            os_ = value;
          }
        } else {
          osBuilder_.mergeFrom(value);
        }
        if (os_ != null) {
          bitField1_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Specifies the OS of the containers in the pod.
       * Some pod and container fields are restricted if this is set.
       *
       * If the OS field is set to linux, the following fields must be unset:
       * -securityContext.windowsOptions
       *
       * If the OS field is set to windows, following fields must be unset:
       * - spec.hostPID
       * - spec.hostIPC
       * - spec.hostUsers
       * - spec.securityContext.appArmorProfile
       * - spec.securityContext.seLinuxOptions
       * - spec.securityContext.seccompProfile
       * - spec.securityContext.fsGroup
       * - spec.securityContext.fsGroupChangePolicy
       * - spec.securityContext.sysctls
       * - spec.shareProcessNamespace
       * - spec.securityContext.runAsUser
       * - spec.securityContext.runAsGroup
       * - spec.securityContext.supplementalGroups
       * - spec.containers[*].securityContext.appArmorProfile
       * - spec.containers[*].securityContext.seLinuxOptions
       * - spec.containers[*].securityContext.seccompProfile
       * - spec.containers[*].securityContext.capabilities
       * - spec.containers[*].securityContext.readOnlyRootFilesystem
       * - spec.containers[*].securityContext.privileged
       * - spec.containers[*].securityContext.allowPrivilegeEscalation
       * - spec.containers[*].securityContext.procMount
       * - spec.containers[*].securityContext.runAsUser
       * - spec.containers[*].securityContext.runAsGroup
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
       */
      public Builder clearOs() {
        bitField1_ = (bitField1_ & ~0x00000008);
        os_ = null;
        if (osBuilder_ != null) {
          osBuilder_.dispose();
          osBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the OS of the containers in the pod.
       * Some pod and container fields are restricted if this is set.
       *
       * If the OS field is set to linux, the following fields must be unset:
       * -securityContext.windowsOptions
       *
       * If the OS field is set to windows, following fields must be unset:
       * - spec.hostPID
       * - spec.hostIPC
       * - spec.hostUsers
       * - spec.securityContext.appArmorProfile
       * - spec.securityContext.seLinuxOptions
       * - spec.securityContext.seccompProfile
       * - spec.securityContext.fsGroup
       * - spec.securityContext.fsGroupChangePolicy
       * - spec.securityContext.sysctls
       * - spec.shareProcessNamespace
       * - spec.securityContext.runAsUser
       * - spec.securityContext.runAsGroup
       * - spec.securityContext.supplementalGroups
       * - spec.containers[*].securityContext.appArmorProfile
       * - spec.containers[*].securityContext.seLinuxOptions
       * - spec.containers[*].securityContext.seccompProfile
       * - spec.containers[*].securityContext.capabilities
       * - spec.containers[*].securityContext.readOnlyRootFilesystem
       * - spec.containers[*].securityContext.privileged
       * - spec.containers[*].securityContext.allowPrivilegeEscalation
       * - spec.containers[*].securityContext.procMount
       * - spec.containers[*].securityContext.runAsUser
       * - spec.containers[*].securityContext.runAsGroup
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
       */
      public io.kubernetes.client.proto.V1.PodOS.Builder getOsBuilder() {
        bitField1_ |= 0x00000008;
        onChanged();
        return getOsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Specifies the OS of the containers in the pod.
       * Some pod and container fields are restricted if this is set.
       *
       * If the OS field is set to linux, the following fields must be unset:
       * -securityContext.windowsOptions
       *
       * If the OS field is set to windows, following fields must be unset:
       * - spec.hostPID
       * - spec.hostIPC
       * - spec.hostUsers
       * - spec.securityContext.appArmorProfile
       * - spec.securityContext.seLinuxOptions
       * - spec.securityContext.seccompProfile
       * - spec.securityContext.fsGroup
       * - spec.securityContext.fsGroupChangePolicy
       * - spec.securityContext.sysctls
       * - spec.shareProcessNamespace
       * - spec.securityContext.runAsUser
       * - spec.securityContext.runAsGroup
       * - spec.securityContext.supplementalGroups
       * - spec.containers[*].securityContext.appArmorProfile
       * - spec.containers[*].securityContext.seLinuxOptions
       * - spec.containers[*].securityContext.seccompProfile
       * - spec.containers[*].securityContext.capabilities
       * - spec.containers[*].securityContext.readOnlyRootFilesystem
       * - spec.containers[*].securityContext.privileged
       * - spec.containers[*].securityContext.allowPrivilegeEscalation
       * - spec.containers[*].securityContext.procMount
       * - spec.containers[*].securityContext.runAsUser
       * - spec.containers[*].securityContext.runAsGroup
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
       */
      public io.kubernetes.client.proto.V1.PodOSOrBuilder getOsOrBuilder() {
        if (osBuilder_ != null) {
          return osBuilder_.getMessageOrBuilder();
        } else {
          return os_ == null ?
              io.kubernetes.client.proto.V1.PodOS.getDefaultInstance() : os_;
        }
      }
      /**
       * <pre>
       * Specifies the OS of the containers in the pod.
       * Some pod and container fields are restricted if this is set.
       *
       * If the OS field is set to linux, the following fields must be unset:
       * -securityContext.windowsOptions
       *
       * If the OS field is set to windows, following fields must be unset:
       * - spec.hostPID
       * - spec.hostIPC
       * - spec.hostUsers
       * - spec.securityContext.appArmorProfile
       * - spec.securityContext.seLinuxOptions
       * - spec.securityContext.seccompProfile
       * - spec.securityContext.fsGroup
       * - spec.securityContext.fsGroupChangePolicy
       * - spec.securityContext.sysctls
       * - spec.shareProcessNamespace
       * - spec.securityContext.runAsUser
       * - spec.securityContext.runAsGroup
       * - spec.securityContext.supplementalGroups
       * - spec.containers[*].securityContext.appArmorProfile
       * - spec.containers[*].securityContext.seLinuxOptions
       * - spec.containers[*].securityContext.seccompProfile
       * - spec.containers[*].securityContext.capabilities
       * - spec.containers[*].securityContext.readOnlyRootFilesystem
       * - spec.containers[*].securityContext.privileged
       * - spec.containers[*].securityContext.allowPrivilegeEscalation
       * - spec.containers[*].securityContext.procMount
       * - spec.containers[*].securityContext.runAsUser
       * - spec.containers[*].securityContext.runAsGroup
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodOS os = 36;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodOS, io.kubernetes.client.proto.V1.PodOS.Builder, io.kubernetes.client.proto.V1.PodOSOrBuilder> 
          getOsFieldBuilder() {
        if (osBuilder_ == null) {
          osBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodOS, io.kubernetes.client.proto.V1.PodOS.Builder, io.kubernetes.client.proto.V1.PodOSOrBuilder>(
                  getOs(),
                  getParentForChildren(),
                  isClean());
          os_ = null;
        }
        return osBuilder_;
      }

      private boolean hostUsers_ ;
      /**
       * <pre>
       * Use the host's user namespace.
       * Optional: Default to true.
       * If set to true or not present, the pod will be run in the host user namespace, useful
       * for when the pod needs a feature only available to the host user namespace, such as
       * loading a kernel module with CAP_SYS_MODULE.
       * When set to false, a new userns is created for the pod. Setting false is useful for
       * mitigating container breakout vulnerabilities even allowing users to run their
       * containers as root without actually having root privileges on the host.
       * This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostUsers = 37;</code>
       * @return Whether the hostUsers field is set.
       */
      @java.lang.Override
      public boolean hasHostUsers() {
        return ((bitField1_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Use the host's user namespace.
       * Optional: Default to true.
       * If set to true or not present, the pod will be run in the host user namespace, useful
       * for when the pod needs a feature only available to the host user namespace, such as
       * loading a kernel module with CAP_SYS_MODULE.
       * When set to false, a new userns is created for the pod. Setting false is useful for
       * mitigating container breakout vulnerabilities even allowing users to run their
       * containers as root without actually having root privileges on the host.
       * This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostUsers = 37;</code>
       * @return The hostUsers.
       */
      @java.lang.Override
      public boolean getHostUsers() {
        return hostUsers_;
      }
      /**
       * <pre>
       * Use the host's user namespace.
       * Optional: Default to true.
       * If set to true or not present, the pod will be run in the host user namespace, useful
       * for when the pod needs a feature only available to the host user namespace, such as
       * loading a kernel module with CAP_SYS_MODULE.
       * When set to false, a new userns is created for the pod. Setting false is useful for
       * mitigating container breakout vulnerabilities even allowing users to run their
       * containers as root without actually having root privileges on the host.
       * This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostUsers = 37;</code>
       * @param value The hostUsers to set.
       * @return This builder for chaining.
       */
      public Builder setHostUsers(boolean value) {

        hostUsers_ = value;
        bitField1_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Use the host's user namespace.
       * Optional: Default to true.
       * If set to true or not present, the pod will be run in the host user namespace, useful
       * for when the pod needs a feature only available to the host user namespace, such as
       * loading a kernel module with CAP_SYS_MODULE.
       * When set to false, a new userns is created for the pod. Setting false is useful for
       * mitigating container breakout vulnerabilities even allowing users to run their
       * containers as root without actually having root privileges on the host.
       * This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>optional bool hostUsers = 37;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostUsers() {
        bitField1_ = (bitField1_ & ~0x00000010);
        hostUsers_ = false;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.PodSchedulingGate> schedulingGates_ =
        java.util.Collections.emptyList();
      private void ensureSchedulingGatesIsMutable() {
        if (!((bitField1_ & 0x00000020) != 0)) {
          schedulingGates_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PodSchedulingGate>(schedulingGates_);
          bitField1_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodSchedulingGate, io.kubernetes.client.proto.V1.PodSchedulingGate.Builder, io.kubernetes.client.proto.V1.PodSchedulingGateOrBuilder> schedulingGatesBuilder_;

      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodSchedulingGate> getSchedulingGatesList() {
        if (schedulingGatesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(schedulingGates_);
        } else {
          return schedulingGatesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public int getSchedulingGatesCount() {
        if (schedulingGatesBuilder_ == null) {
          return schedulingGates_.size();
        } else {
          return schedulingGatesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public io.kubernetes.client.proto.V1.PodSchedulingGate getSchedulingGates(int index) {
        if (schedulingGatesBuilder_ == null) {
          return schedulingGates_.get(index);
        } else {
          return schedulingGatesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public Builder setSchedulingGates(
          int index, io.kubernetes.client.proto.V1.PodSchedulingGate value) {
        if (schedulingGatesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSchedulingGatesIsMutable();
          schedulingGates_.set(index, value);
          onChanged();
        } else {
          schedulingGatesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public Builder setSchedulingGates(
          int index, io.kubernetes.client.proto.V1.PodSchedulingGate.Builder builderForValue) {
        if (schedulingGatesBuilder_ == null) {
          ensureSchedulingGatesIsMutable();
          schedulingGates_.set(index, builderForValue.build());
          onChanged();
        } else {
          schedulingGatesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public Builder addSchedulingGates(io.kubernetes.client.proto.V1.PodSchedulingGate value) {
        if (schedulingGatesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSchedulingGatesIsMutable();
          schedulingGates_.add(value);
          onChanged();
        } else {
          schedulingGatesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public Builder addSchedulingGates(
          int index, io.kubernetes.client.proto.V1.PodSchedulingGate value) {
        if (schedulingGatesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSchedulingGatesIsMutable();
          schedulingGates_.add(index, value);
          onChanged();
        } else {
          schedulingGatesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public Builder addSchedulingGates(
          io.kubernetes.client.proto.V1.PodSchedulingGate.Builder builderForValue) {
        if (schedulingGatesBuilder_ == null) {
          ensureSchedulingGatesIsMutable();
          schedulingGates_.add(builderForValue.build());
          onChanged();
        } else {
          schedulingGatesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public Builder addSchedulingGates(
          int index, io.kubernetes.client.proto.V1.PodSchedulingGate.Builder builderForValue) {
        if (schedulingGatesBuilder_ == null) {
          ensureSchedulingGatesIsMutable();
          schedulingGates_.add(index, builderForValue.build());
          onChanged();
        } else {
          schedulingGatesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public Builder addAllSchedulingGates(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PodSchedulingGate> values) {
        if (schedulingGatesBuilder_ == null) {
          ensureSchedulingGatesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, schedulingGates_);
          onChanged();
        } else {
          schedulingGatesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public Builder clearSchedulingGates() {
        if (schedulingGatesBuilder_ == null) {
          schedulingGates_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00000020);
          onChanged();
        } else {
          schedulingGatesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public Builder removeSchedulingGates(int index) {
        if (schedulingGatesBuilder_ == null) {
          ensureSchedulingGatesIsMutable();
          schedulingGates_.remove(index);
          onChanged();
        } else {
          schedulingGatesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public io.kubernetes.client.proto.V1.PodSchedulingGate.Builder getSchedulingGatesBuilder(
          int index) {
        return getSchedulingGatesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public io.kubernetes.client.proto.V1.PodSchedulingGateOrBuilder getSchedulingGatesOrBuilder(
          int index) {
        if (schedulingGatesBuilder_ == null) {
          return schedulingGates_.get(index);  } else {
          return schedulingGatesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodSchedulingGateOrBuilder> 
           getSchedulingGatesOrBuilderList() {
        if (schedulingGatesBuilder_ != null) {
          return schedulingGatesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(schedulingGates_);
        }
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public io.kubernetes.client.proto.V1.PodSchedulingGate.Builder addSchedulingGatesBuilder() {
        return getSchedulingGatesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PodSchedulingGate.getDefaultInstance());
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public io.kubernetes.client.proto.V1.PodSchedulingGate.Builder addSchedulingGatesBuilder(
          int index) {
        return getSchedulingGatesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PodSchedulingGate.getDefaultInstance());
      }
      /**
       * <pre>
       * SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
       * If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
       * scheduler will not attempt to schedule the pod.
       *
       * SchedulingGates can only be set at pod creation time, and be removed only afterwards.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodSchedulingGate schedulingGates = 38;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodSchedulingGate.Builder> 
           getSchedulingGatesBuilderList() {
        return getSchedulingGatesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodSchedulingGate, io.kubernetes.client.proto.V1.PodSchedulingGate.Builder, io.kubernetes.client.proto.V1.PodSchedulingGateOrBuilder> 
          getSchedulingGatesFieldBuilder() {
        if (schedulingGatesBuilder_ == null) {
          schedulingGatesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PodSchedulingGate, io.kubernetes.client.proto.V1.PodSchedulingGate.Builder, io.kubernetes.client.proto.V1.PodSchedulingGateOrBuilder>(
                  schedulingGates_,
                  ((bitField1_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          schedulingGates_ = null;
        }
        return schedulingGatesBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.PodResourceClaim> resourceClaims_ =
        java.util.Collections.emptyList();
      private void ensureResourceClaimsIsMutable() {
        if (!((bitField1_ & 0x00000040) != 0)) {
          resourceClaims_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PodResourceClaim>(resourceClaims_);
          bitField1_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodResourceClaim, io.kubernetes.client.proto.V1.PodResourceClaim.Builder, io.kubernetes.client.proto.V1.PodResourceClaimOrBuilder> resourceClaimsBuilder_;

      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodResourceClaim> getResourceClaimsList() {
        if (resourceClaimsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(resourceClaims_);
        } else {
          return resourceClaimsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public int getResourceClaimsCount() {
        if (resourceClaimsBuilder_ == null) {
          return resourceClaims_.size();
        } else {
          return resourceClaimsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public io.kubernetes.client.proto.V1.PodResourceClaim getResourceClaims(int index) {
        if (resourceClaimsBuilder_ == null) {
          return resourceClaims_.get(index);
        } else {
          return resourceClaimsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public Builder setResourceClaims(
          int index, io.kubernetes.client.proto.V1.PodResourceClaim value) {
        if (resourceClaimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResourceClaimsIsMutable();
          resourceClaims_.set(index, value);
          onChanged();
        } else {
          resourceClaimsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public Builder setResourceClaims(
          int index, io.kubernetes.client.proto.V1.PodResourceClaim.Builder builderForValue) {
        if (resourceClaimsBuilder_ == null) {
          ensureResourceClaimsIsMutable();
          resourceClaims_.set(index, builderForValue.build());
          onChanged();
        } else {
          resourceClaimsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public Builder addResourceClaims(io.kubernetes.client.proto.V1.PodResourceClaim value) {
        if (resourceClaimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResourceClaimsIsMutable();
          resourceClaims_.add(value);
          onChanged();
        } else {
          resourceClaimsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public Builder addResourceClaims(
          int index, io.kubernetes.client.proto.V1.PodResourceClaim value) {
        if (resourceClaimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResourceClaimsIsMutable();
          resourceClaims_.add(index, value);
          onChanged();
        } else {
          resourceClaimsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public Builder addResourceClaims(
          io.kubernetes.client.proto.V1.PodResourceClaim.Builder builderForValue) {
        if (resourceClaimsBuilder_ == null) {
          ensureResourceClaimsIsMutable();
          resourceClaims_.add(builderForValue.build());
          onChanged();
        } else {
          resourceClaimsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public Builder addResourceClaims(
          int index, io.kubernetes.client.proto.V1.PodResourceClaim.Builder builderForValue) {
        if (resourceClaimsBuilder_ == null) {
          ensureResourceClaimsIsMutable();
          resourceClaims_.add(index, builderForValue.build());
          onChanged();
        } else {
          resourceClaimsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public Builder addAllResourceClaims(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PodResourceClaim> values) {
        if (resourceClaimsBuilder_ == null) {
          ensureResourceClaimsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, resourceClaims_);
          onChanged();
        } else {
          resourceClaimsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public Builder clearResourceClaims() {
        if (resourceClaimsBuilder_ == null) {
          resourceClaims_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00000040);
          onChanged();
        } else {
          resourceClaimsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public Builder removeResourceClaims(int index) {
        if (resourceClaimsBuilder_ == null) {
          ensureResourceClaimsIsMutable();
          resourceClaims_.remove(index);
          onChanged();
        } else {
          resourceClaimsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public io.kubernetes.client.proto.V1.PodResourceClaim.Builder getResourceClaimsBuilder(
          int index) {
        return getResourceClaimsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public io.kubernetes.client.proto.V1.PodResourceClaimOrBuilder getResourceClaimsOrBuilder(
          int index) {
        if (resourceClaimsBuilder_ == null) {
          return resourceClaims_.get(index);  } else {
          return resourceClaimsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodResourceClaimOrBuilder> 
           getResourceClaimsOrBuilderList() {
        if (resourceClaimsBuilder_ != null) {
          return resourceClaimsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(resourceClaims_);
        }
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public io.kubernetes.client.proto.V1.PodResourceClaim.Builder addResourceClaimsBuilder() {
        return getResourceClaimsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PodResourceClaim.getDefaultInstance());
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public io.kubernetes.client.proto.V1.PodResourceClaim.Builder addResourceClaimsBuilder(
          int index) {
        return getResourceClaimsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PodResourceClaim.getDefaultInstance());
      }
      /**
       * <pre>
       * ResourceClaims defines which ResourceClaims must be allocated
       * and reserved before the Pod is allowed to start. The resources
       * will be made available to those containers which consume them
       * by name.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable.
       *
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaim resourceClaims = 39;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodResourceClaim.Builder> 
           getResourceClaimsBuilderList() {
        return getResourceClaimsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodResourceClaim, io.kubernetes.client.proto.V1.PodResourceClaim.Builder, io.kubernetes.client.proto.V1.PodResourceClaimOrBuilder> 
          getResourceClaimsFieldBuilder() {
        if (resourceClaimsBuilder_ == null) {
          resourceClaimsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PodResourceClaim, io.kubernetes.client.proto.V1.PodResourceClaim.Builder, io.kubernetes.client.proto.V1.PodResourceClaimOrBuilder>(
                  resourceClaims_,
                  ((bitField1_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          resourceClaims_ = null;
        }
        return resourceClaimsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodSpec)
    private static final io.kubernetes.client.proto.V1.PodSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodSpec();
    }

    public static io.kubernetes.client.proto.V1.PodSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodSpec>
        PARSER = new com.google.protobuf.AbstractParser<PodSpec>() {
      @java.lang.Override
      public PodSpec 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<PodSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
     * The conditions array, the reason and message fields, and the individual container status
     * arrays contain more detail about the pod's status.
     * There are five possible phase values:
     *
     * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
     * container images has not been created. This includes time before being scheduled as
     * well as time spent downloading images over the network, which could take a while.
     * Running: The pod has been bound to a node, and all of the containers have been created.
     * At least one container is still running, or is in the process of starting or restarting.
     * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
     * Failed: All containers in the pod have terminated, and at least one container has
     * terminated in failure. The container either exited with non-zero status or was terminated
     * by the system.
     * Unknown: For some reason the state of the pod could not be obtained, typically due to an
     * error in communicating with the host of the pod.
     *
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return Whether the phase field is set.
     */
    boolean hasPhase();
    /**
     * <pre>
     * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
     * The conditions array, the reason and message fields, and the individual container status
     * arrays contain more detail about the pod's status.
     * There are five possible phase values:
     *
     * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
     * container images has not been created. This includes time before being scheduled as
     * well as time spent downloading images over the network, which could take a while.
     * Running: The pod has been bound to a node, and all of the containers have been created.
     * At least one container is still running, or is in the process of starting or restarting.
     * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
     * Failed: All containers in the pod have terminated, and at least one container has
     * terminated in failure. The container either exited with non-zero status or was terminated
     * by the system.
     * Unknown: For some reason the state of the pod could not be obtained, typically due to an
     * error in communicating with the host of the pod.
     *
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The phase.
     */
    java.lang.String getPhase();
    /**
     * <pre>
     * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
     * The conditions array, the reason and message fields, and the individual container status
     * arrays contain more detail about the pod's status.
     * There are five possible phase values:
     *
     * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
     * container images has not been created. This includes time before being scheduled as
     * well as time spent downloading images over the network, which could take a while.
     * Running: The pod has been bound to a node, and all of the containers have been created.
     * At least one container is still running, or is in the process of starting or restarting.
     * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
     * Failed: All containers in the pod have terminated, and at least one container has
     * terminated in failure. The container either exited with non-zero status or was terminated
     * by the system.
     * Unknown: For some reason the state of the pod could not be obtained, typically due to an
     * error in communicating with the host of the pod.
     *
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The bytes for phase.
     */
    com.google.protobuf.ByteString
        getPhaseBytes();

    /**
     * <pre>
     * Current service state of pod.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PodCondition> 
        getConditionsList();
    /**
     * <pre>
     * Current service state of pod.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodCondition getConditions(int index);
    /**
     * <pre>
     * Current service state of pod.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
     */
    int getConditionsCount();
    /**
     * <pre>
     * Current service state of pod.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodConditionOrBuilder> 
        getConditionsOrBuilderList();
    /**
     * <pre>
     * Current service state of pod.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodConditionOrBuilder getConditionsOrBuilder(
        int index);

    /**
     * <pre>
     * A human readable message indicating details about why the pod is in this condition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * A human readable message indicating details about why the pod is in this condition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * A human readable message indicating details about why the pod is in this condition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    /**
     * <pre>
     * A brief CamelCase message indicating details about why the pod is in this state.
     * e.g. 'Evicted'
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * A brief CamelCase message indicating details about why the pod is in this state.
     * e.g. 'Evicted'
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * A brief CamelCase message indicating details about why the pod is in this state.
     * e.g. 'Evicted'
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
     * scheduled right away as preemption victims receive their graceful termination periods.
     * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
     * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
     * give the resources on this node to a higher priority pod that is created after preemption.
     * As a result, this field may be different than PodSpec.nodeName when the pod is
     * scheduled.
     * +optional
     * </pre>
     *
     * <code>optional string nominatedNodeName = 11;</code>
     * @return Whether the nominatedNodeName field is set.
     */
    boolean hasNominatedNodeName();
    /**
     * <pre>
     * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
     * scheduled right away as preemption victims receive their graceful termination periods.
     * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
     * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
     * give the resources on this node to a higher priority pod that is created after preemption.
     * As a result, this field may be different than PodSpec.nodeName when the pod is
     * scheduled.
     * +optional
     * </pre>
     *
     * <code>optional string nominatedNodeName = 11;</code>
     * @return The nominatedNodeName.
     */
    java.lang.String getNominatedNodeName();
    /**
     * <pre>
     * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
     * scheduled right away as preemption victims receive their graceful termination periods.
     * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
     * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
     * give the resources on this node to a higher priority pod that is created after preemption.
     * As a result, this field may be different than PodSpec.nodeName when the pod is
     * scheduled.
     * +optional
     * </pre>
     *
     * <code>optional string nominatedNodeName = 11;</code>
     * @return The bytes for nominatedNodeName.
     */
    com.google.protobuf.ByteString
        getNominatedNodeNameBytes();

    /**
     * <pre>
     * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
     * not be updated even if there is a node is assigned to pod
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return Whether the hostIP field is set.
     */
    boolean hasHostIP();
    /**
     * <pre>
     * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
     * not be updated even if there is a node is assigned to pod
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return The hostIP.
     */
    java.lang.String getHostIP();
    /**
     * <pre>
     * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
     * not be updated even if there is a node is assigned to pod
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return The bytes for hostIP.
     */
    com.google.protobuf.ByteString
        getHostIPBytes();

    /**
     * <pre>
     * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
     * match the hostIP field. This list is empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
     * not be updated even if there is a node is assigned to this pod.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.HostIP> 
        getHostIPsList();
    /**
     * <pre>
     * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
     * match the hostIP field. This list is empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
     * not be updated even if there is a node is assigned to this pod.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
     */
    io.kubernetes.client.proto.V1.HostIP getHostIPs(int index);
    /**
     * <pre>
     * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
     * match the hostIP field. This list is empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
     * not be updated even if there is a node is assigned to this pod.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
     */
    int getHostIPsCount();
    /**
     * <pre>
     * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
     * match the hostIP field. This list is empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
     * not be updated even if there is a node is assigned to this pod.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.HostIPOrBuilder> 
        getHostIPsOrBuilderList();
    /**
     * <pre>
     * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
     * match the hostIP field. This list is empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
     * not be updated even if there is a node is assigned to this pod.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
     */
    io.kubernetes.client.proto.V1.HostIPOrBuilder getHostIPsOrBuilder(
        int index);

    /**
     * <pre>
     * podIP address allocated to the pod. Routable at least within the cluster.
     * Empty if not yet allocated.
     * +optional
     * </pre>
     *
     * <code>optional string podIP = 6;</code>
     * @return Whether the podIP field is set.
     */
    boolean hasPodIP();
    /**
     * <pre>
     * podIP address allocated to the pod. Routable at least within the cluster.
     * Empty if not yet allocated.
     * +optional
     * </pre>
     *
     * <code>optional string podIP = 6;</code>
     * @return The podIP.
     */
    java.lang.String getPodIP();
    /**
     * <pre>
     * podIP address allocated to the pod. Routable at least within the cluster.
     * Empty if not yet allocated.
     * +optional
     * </pre>
     *
     * <code>optional string podIP = 6;</code>
     * @return The bytes for podIP.
     */
    com.google.protobuf.ByteString
        getPodIPBytes();

    /**
     * <pre>
     * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
     * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
     * is empty if no IPs have been allocated yet.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PodIP> 
        getPodIPsList();
    /**
     * <pre>
     * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
     * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
     * is empty if no IPs have been allocated yet.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
     */
    io.kubernetes.client.proto.V1.PodIP getPodIPs(int index);
    /**
     * <pre>
     * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
     * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
     * is empty if no IPs have been allocated yet.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
     */
    int getPodIPsCount();
    /**
     * <pre>
     * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
     * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
     * is empty if no IPs have been allocated yet.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodIPOrBuilder> 
        getPodIPsOrBuilderList();
    /**
     * <pre>
     * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
     * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
     * is empty if no IPs have been allocated yet.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
     */
    io.kubernetes.client.proto.V1.PodIPOrBuilder getPodIPsOrBuilder(
        int index);

    /**
     * <pre>
     * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
     * This is before the Kubelet pulled the container image(s) for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
     * @return Whether the startTime field is set.
     */
    boolean hasStartTime();
    /**
     * <pre>
     * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
     * This is before the Kubelet pulled the container image(s) for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
     * @return The startTime.
     */
    io.kubernetes.client.proto.Meta.Time getStartTime();
    /**
     * <pre>
     * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
     * This is before the Kubelet pulled the container image(s) for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getStartTimeOrBuilder();

    /**
     * <pre>
     * The list has one entry per init container in the manifest. The most recent successful
     * init container will have ready = true, the most recently started container will have
     * startTime set.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> 
        getInitContainerStatusesList();
    /**
     * <pre>
     * The list has one entry per init container in the manifest. The most recent successful
     * init container will have ready = true, the most recently started container will have
     * startTime set.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStatus getInitContainerStatuses(int index);
    /**
     * <pre>
     * The list has one entry per init container in the manifest. The most recent successful
     * init container will have ready = true, the most recently started container will have
     * startTime set.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
     */
    int getInitContainerStatusesCount();
    /**
     * <pre>
     * The list has one entry per init container in the manifest. The most recent successful
     * init container will have ready = true, the most recently started container will have
     * startTime set.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
        getInitContainerStatusesOrBuilderList();
    /**
     * <pre>
     * The list has one entry per init container in the manifest. The most recent successful
     * init container will have ready = true, the most recently started container will have
     * startTime set.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStatusOrBuilder getInitContainerStatusesOrBuilder(
        int index);

    /**
     * <pre>
     * The list has one entry per container in the manifest.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> 
        getContainerStatusesList();
    /**
     * <pre>
     * The list has one entry per container in the manifest.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStatus getContainerStatuses(int index);
    /**
     * <pre>
     * The list has one entry per container in the manifest.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
     */
    int getContainerStatusesCount();
    /**
     * <pre>
     * The list has one entry per container in the manifest.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
        getContainerStatusesOrBuilderList();
    /**
     * <pre>
     * The list has one entry per container in the manifest.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStatusOrBuilder getContainerStatusesOrBuilder(
        int index);

    /**
     * <pre>
     * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
     * See PodQOSClass type for available QOS classes
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
     * +optional
     * </pre>
     *
     * <code>optional string qosClass = 9;</code>
     * @return Whether the qosClass field is set.
     */
    boolean hasQosClass();
    /**
     * <pre>
     * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
     * See PodQOSClass type for available QOS classes
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
     * +optional
     * </pre>
     *
     * <code>optional string qosClass = 9;</code>
     * @return The qosClass.
     */
    java.lang.String getQosClass();
    /**
     * <pre>
     * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
     * See PodQOSClass type for available QOS classes
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
     * +optional
     * </pre>
     *
     * <code>optional string qosClass = 9;</code>
     * @return The bytes for qosClass.
     */
    com.google.protobuf.ByteString
        getQosClassBytes();

    /**
     * <pre>
     * Status for any ephemeral containers that have run in this pod.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> 
        getEphemeralContainerStatusesList();
    /**
     * <pre>
     * Status for any ephemeral containers that have run in this pod.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStatus getEphemeralContainerStatuses(int index);
    /**
     * <pre>
     * Status for any ephemeral containers that have run in this pod.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
     */
    int getEphemeralContainerStatusesCount();
    /**
     * <pre>
     * Status for any ephemeral containers that have run in this pod.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
        getEphemeralContainerStatusesOrBuilderList();
    /**
     * <pre>
     * Status for any ephemeral containers that have run in this pod.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
     */
    io.kubernetes.client.proto.V1.ContainerStatusOrBuilder getEphemeralContainerStatusesOrBuilder(
        int index);

    /**
     * <pre>
     * Status of resources resize desired for pod's containers.
     * It is empty if no resources resize is pending.
     * Any changes to container resources will automatically set this to "Proposed"
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional string resize = 14;</code>
     * @return Whether the resize field is set.
     */
    boolean hasResize();
    /**
     * <pre>
     * Status of resources resize desired for pod's containers.
     * It is empty if no resources resize is pending.
     * Any changes to container resources will automatically set this to "Proposed"
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional string resize = 14;</code>
     * @return The resize.
     */
    java.lang.String getResize();
    /**
     * <pre>
     * Status of resources resize desired for pod's containers.
     * It is empty if no resources resize is pending.
     * Any changes to container resources will automatically set this to "Proposed"
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional string resize = 14;</code>
     * @return The bytes for resize.
     */
    com.google.protobuf.ByteString
        getResizeBytes();

    /**
     * <pre>
     * Status of resource claims.
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PodResourceClaimStatus> 
        getResourceClaimStatusesList();
    /**
     * <pre>
     * Status of resource claims.
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
     */
    io.kubernetes.client.proto.V1.PodResourceClaimStatus getResourceClaimStatuses(int index);
    /**
     * <pre>
     * Status of resource claims.
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
     */
    int getResourceClaimStatusesCount();
    /**
     * <pre>
     * Status of resource claims.
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodResourceClaimStatusOrBuilder> 
        getResourceClaimStatusesOrBuilderList();
    /**
     * <pre>
     * Status of resource claims.
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
     */
    io.kubernetes.client.proto.V1.PodResourceClaimStatusOrBuilder getResourceClaimStatusesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * PodStatus represents information about the status of a pod. Status may trail the actual
   * state of a system, especially if the node that hosts the pod cannot contact the control
   * plane.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodStatus}
   */
  public static final class PodStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodStatus)
      PodStatusOrBuilder {
  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= */ "",
        PodStatus.class.getName());
    }
    // Use PodStatus.newBuilder() to construct.
    private PodStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodStatus() {
      phase_ = "";
      conditions_ = java.util.Collections.emptyList();
      message_ = "";
      reason_ = "";
      nominatedNodeName_ = "";
      hostIP_ = "";
      hostIPs_ = java.util.Collections.emptyList();
      podIP_ = "";
      podIPs_ = java.util.Collections.emptyList();
      initContainerStatuses_ = java.util.Collections.emptyList();
      containerStatuses_ = java.util.Collections.emptyList();
      qosClass_ = "";
      ephemeralContainerStatuses_ = java.util.Collections.emptyList();
      resize_ = "";
      resourceClaimStatuses_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodStatus.class, io.kubernetes.client.proto.V1.PodStatus.Builder.class);
    }

    private int bitField0_;
    public static final int PHASE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object phase_ = "";
    /**
     * <pre>
     * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
     * The conditions array, the reason and message fields, and the individual container status
     * arrays contain more detail about the pod's status.
     * There are five possible phase values:
     *
     * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
     * container images has not been created. This includes time before being scheduled as
     * well as time spent downloading images over the network, which could take a while.
     * Running: The pod has been bound to a node, and all of the containers have been created.
     * At least one container is still running, or is in the process of starting or restarting.
     * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
     * Failed: All containers in the pod have terminated, and at least one container has
     * terminated in failure. The container either exited with non-zero status or was terminated
     * by the system.
     * Unknown: For some reason the state of the pod could not be obtained, typically due to an
     * error in communicating with the host of the pod.
     *
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return Whether the phase field is set.
     */
    @java.lang.Override
    public boolean hasPhase() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
     * The conditions array, the reason and message fields, and the individual container status
     * arrays contain more detail about the pod's status.
     * There are five possible phase values:
     *
     * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
     * container images has not been created. This includes time before being scheduled as
     * well as time spent downloading images over the network, which could take a while.
     * Running: The pod has been bound to a node, and all of the containers have been created.
     * At least one container is still running, or is in the process of starting or restarting.
     * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
     * Failed: All containers in the pod have terminated, and at least one container has
     * terminated in failure. The container either exited with non-zero status or was terminated
     * by the system.
     * Unknown: For some reason the state of the pod could not be obtained, typically due to an
     * error in communicating with the host of the pod.
     *
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The phase.
     */
    @java.lang.Override
    public java.lang.String getPhase() {
      java.lang.Object ref = phase_;
      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()) {
          phase_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
     * The conditions array, the reason and message fields, and the individual container status
     * arrays contain more detail about the pod's status.
     * There are five possible phase values:
     *
     * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
     * container images has not been created. This includes time before being scheduled as
     * well as time spent downloading images over the network, which could take a while.
     * Running: The pod has been bound to a node, and all of the containers have been created.
     * At least one container is still running, or is in the process of starting or restarting.
     * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
     * Failed: All containers in the pod have terminated, and at least one container has
     * terminated in failure. The container either exited with non-zero status or was terminated
     * by the system.
     * Unknown: For some reason the state of the pod could not be obtained, typically due to an
     * error in communicating with the host of the pod.
     *
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
     * +optional
     * </pre>
     *
     * <code>optional string phase = 1;</code>
     * @return The bytes for phase.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPhaseBytes() {
      java.lang.Object ref = phase_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        phase_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONDITIONS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PodCondition> conditions_;
    /**
     * <pre>
     * Current service state of pod.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PodCondition> getConditionsList() {
      return conditions_;
    }
    /**
     * <pre>
     * Current service state of pod.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodConditionOrBuilder> 
        getConditionsOrBuilderList() {
      return conditions_;
    }
    /**
     * <pre>
     * Current service state of pod.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
     */
    @java.lang.Override
    public int getConditionsCount() {
      return conditions_.size();
    }
    /**
     * <pre>
     * Current service state of pod.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodCondition getConditions(int index) {
      return conditions_.get(index);
    }
    /**
     * <pre>
     * Current service state of pod.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodConditionOrBuilder getConditionsOrBuilder(
        int index) {
      return conditions_.get(index);
    }

    public static final int MESSAGE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * A human readable message indicating details about why the pod is in this condition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * A human readable message indicating details about why the pod is in this condition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</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>
     * A human readable message indicating details about why the pod is in this condition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 3;</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 REASON_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * A brief CamelCase message indicating details about why the pod is in this state.
     * e.g. 'Evicted'
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * A brief CamelCase message indicating details about why the pod is in this state.
     * e.g. 'Evicted'
     * +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>
     * A brief CamelCase message indicating details about why the pod is in this state.
     * e.g. 'Evicted'
     * +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 NOMINATEDNODENAME_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private volatile java.lang.Object nominatedNodeName_ = "";
    /**
     * <pre>
     * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
     * scheduled right away as preemption victims receive their graceful termination periods.
     * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
     * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
     * give the resources on this node to a higher priority pod that is created after preemption.
     * As a result, this field may be different than PodSpec.nodeName when the pod is
     * scheduled.
     * +optional
     * </pre>
     *
     * <code>optional string nominatedNodeName = 11;</code>
     * @return Whether the nominatedNodeName field is set.
     */
    @java.lang.Override
    public boolean hasNominatedNodeName() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
     * scheduled right away as preemption victims receive their graceful termination periods.
     * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
     * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
     * give the resources on this node to a higher priority pod that is created after preemption.
     * As a result, this field may be different than PodSpec.nodeName when the pod is
     * scheduled.
     * +optional
     * </pre>
     *
     * <code>optional string nominatedNodeName = 11;</code>
     * @return The nominatedNodeName.
     */
    @java.lang.Override
    public java.lang.String getNominatedNodeName() {
      java.lang.Object ref = nominatedNodeName_;
      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()) {
          nominatedNodeName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
     * scheduled right away as preemption victims receive their graceful termination periods.
     * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
     * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
     * give the resources on this node to a higher priority pod that is created after preemption.
     * As a result, this field may be different than PodSpec.nodeName when the pod is
     * scheduled.
     * +optional
     * </pre>
     *
     * <code>optional string nominatedNodeName = 11;</code>
     * @return The bytes for nominatedNodeName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNominatedNodeNameBytes() {
      java.lang.Object ref = nominatedNodeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nominatedNodeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HOSTIP_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object hostIP_ = "";
    /**
     * <pre>
     * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
     * not be updated even if there is a node is assigned to pod
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return Whether the hostIP field is set.
     */
    @java.lang.Override
    public boolean hasHostIP() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
     * not be updated even if there is a node is assigned to pod
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return The hostIP.
     */
    @java.lang.Override
    public java.lang.String getHostIP() {
      java.lang.Object ref = hostIP_;
      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()) {
          hostIP_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
     * not be updated even if there is a node is assigned to pod
     * +optional
     * </pre>
     *
     * <code>optional string hostIP = 5;</code>
     * @return The bytes for hostIP.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHostIPBytes() {
      java.lang.Object ref = hostIP_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hostIP_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HOSTIPS_FIELD_NUMBER = 16;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.HostIP> hostIPs_;
    /**
     * <pre>
     * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
     * match the hostIP field. This list is empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
     * not be updated even if there is a node is assigned to this pod.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.HostIP> getHostIPsList() {
      return hostIPs_;
    }
    /**
     * <pre>
     * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
     * match the hostIP field. This list is empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
     * not be updated even if there is a node is assigned to this pod.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.HostIPOrBuilder> 
        getHostIPsOrBuilderList() {
      return hostIPs_;
    }
    /**
     * <pre>
     * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
     * match the hostIP field. This list is empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
     * not be updated even if there is a node is assigned to this pod.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
     */
    @java.lang.Override
    public int getHostIPsCount() {
      return hostIPs_.size();
    }
    /**
     * <pre>
     * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
     * match the hostIP field. This list is empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
     * not be updated even if there is a node is assigned to this pod.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostIP getHostIPs(int index) {
      return hostIPs_.get(index);
    }
    /**
     * <pre>
     * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
     * match the hostIP field. This list is empty if the pod has not started yet.
     * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
     * not be updated even if there is a node is assigned to this pod.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostIPOrBuilder getHostIPsOrBuilder(
        int index) {
      return hostIPs_.get(index);
    }

    public static final int PODIP_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object podIP_ = "";
    /**
     * <pre>
     * podIP address allocated to the pod. Routable at least within the cluster.
     * Empty if not yet allocated.
     * +optional
     * </pre>
     *
     * <code>optional string podIP = 6;</code>
     * @return Whether the podIP field is set.
     */
    @java.lang.Override
    public boolean hasPodIP() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * podIP address allocated to the pod. Routable at least within the cluster.
     * Empty if not yet allocated.
     * +optional
     * </pre>
     *
     * <code>optional string podIP = 6;</code>
     * @return The podIP.
     */
    @java.lang.Override
    public java.lang.String getPodIP() {
      java.lang.Object ref = podIP_;
      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()) {
          podIP_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * podIP address allocated to the pod. Routable at least within the cluster.
     * Empty if not yet allocated.
     * +optional
     * </pre>
     *
     * <code>optional string podIP = 6;</code>
     * @return The bytes for podIP.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPodIPBytes() {
      java.lang.Object ref = podIP_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        podIP_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PODIPS_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PodIP> podIPs_;
    /**
     * <pre>
     * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
     * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
     * is empty if no IPs have been allocated yet.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PodIP> getPodIPsList() {
      return podIPs_;
    }
    /**
     * <pre>
     * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
     * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
     * is empty if no IPs have been allocated yet.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodIPOrBuilder> 
        getPodIPsOrBuilderList() {
      return podIPs_;
    }
    /**
     * <pre>
     * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
     * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
     * is empty if no IPs have been allocated yet.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
     */
    @java.lang.Override
    public int getPodIPsCount() {
      return podIPs_.size();
    }
    /**
     * <pre>
     * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
     * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
     * is empty if no IPs have been allocated yet.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodIP getPodIPs(int index) {
      return podIPs_.get(index);
    }
    /**
     * <pre>
     * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
     * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
     * is empty if no IPs have been allocated yet.
     * +optional
     * +patchStrategy=merge
     * +patchMergeKey=ip
     * +listType=map
     * +listMapKey=ip
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodIPOrBuilder getPodIPsOrBuilder(
        int index) {
      return podIPs_.get(index);
    }

    public static final int STARTTIME_FIELD_NUMBER = 7;
    private io.kubernetes.client.proto.Meta.Time startTime_;
    /**
     * <pre>
     * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
     * This is before the Kubelet pulled the container image(s) for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
     * @return Whether the startTime field is set.
     */
    @java.lang.Override
    public boolean hasStartTime() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
     * This is before the Kubelet pulled the container image(s) for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
     * @return The startTime.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getStartTime() {
      return startTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startTime_;
    }
    /**
     * <pre>
     * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
     * This is before the Kubelet pulled the container image(s) for the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getStartTimeOrBuilder() {
      return startTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startTime_;
    }

    public static final int INITCONTAINERSTATUSES_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> initContainerStatuses_;
    /**
     * <pre>
     * The list has one entry per init container in the manifest. The most recent successful
     * init container will have ready = true, the most recently started container will have
     * startTime set.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> getInitContainerStatusesList() {
      return initContainerStatuses_;
    }
    /**
     * <pre>
     * The list has one entry per init container in the manifest. The most recent successful
     * init container will have ready = true, the most recently started container will have
     * startTime set.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
        getInitContainerStatusesOrBuilderList() {
      return initContainerStatuses_;
    }
    /**
     * <pre>
     * The list has one entry per init container in the manifest. The most recent successful
     * init container will have ready = true, the most recently started container will have
     * startTime set.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
     */
    @java.lang.Override
    public int getInitContainerStatusesCount() {
      return initContainerStatuses_.size();
    }
    /**
     * <pre>
     * The list has one entry per init container in the manifest. The most recent successful
     * init container will have ready = true, the most recently started container will have
     * startTime set.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStatus getInitContainerStatuses(int index) {
      return initContainerStatuses_.get(index);
    }
    /**
     * <pre>
     * The list has one entry per init container in the manifest. The most recent successful
     * init container will have ready = true, the most recently started container will have
     * startTime set.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStatusOrBuilder getInitContainerStatusesOrBuilder(
        int index) {
      return initContainerStatuses_.get(index);
    }

    public static final int CONTAINERSTATUSES_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> containerStatuses_;
    /**
     * <pre>
     * The list has one entry per container in the manifest.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> getContainerStatusesList() {
      return containerStatuses_;
    }
    /**
     * <pre>
     * The list has one entry per container in the manifest.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
        getContainerStatusesOrBuilderList() {
      return containerStatuses_;
    }
    /**
     * <pre>
     * The list has one entry per container in the manifest.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
     */
    @java.lang.Override
    public int getContainerStatusesCount() {
      return containerStatuses_.size();
    }
    /**
     * <pre>
     * The list has one entry per container in the manifest.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStatus getContainerStatuses(int index) {
      return containerStatuses_.get(index);
    }
    /**
     * <pre>
     * The list has one entry per container in the manifest.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStatusOrBuilder getContainerStatusesOrBuilder(
        int index) {
      return containerStatuses_.get(index);
    }

    public static final int QOSCLASS_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object qosClass_ = "";
    /**
     * <pre>
     * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
     * See PodQOSClass type for available QOS classes
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
     * +optional
     * </pre>
     *
     * <code>optional string qosClass = 9;</code>
     * @return Whether the qosClass field is set.
     */
    @java.lang.Override
    public boolean hasQosClass() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
     * See PodQOSClass type for available QOS classes
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
     * +optional
     * </pre>
     *
     * <code>optional string qosClass = 9;</code>
     * @return The qosClass.
     */
    @java.lang.Override
    public java.lang.String getQosClass() {
      java.lang.Object ref = qosClass_;
      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()) {
          qosClass_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
     * See PodQOSClass type for available QOS classes
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
     * +optional
     * </pre>
     *
     * <code>optional string qosClass = 9;</code>
     * @return The bytes for qosClass.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getQosClassBytes() {
      java.lang.Object ref = qosClass_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        qosClass_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EPHEMERALCONTAINERSTATUSES_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> ephemeralContainerStatuses_;
    /**
     * <pre>
     * Status for any ephemeral containers that have run in this pod.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> getEphemeralContainerStatusesList() {
      return ephemeralContainerStatuses_;
    }
    /**
     * <pre>
     * Status for any ephemeral containers that have run in this pod.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
        getEphemeralContainerStatusesOrBuilderList() {
      return ephemeralContainerStatuses_;
    }
    /**
     * <pre>
     * Status for any ephemeral containers that have run in this pod.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
     */
    @java.lang.Override
    public int getEphemeralContainerStatusesCount() {
      return ephemeralContainerStatuses_.size();
    }
    /**
     * <pre>
     * Status for any ephemeral containers that have run in this pod.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStatus getEphemeralContainerStatuses(int index) {
      return ephemeralContainerStatuses_.get(index);
    }
    /**
     * <pre>
     * Status for any ephemeral containers that have run in this pod.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ContainerStatusOrBuilder getEphemeralContainerStatusesOrBuilder(
        int index) {
      return ephemeralContainerStatuses_.get(index);
    }

    public static final int RESIZE_FIELD_NUMBER = 14;
    @SuppressWarnings("serial")
    private volatile java.lang.Object resize_ = "";
    /**
     * <pre>
     * Status of resources resize desired for pod's containers.
     * It is empty if no resources resize is pending.
     * Any changes to container resources will automatically set this to "Proposed"
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional string resize = 14;</code>
     * @return Whether the resize field is set.
     */
    @java.lang.Override
    public boolean hasResize() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * Status of resources resize desired for pod's containers.
     * It is empty if no resources resize is pending.
     * Any changes to container resources will automatically set this to "Proposed"
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional string resize = 14;</code>
     * @return The resize.
     */
    @java.lang.Override
    public java.lang.String getResize() {
      java.lang.Object ref = resize_;
      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()) {
          resize_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Status of resources resize desired for pod's containers.
     * It is empty if no resources resize is pending.
     * Any changes to container resources will automatically set this to "Proposed"
     * +featureGate=InPlacePodVerticalScaling
     * +optional
     * </pre>
     *
     * <code>optional string resize = 14;</code>
     * @return The bytes for resize.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResizeBytes() {
      java.lang.Object ref = resize_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resize_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESOURCECLAIMSTATUSES_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.PodResourceClaimStatus> resourceClaimStatuses_;
    /**
     * <pre>
     * Status of resource claims.
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PodResourceClaimStatus> getResourceClaimStatusesList() {
      return resourceClaimStatuses_;
    }
    /**
     * <pre>
     * Status of resource claims.
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodResourceClaimStatusOrBuilder> 
        getResourceClaimStatusesOrBuilderList() {
      return resourceClaimStatuses_;
    }
    /**
     * <pre>
     * Status of resource claims.
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
     */
    @java.lang.Override
    public int getResourceClaimStatusesCount() {
      return resourceClaimStatuses_.size();
    }
    /**
     * <pre>
     * Status of resource claims.
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodResourceClaimStatus getResourceClaimStatuses(int index) {
      return resourceClaimStatuses_.get(index);
    }
    /**
     * <pre>
     * Status of resource claims.
     * +patchMergeKey=name
     * +patchStrategy=merge,retainKeys
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodResourceClaimStatusOrBuilder getResourceClaimStatusesOrBuilder(
        int index) {
      return resourceClaimStatuses_.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, phase_);
      }
      for (int i = 0; i < conditions_.size(); i++) {
        output.writeMessage(2, conditions_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, message_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, reason_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, hostIP_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, podIP_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(7, getStartTime());
      }
      for (int i = 0; i < containerStatuses_.size(); i++) {
        output.writeMessage(8, containerStatuses_.get(i));
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, qosClass_);
      }
      for (int i = 0; i < initContainerStatuses_.size(); i++) {
        output.writeMessage(10, initContainerStatuses_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 11, nominatedNodeName_);
      }
      for (int i = 0; i < podIPs_.size(); i++) {
        output.writeMessage(12, podIPs_.get(i));
      }
      for (int i = 0; i < ephemeralContainerStatuses_.size(); i++) {
        output.writeMessage(13, ephemeralContainerStatuses_.get(i));
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 14, resize_);
      }
      for (int i = 0; i < resourceClaimStatuses_.size(); i++) {
        output.writeMessage(15, resourceClaimStatuses_.get(i));
      }
      for (int i = 0; i < hostIPs_.size(); i++) {
        output.writeMessage(16, hostIPs_.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, phase_);
      }
      for (int i = 0; i < conditions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, conditions_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, message_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, reason_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, hostIP_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, podIP_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getStartTime());
      }
      for (int i = 0; i < containerStatuses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, containerStatuses_.get(i));
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, qosClass_);
      }
      for (int i = 0; i < initContainerStatuses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, initContainerStatuses_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(11, nominatedNodeName_);
      }
      for (int i = 0; i < podIPs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, podIPs_.get(i));
      }
      for (int i = 0; i < ephemeralContainerStatuses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, ephemeralContainerStatuses_.get(i));
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(14, resize_);
      }
      for (int i = 0; i < resourceClaimStatuses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, resourceClaimStatuses_.get(i));
      }
      for (int i = 0; i < hostIPs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, hostIPs_.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.V1.PodStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodStatus other = (io.kubernetes.client.proto.V1.PodStatus) obj;

      if (hasPhase() != other.hasPhase()) return false;
      if (hasPhase()) {
        if (!getPhase()
            .equals(other.getPhase())) return false;
      }
      if (!getConditionsList()
          .equals(other.getConditionsList())) return false;
      if (hasMessage() != other.hasMessage()) return false;
      if (hasMessage()) {
        if (!getMessage()
            .equals(other.getMessage())) return false;
      }
      if (hasReason() != other.hasReason()) return false;
      if (hasReason()) {
        if (!getReason()
            .equals(other.getReason())) return false;
      }
      if (hasNominatedNodeName() != other.hasNominatedNodeName()) return false;
      if (hasNominatedNodeName()) {
        if (!getNominatedNodeName()
            .equals(other.getNominatedNodeName())) return false;
      }
      if (hasHostIP() != other.hasHostIP()) return false;
      if (hasHostIP()) {
        if (!getHostIP()
            .equals(other.getHostIP())) return false;
      }
      if (!getHostIPsList()
          .equals(other.getHostIPsList())) return false;
      if (hasPodIP() != other.hasPodIP()) return false;
      if (hasPodIP()) {
        if (!getPodIP()
            .equals(other.getPodIP())) return false;
      }
      if (!getPodIPsList()
          .equals(other.getPodIPsList())) return false;
      if (hasStartTime() != other.hasStartTime()) return false;
      if (hasStartTime()) {
        if (!getStartTime()
            .equals(other.getStartTime())) return false;
      }
      if (!getInitContainerStatusesList()
          .equals(other.getInitContainerStatusesList())) return false;
      if (!getContainerStatusesList()
          .equals(other.getContainerStatusesList())) return false;
      if (hasQosClass() != other.hasQosClass()) return false;
      if (hasQosClass()) {
        if (!getQosClass()
            .equals(other.getQosClass())) return false;
      }
      if (!getEphemeralContainerStatusesList()
          .equals(other.getEphemeralContainerStatusesList())) return false;
      if (hasResize() != other.hasResize()) return false;
      if (hasResize()) {
        if (!getResize()
            .equals(other.getResize())) return false;
      }
      if (!getResourceClaimStatusesList()
          .equals(other.getResourceClaimStatusesList())) 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 (hasPhase()) {
        hash = (37 * hash) + PHASE_FIELD_NUMBER;
        hash = (53 * hash) + getPhase().hashCode();
      }
      if (getConditionsCount() > 0) {
        hash = (37 * hash) + CONDITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConditionsList().hashCode();
      }
      if (hasMessage()) {
        hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getMessage().hashCode();
      }
      if (hasReason()) {
        hash = (37 * hash) + REASON_FIELD_NUMBER;
        hash = (53 * hash) + getReason().hashCode();
      }
      if (hasNominatedNodeName()) {
        hash = (37 * hash) + NOMINATEDNODENAME_FIELD_NUMBER;
        hash = (53 * hash) + getNominatedNodeName().hashCode();
      }
      if (hasHostIP()) {
        hash = (37 * hash) + HOSTIP_FIELD_NUMBER;
        hash = (53 * hash) + getHostIP().hashCode();
      }
      if (getHostIPsCount() > 0) {
        hash = (37 * hash) + HOSTIPS_FIELD_NUMBER;
        hash = (53 * hash) + getHostIPsList().hashCode();
      }
      if (hasPodIP()) {
        hash = (37 * hash) + PODIP_FIELD_NUMBER;
        hash = (53 * hash) + getPodIP().hashCode();
      }
      if (getPodIPsCount() > 0) {
        hash = (37 * hash) + PODIPS_FIELD_NUMBER;
        hash = (53 * hash) + getPodIPsList().hashCode();
      }
      if (hasStartTime()) {
        hash = (37 * hash) + STARTTIME_FIELD_NUMBER;
        hash = (53 * hash) + getStartTime().hashCode();
      }
      if (getInitContainerStatusesCount() > 0) {
        hash = (37 * hash) + INITCONTAINERSTATUSES_FIELD_NUMBER;
        hash = (53 * hash) + getInitContainerStatusesList().hashCode();
      }
      if (getContainerStatusesCount() > 0) {
        hash = (37 * hash) + CONTAINERSTATUSES_FIELD_NUMBER;
        hash = (53 * hash) + getContainerStatusesList().hashCode();
      }
      if (hasQosClass()) {
        hash = (37 * hash) + QOSCLASS_FIELD_NUMBER;
        hash = (53 * hash) + getQosClass().hashCode();
      }
      if (getEphemeralContainerStatusesCount() > 0) {
        hash = (37 * hash) + EPHEMERALCONTAINERSTATUSES_FIELD_NUMBER;
        hash = (53 * hash) + getEphemeralContainerStatusesList().hashCode();
      }
      if (hasResize()) {
        hash = (37 * hash) + RESIZE_FIELD_NUMBER;
        hash = (53 * hash) + getResize().hashCode();
      }
      if (getResourceClaimStatusesCount() > 0) {
        hash = (37 * hash) + RESOURCECLAIMSTATUSES_FIELD_NUMBER;
        hash = (53 * hash) + getResourceClaimStatusesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodStatus 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.V1.PodStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodStatus 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.V1.PodStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodStatus 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.V1.PodStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodStatus 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.V1.PodStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodStatus 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.V1.PodStatus 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>
     * PodStatus represents information about the status of a pod. Status may trail the actual
     * state of a system, especially if the node that hosts the pod cannot contact the control
     * plane.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodStatus)
        io.kubernetes.client.proto.V1.PodStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodStatus.class, io.kubernetes.client.proto.V1.PodStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodStatus.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();
          getHostIPsFieldBuilder();
          getPodIPsFieldBuilder();
          getStartTimeFieldBuilder();
          getInitContainerStatusesFieldBuilder();
          getContainerStatusesFieldBuilder();
          getEphemeralContainerStatusesFieldBuilder();
          getResourceClaimStatusesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        phase_ = "";
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
        } else {
          conditions_ = null;
          conditionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        message_ = "";
        reason_ = "";
        nominatedNodeName_ = "";
        hostIP_ = "";
        if (hostIPsBuilder_ == null) {
          hostIPs_ = java.util.Collections.emptyList();
        } else {
          hostIPs_ = null;
          hostIPsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        podIP_ = "";
        if (podIPsBuilder_ == null) {
          podIPs_ = java.util.Collections.emptyList();
        } else {
          podIPs_ = null;
          podIPsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        startTime_ = null;
        if (startTimeBuilder_ != null) {
          startTimeBuilder_.dispose();
          startTimeBuilder_ = null;
        }
        if (initContainerStatusesBuilder_ == null) {
          initContainerStatuses_ = java.util.Collections.emptyList();
        } else {
          initContainerStatuses_ = null;
          initContainerStatusesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        if (containerStatusesBuilder_ == null) {
          containerStatuses_ = java.util.Collections.emptyList();
        } else {
          containerStatuses_ = null;
          containerStatusesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        qosClass_ = "";
        if (ephemeralContainerStatusesBuilder_ == null) {
          ephemeralContainerStatuses_ = java.util.Collections.emptyList();
        } else {
          ephemeralContainerStatuses_ = null;
          ephemeralContainerStatusesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00002000);
        resize_ = "";
        if (resourceClaimStatusesBuilder_ == null) {
          resourceClaimStatuses_ = java.util.Collections.emptyList();
        } else {
          resourceClaimStatuses_ = null;
          resourceClaimStatusesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00008000);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodStatus build() {
        io.kubernetes.client.proto.V1.PodStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodStatus buildPartial() {
        io.kubernetes.client.proto.V1.PodStatus result = new io.kubernetes.client.proto.V1.PodStatus(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PodStatus result) {
        if (conditionsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            conditions_ = java.util.Collections.unmodifiableList(conditions_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.conditions_ = conditions_;
        } else {
          result.conditions_ = conditionsBuilder_.build();
        }
        if (hostIPsBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            hostIPs_ = java.util.Collections.unmodifiableList(hostIPs_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.hostIPs_ = hostIPs_;
        } else {
          result.hostIPs_ = hostIPsBuilder_.build();
        }
        if (podIPsBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0)) {
            podIPs_ = java.util.Collections.unmodifiableList(podIPs_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.podIPs_ = podIPs_;
        } else {
          result.podIPs_ = podIPsBuilder_.build();
        }
        if (initContainerStatusesBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0)) {
            initContainerStatuses_ = java.util.Collections.unmodifiableList(initContainerStatuses_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.initContainerStatuses_ = initContainerStatuses_;
        } else {
          result.initContainerStatuses_ = initContainerStatusesBuilder_.build();
        }
        if (containerStatusesBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0)) {
            containerStatuses_ = java.util.Collections.unmodifiableList(containerStatuses_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.containerStatuses_ = containerStatuses_;
        } else {
          result.containerStatuses_ = containerStatusesBuilder_.build();
        }
        if (ephemeralContainerStatusesBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0)) {
            ephemeralContainerStatuses_ = java.util.Collections.unmodifiableList(ephemeralContainerStatuses_);
            bitField0_ = (bitField0_ & ~0x00002000);
          }
          result.ephemeralContainerStatuses_ = ephemeralContainerStatuses_;
        } else {
          result.ephemeralContainerStatuses_ = ephemeralContainerStatusesBuilder_.build();
        }
        if (resourceClaimStatusesBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0)) {
            resourceClaimStatuses_ = java.util.Collections.unmodifiableList(resourceClaimStatuses_);
            bitField0_ = (bitField0_ & ~0x00008000);
          }
          result.resourceClaimStatuses_ = resourceClaimStatuses_;
        } else {
          result.resourceClaimStatuses_ = resourceClaimStatusesBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.phase_ = phase_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.message_ = message_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.nominatedNodeName_ = nominatedNodeName_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.hostIP_ = hostIP_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.podIP_ = podIP_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.startTime_ = startTimeBuilder_ == null
              ? startTime_
              : startTimeBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.qosClass_ = qosClass_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.resize_ = resize_;
          to_bitField0_ |= 0x00000100;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodStatus other) {
        if (other == io.kubernetes.client.proto.V1.PodStatus.getDefaultInstance()) return this;
        if (other.hasPhase()) {
          phase_ = other.phase_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (conditionsBuilder_ == null) {
          if (!other.conditions_.isEmpty()) {
            if (conditions_.isEmpty()) {
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureConditionsIsMutable();
              conditions_.addAll(other.conditions_);
            }
            onChanged();
          }
        } else {
          if (!other.conditions_.isEmpty()) {
            if (conditionsBuilder_.isEmpty()) {
              conditionsBuilder_.dispose();
              conditionsBuilder_ = null;
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000002);
              conditionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getConditionsFieldBuilder() : null;
            } else {
              conditionsBuilder_.addAllMessages(other.conditions_);
            }
          }
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasNominatedNodeName()) {
          nominatedNodeName_ = other.nominatedNodeName_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasHostIP()) {
          hostIP_ = other.hostIP_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (hostIPsBuilder_ == null) {
          if (!other.hostIPs_.isEmpty()) {
            if (hostIPs_.isEmpty()) {
              hostIPs_ = other.hostIPs_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureHostIPsIsMutable();
              hostIPs_.addAll(other.hostIPs_);
            }
            onChanged();
          }
        } else {
          if (!other.hostIPs_.isEmpty()) {
            if (hostIPsBuilder_.isEmpty()) {
              hostIPsBuilder_.dispose();
              hostIPsBuilder_ = null;
              hostIPs_ = other.hostIPs_;
              bitField0_ = (bitField0_ & ~0x00000040);
              hostIPsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getHostIPsFieldBuilder() : null;
            } else {
              hostIPsBuilder_.addAllMessages(other.hostIPs_);
            }
          }
        }
        if (other.hasPodIP()) {
          podIP_ = other.podIP_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (podIPsBuilder_ == null) {
          if (!other.podIPs_.isEmpty()) {
            if (podIPs_.isEmpty()) {
              podIPs_ = other.podIPs_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensurePodIPsIsMutable();
              podIPs_.addAll(other.podIPs_);
            }
            onChanged();
          }
        } else {
          if (!other.podIPs_.isEmpty()) {
            if (podIPsBuilder_.isEmpty()) {
              podIPsBuilder_.dispose();
              podIPsBuilder_ = null;
              podIPs_ = other.podIPs_;
              bitField0_ = (bitField0_ & ~0x00000100);
              podIPsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPodIPsFieldBuilder() : null;
            } else {
              podIPsBuilder_.addAllMessages(other.podIPs_);
            }
          }
        }
        if (other.hasStartTime()) {
          mergeStartTime(other.getStartTime());
        }
        if (initContainerStatusesBuilder_ == null) {
          if (!other.initContainerStatuses_.isEmpty()) {
            if (initContainerStatuses_.isEmpty()) {
              initContainerStatuses_ = other.initContainerStatuses_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureInitContainerStatusesIsMutable();
              initContainerStatuses_.addAll(other.initContainerStatuses_);
            }
            onChanged();
          }
        } else {
          if (!other.initContainerStatuses_.isEmpty()) {
            if (initContainerStatusesBuilder_.isEmpty()) {
              initContainerStatusesBuilder_.dispose();
              initContainerStatusesBuilder_ = null;
              initContainerStatuses_ = other.initContainerStatuses_;
              bitField0_ = (bitField0_ & ~0x00000400);
              initContainerStatusesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getInitContainerStatusesFieldBuilder() : null;
            } else {
              initContainerStatusesBuilder_.addAllMessages(other.initContainerStatuses_);
            }
          }
        }
        if (containerStatusesBuilder_ == null) {
          if (!other.containerStatuses_.isEmpty()) {
            if (containerStatuses_.isEmpty()) {
              containerStatuses_ = other.containerStatuses_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureContainerStatusesIsMutable();
              containerStatuses_.addAll(other.containerStatuses_);
            }
            onChanged();
          }
        } else {
          if (!other.containerStatuses_.isEmpty()) {
            if (containerStatusesBuilder_.isEmpty()) {
              containerStatusesBuilder_.dispose();
              containerStatusesBuilder_ = null;
              containerStatuses_ = other.containerStatuses_;
              bitField0_ = (bitField0_ & ~0x00000800);
              containerStatusesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getContainerStatusesFieldBuilder() : null;
            } else {
              containerStatusesBuilder_.addAllMessages(other.containerStatuses_);
            }
          }
        }
        if (other.hasQosClass()) {
          qosClass_ = other.qosClass_;
          bitField0_ |= 0x00001000;
          onChanged();
        }
        if (ephemeralContainerStatusesBuilder_ == null) {
          if (!other.ephemeralContainerStatuses_.isEmpty()) {
            if (ephemeralContainerStatuses_.isEmpty()) {
              ephemeralContainerStatuses_ = other.ephemeralContainerStatuses_;
              bitField0_ = (bitField0_ & ~0x00002000);
            } else {
              ensureEphemeralContainerStatusesIsMutable();
              ephemeralContainerStatuses_.addAll(other.ephemeralContainerStatuses_);
            }
            onChanged();
          }
        } else {
          if (!other.ephemeralContainerStatuses_.isEmpty()) {
            if (ephemeralContainerStatusesBuilder_.isEmpty()) {
              ephemeralContainerStatusesBuilder_.dispose();
              ephemeralContainerStatusesBuilder_ = null;
              ephemeralContainerStatuses_ = other.ephemeralContainerStatuses_;
              bitField0_ = (bitField0_ & ~0x00002000);
              ephemeralContainerStatusesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEphemeralContainerStatusesFieldBuilder() : null;
            } else {
              ephemeralContainerStatusesBuilder_.addAllMessages(other.ephemeralContainerStatuses_);
            }
          }
        }
        if (other.hasResize()) {
          resize_ = other.resize_;
          bitField0_ |= 0x00004000;
          onChanged();
        }
        if (resourceClaimStatusesBuilder_ == null) {
          if (!other.resourceClaimStatuses_.isEmpty()) {
            if (resourceClaimStatuses_.isEmpty()) {
              resourceClaimStatuses_ = other.resourceClaimStatuses_;
              bitField0_ = (bitField0_ & ~0x00008000);
            } else {
              ensureResourceClaimStatusesIsMutable();
              resourceClaimStatuses_.addAll(other.resourceClaimStatuses_);
            }
            onChanged();
          }
        } else {
          if (!other.resourceClaimStatuses_.isEmpty()) {
            if (resourceClaimStatusesBuilder_.isEmpty()) {
              resourceClaimStatusesBuilder_.dispose();
              resourceClaimStatusesBuilder_ = null;
              resourceClaimStatuses_ = other.resourceClaimStatuses_;
              bitField0_ = (bitField0_ & ~0x00008000);
              resourceClaimStatusesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getResourceClaimStatusesFieldBuilder() : null;
            } else {
              resourceClaimStatusesBuilder_.addAllMessages(other.resourceClaimStatuses_);
            }
          }
        }
        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: {
                phase_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.PodCondition m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PodCondition.parser(),
                        extensionRegistry);
                if (conditionsBuilder_ == null) {
                  ensureConditionsIsMutable();
                  conditions_.add(m);
                } else {
                  conditionsBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                message_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                reason_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                hostIP_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 42
              case 50: {
                podIP_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getStartTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 58
              case 66: {
                io.kubernetes.client.proto.V1.ContainerStatus m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ContainerStatus.parser(),
                        extensionRegistry);
                if (containerStatusesBuilder_ == null) {
                  ensureContainerStatusesIsMutable();
                  containerStatuses_.add(m);
                } else {
                  containerStatusesBuilder_.addMessage(m);
                }
                break;
              } // case 66
              case 74: {
                qosClass_ = input.readBytes();
                bitField0_ |= 0x00001000;
                break;
              } // case 74
              case 82: {
                io.kubernetes.client.proto.V1.ContainerStatus m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ContainerStatus.parser(),
                        extensionRegistry);
                if (initContainerStatusesBuilder_ == null) {
                  ensureInitContainerStatusesIsMutable();
                  initContainerStatuses_.add(m);
                } else {
                  initContainerStatusesBuilder_.addMessage(m);
                }
                break;
              } // case 82
              case 90: {
                nominatedNodeName_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 90
              case 98: {
                io.kubernetes.client.proto.V1.PodIP m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PodIP.parser(),
                        extensionRegistry);
                if (podIPsBuilder_ == null) {
                  ensurePodIPsIsMutable();
                  podIPs_.add(m);
                } else {
                  podIPsBuilder_.addMessage(m);
                }
                break;
              } // case 98
              case 106: {
                io.kubernetes.client.proto.V1.ContainerStatus m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ContainerStatus.parser(),
                        extensionRegistry);
                if (ephemeralContainerStatusesBuilder_ == null) {
                  ensureEphemeralContainerStatusesIsMutable();
                  ephemeralContainerStatuses_.add(m);
                } else {
                  ephemeralContainerStatusesBuilder_.addMessage(m);
                }
                break;
              } // case 106
              case 114: {
                resize_ = input.readBytes();
                bitField0_ |= 0x00004000;
                break;
              } // case 114
              case 122: {
                io.kubernetes.client.proto.V1.PodResourceClaimStatus m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PodResourceClaimStatus.parser(),
                        extensionRegistry);
                if (resourceClaimStatusesBuilder_ == null) {
                  ensureResourceClaimStatusesIsMutable();
                  resourceClaimStatuses_.add(m);
                } else {
                  resourceClaimStatusesBuilder_.addMessage(m);
                }
                break;
              } // case 122
              case 130: {
                io.kubernetes.client.proto.V1.HostIP m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.HostIP.parser(),
                        extensionRegistry);
                if (hostIPsBuilder_ == null) {
                  ensureHostIPsIsMutable();
                  hostIPs_.add(m);
                } else {
                  hostIPsBuilder_.addMessage(m);
                }
                break;
              } // case 130
              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 phase_ = "";
      /**
       * <pre>
       * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
       * The conditions array, the reason and message fields, and the individual container status
       * arrays contain more detail about the pod's status.
       * There are five possible phase values:
       *
       * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
       * container images has not been created. This includes time before being scheduled as
       * well as time spent downloading images over the network, which could take a while.
       * Running: The pod has been bound to a node, and all of the containers have been created.
       * At least one container is still running, or is in the process of starting or restarting.
       * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
       * Failed: All containers in the pod have terminated, and at least one container has
       * terminated in failure. The container either exited with non-zero status or was terminated
       * by the system.
       * Unknown: For some reason the state of the pod could not be obtained, typically due to an
       * error in communicating with the host of the pod.
       *
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return Whether the phase field is set.
       */
      public boolean hasPhase() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
       * The conditions array, the reason and message fields, and the individual container status
       * arrays contain more detail about the pod's status.
       * There are five possible phase values:
       *
       * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
       * container images has not been created. This includes time before being scheduled as
       * well as time spent downloading images over the network, which could take a while.
       * Running: The pod has been bound to a node, and all of the containers have been created.
       * At least one container is still running, or is in the process of starting or restarting.
       * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
       * Failed: All containers in the pod have terminated, and at least one container has
       * terminated in failure. The container either exited with non-zero status or was terminated
       * by the system.
       * Unknown: For some reason the state of the pod could not be obtained, typically due to an
       * error in communicating with the host of the pod.
       *
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return The phase.
       */
      public java.lang.String getPhase() {
        java.lang.Object ref = phase_;
        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()) {
            phase_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
       * The conditions array, the reason and message fields, and the individual container status
       * arrays contain more detail about the pod's status.
       * There are five possible phase values:
       *
       * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
       * container images has not been created. This includes time before being scheduled as
       * well as time spent downloading images over the network, which could take a while.
       * Running: The pod has been bound to a node, and all of the containers have been created.
       * At least one container is still running, or is in the process of starting or restarting.
       * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
       * Failed: All containers in the pod have terminated, and at least one container has
       * terminated in failure. The container either exited with non-zero status or was terminated
       * by the system.
       * Unknown: For some reason the state of the pod could not be obtained, typically due to an
       * error in communicating with the host of the pod.
       *
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return The bytes for phase.
       */
      public com.google.protobuf.ByteString
          getPhaseBytes() {
        java.lang.Object ref = phase_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          phase_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
       * The conditions array, the reason and message fields, and the individual container status
       * arrays contain more detail about the pod's status.
       * There are five possible phase values:
       *
       * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
       * container images has not been created. This includes time before being scheduled as
       * well as time spent downloading images over the network, which could take a while.
       * Running: The pod has been bound to a node, and all of the containers have been created.
       * At least one container is still running, or is in the process of starting or restarting.
       * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
       * Failed: All containers in the pod have terminated, and at least one container has
       * terminated in failure. The container either exited with non-zero status or was terminated
       * by the system.
       * Unknown: For some reason the state of the pod could not be obtained, typically due to an
       * error in communicating with the host of the pod.
       *
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @param value The phase to set.
       * @return This builder for chaining.
       */
      public Builder setPhase(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        phase_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
       * The conditions array, the reason and message fields, and the individual container status
       * arrays contain more detail about the pod's status.
       * There are five possible phase values:
       *
       * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
       * container images has not been created. This includes time before being scheduled as
       * well as time spent downloading images over the network, which could take a while.
       * Running: The pod has been bound to a node, and all of the containers have been created.
       * At least one container is still running, or is in the process of starting or restarting.
       * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
       * Failed: All containers in the pod have terminated, and at least one container has
       * terminated in failure. The container either exited with non-zero status or was terminated
       * by the system.
       * Unknown: For some reason the state of the pod could not be obtained, typically due to an
       * error in communicating with the host of the pod.
       *
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPhase() {
        phase_ = getDefaultInstance().getPhase();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
       * The conditions array, the reason and message fields, and the individual container status
       * arrays contain more detail about the pod's status.
       * There are five possible phase values:
       *
       * Pending: The pod has been accepted by the Kubernetes system, but one or more of the
       * container images has not been created. This includes time before being scheduled as
       * well as time spent downloading images over the network, which could take a while.
       * Running: The pod has been bound to a node, and all of the containers have been created.
       * At least one container is still running, or is in the process of starting or restarting.
       * Succeeded: All containers in the pod have terminated in success, and will not be restarted.
       * Failed: All containers in the pod have terminated, and at least one container has
       * terminated in failure. The container either exited with non-zero status or was terminated
       * by the system.
       * Unknown: For some reason the state of the pod could not be obtained, typically due to an
       * error in communicating with the host of the pod.
       *
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
       * +optional
       * </pre>
       *
       * <code>optional string phase = 1;</code>
       * @param value The bytes for phase to set.
       * @return This builder for chaining.
       */
      public Builder setPhaseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        phase_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.PodCondition> conditions_ =
        java.util.Collections.emptyList();
      private void ensureConditionsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          conditions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PodCondition>(conditions_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodCondition, io.kubernetes.client.proto.V1.PodCondition.Builder, io.kubernetes.client.proto.V1.PodConditionOrBuilder> conditionsBuilder_;

      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodCondition> getConditionsList() {
        if (conditionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(conditions_);
        } else {
          return conditionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public int getConditionsCount() {
        if (conditionsBuilder_ == null) {
          return conditions_.size();
        } else {
          return conditionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodCondition getConditions(int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);
        } else {
          return conditionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.PodCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.set(index, value);
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.PodCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.set(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public Builder addConditions(io.kubernetes.client.proto.V1.PodCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.PodCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(index, value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public Builder addConditions(
          io.kubernetes.client.proto.V1.PodCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.PodCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public Builder addAllConditions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PodCondition> values) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, conditions_);
          onChanged();
        } else {
          conditionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public Builder clearConditions() {
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          conditionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public Builder removeConditions(int index) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.remove(index);
          onChanged();
        } else {
          conditionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodCondition.Builder getConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodConditionOrBuilder getConditionsOrBuilder(
          int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);  } else {
          return conditionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodConditionOrBuilder> 
           getConditionsOrBuilderList() {
        if (conditionsBuilder_ != null) {
          return conditionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(conditions_);
        }
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodCondition.Builder addConditionsBuilder() {
        return getConditionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PodCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodCondition.Builder addConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PodCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * Current service state of pod.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodCondition conditions = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodCondition.Builder> 
           getConditionsBuilderList() {
        return getConditionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodCondition, io.kubernetes.client.proto.V1.PodCondition.Builder, io.kubernetes.client.proto.V1.PodConditionOrBuilder> 
          getConditionsFieldBuilder() {
        if (conditionsBuilder_ == null) {
          conditionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PodCondition, io.kubernetes.client.proto.V1.PodCondition.Builder, io.kubernetes.client.proto.V1.PodConditionOrBuilder>(
                  conditions_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          conditions_ = null;
        }
        return conditionsBuilder_;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * A human readable message indicating details about why the pod is in this condition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * A human readable message indicating details about why the pod is in this condition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</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>
       * A human readable message indicating details about why the pod is in this condition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</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>
       * A human readable message indicating details about why the pod is in this condition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A human readable message indicating details about why the pod is in this condition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A human readable message indicating details about why the pod is in this condition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object reason_ = "";
      /**
       * <pre>
       * A brief CamelCase message indicating details about why the pod is in this state.
       * e.g. 'Evicted'
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * A brief CamelCase message indicating details about why the pod is in this state.
       * e.g. 'Evicted'
       * +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>
       * A brief CamelCase message indicating details about why the pod is in this state.
       * e.g. 'Evicted'
       * +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>
       * A brief CamelCase message indicating details about why the pod is in this state.
       * e.g. 'Evicted'
       * +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>
       * A brief CamelCase message indicating details about why the pod is in this state.
       * e.g. 'Evicted'
       * +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>
       * A brief CamelCase message indicating details about why the pod is in this state.
       * e.g. 'Evicted'
       * +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 nominatedNodeName_ = "";
      /**
       * <pre>
       * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
       * scheduled right away as preemption victims receive their graceful termination periods.
       * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
       * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
       * give the resources on this node to a higher priority pod that is created after preemption.
       * As a result, this field may be different than PodSpec.nodeName when the pod is
       * scheduled.
       * +optional
       * </pre>
       *
       * <code>optional string nominatedNodeName = 11;</code>
       * @return Whether the nominatedNodeName field is set.
       */
      public boolean hasNominatedNodeName() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
       * scheduled right away as preemption victims receive their graceful termination periods.
       * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
       * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
       * give the resources on this node to a higher priority pod that is created after preemption.
       * As a result, this field may be different than PodSpec.nodeName when the pod is
       * scheduled.
       * +optional
       * </pre>
       *
       * <code>optional string nominatedNodeName = 11;</code>
       * @return The nominatedNodeName.
       */
      public java.lang.String getNominatedNodeName() {
        java.lang.Object ref = nominatedNodeName_;
        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()) {
            nominatedNodeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
       * scheduled right away as preemption victims receive their graceful termination periods.
       * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
       * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
       * give the resources on this node to a higher priority pod that is created after preemption.
       * As a result, this field may be different than PodSpec.nodeName when the pod is
       * scheduled.
       * +optional
       * </pre>
       *
       * <code>optional string nominatedNodeName = 11;</code>
       * @return The bytes for nominatedNodeName.
       */
      public com.google.protobuf.ByteString
          getNominatedNodeNameBytes() {
        java.lang.Object ref = nominatedNodeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nominatedNodeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
       * scheduled right away as preemption victims receive their graceful termination periods.
       * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
       * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
       * give the resources on this node to a higher priority pod that is created after preemption.
       * As a result, this field may be different than PodSpec.nodeName when the pod is
       * scheduled.
       * +optional
       * </pre>
       *
       * <code>optional string nominatedNodeName = 11;</code>
       * @param value The nominatedNodeName to set.
       * @return This builder for chaining.
       */
      public Builder setNominatedNodeName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        nominatedNodeName_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
       * scheduled right away as preemption victims receive their graceful termination periods.
       * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
       * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
       * give the resources on this node to a higher priority pod that is created after preemption.
       * As a result, this field may be different than PodSpec.nodeName when the pod is
       * scheduled.
       * +optional
       * </pre>
       *
       * <code>optional string nominatedNodeName = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearNominatedNodeName() {
        nominatedNodeName_ = getDefaultInstance().getNominatedNodeName();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
       * scheduled right away as preemption victims receive their graceful termination periods.
       * This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
       * to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
       * give the resources on this node to a higher priority pod that is created after preemption.
       * As a result, this field may be different than PodSpec.nodeName when the pod is
       * scheduled.
       * +optional
       * </pre>
       *
       * <code>optional string nominatedNodeName = 11;</code>
       * @param value The bytes for nominatedNodeName to set.
       * @return This builder for chaining.
       */
      public Builder setNominatedNodeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        nominatedNodeName_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object hostIP_ = "";
      /**
       * <pre>
       * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
       * not be updated even if there is a node is assigned to pod
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @return Whether the hostIP field is set.
       */
      public boolean hasHostIP() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
       * not be updated even if there is a node is assigned to pod
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @return The hostIP.
       */
      public java.lang.String getHostIP() {
        java.lang.Object ref = hostIP_;
        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()) {
            hostIP_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
       * not be updated even if there is a node is assigned to pod
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @return The bytes for hostIP.
       */
      public com.google.protobuf.ByteString
          getHostIPBytes() {
        java.lang.Object ref = hostIP_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hostIP_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
       * not be updated even if there is a node is assigned to pod
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @param value The hostIP to set.
       * @return This builder for chaining.
       */
      public Builder setHostIP(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        hostIP_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
       * not be updated even if there is a node is assigned to pod
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostIP() {
        hostIP_ = getDefaultInstance().getHostIP();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will
       * not be updated even if there is a node is assigned to pod
       * +optional
       * </pre>
       *
       * <code>optional string hostIP = 5;</code>
       * @param value The bytes for hostIP to set.
       * @return This builder for chaining.
       */
      public Builder setHostIPBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        hostIP_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.HostIP> hostIPs_ =
        java.util.Collections.emptyList();
      private void ensureHostIPsIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          hostIPs_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.HostIP>(hostIPs_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.HostIP, io.kubernetes.client.proto.V1.HostIP.Builder, io.kubernetes.client.proto.V1.HostIPOrBuilder> hostIPsBuilder_;

      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.HostIP> getHostIPsList() {
        if (hostIPsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(hostIPs_);
        } else {
          return hostIPsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public int getHostIPsCount() {
        if (hostIPsBuilder_ == null) {
          return hostIPs_.size();
        } else {
          return hostIPsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public io.kubernetes.client.proto.V1.HostIP getHostIPs(int index) {
        if (hostIPsBuilder_ == null) {
          return hostIPs_.get(index);
        } else {
          return hostIPsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public Builder setHostIPs(
          int index, io.kubernetes.client.proto.V1.HostIP value) {
        if (hostIPsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHostIPsIsMutable();
          hostIPs_.set(index, value);
          onChanged();
        } else {
          hostIPsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public Builder setHostIPs(
          int index, io.kubernetes.client.proto.V1.HostIP.Builder builderForValue) {
        if (hostIPsBuilder_ == null) {
          ensureHostIPsIsMutable();
          hostIPs_.set(index, builderForValue.build());
          onChanged();
        } else {
          hostIPsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public Builder addHostIPs(io.kubernetes.client.proto.V1.HostIP value) {
        if (hostIPsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHostIPsIsMutable();
          hostIPs_.add(value);
          onChanged();
        } else {
          hostIPsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public Builder addHostIPs(
          int index, io.kubernetes.client.proto.V1.HostIP value) {
        if (hostIPsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHostIPsIsMutable();
          hostIPs_.add(index, value);
          onChanged();
        } else {
          hostIPsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public Builder addHostIPs(
          io.kubernetes.client.proto.V1.HostIP.Builder builderForValue) {
        if (hostIPsBuilder_ == null) {
          ensureHostIPsIsMutable();
          hostIPs_.add(builderForValue.build());
          onChanged();
        } else {
          hostIPsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public Builder addHostIPs(
          int index, io.kubernetes.client.proto.V1.HostIP.Builder builderForValue) {
        if (hostIPsBuilder_ == null) {
          ensureHostIPsIsMutable();
          hostIPs_.add(index, builderForValue.build());
          onChanged();
        } else {
          hostIPsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public Builder addAllHostIPs(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.HostIP> values) {
        if (hostIPsBuilder_ == null) {
          ensureHostIPsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, hostIPs_);
          onChanged();
        } else {
          hostIPsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public Builder clearHostIPs() {
        if (hostIPsBuilder_ == null) {
          hostIPs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          hostIPsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public Builder removeHostIPs(int index) {
        if (hostIPsBuilder_ == null) {
          ensureHostIPsIsMutable();
          hostIPs_.remove(index);
          onChanged();
        } else {
          hostIPsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public io.kubernetes.client.proto.V1.HostIP.Builder getHostIPsBuilder(
          int index) {
        return getHostIPsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public io.kubernetes.client.proto.V1.HostIPOrBuilder getHostIPsOrBuilder(
          int index) {
        if (hostIPsBuilder_ == null) {
          return hostIPs_.get(index);  } else {
          return hostIPsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.HostIPOrBuilder> 
           getHostIPsOrBuilderList() {
        if (hostIPsBuilder_ != null) {
          return hostIPsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(hostIPs_);
        }
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public io.kubernetes.client.proto.V1.HostIP.Builder addHostIPsBuilder() {
        return getHostIPsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.HostIP.getDefaultInstance());
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public io.kubernetes.client.proto.V1.HostIP.Builder addHostIPsBuilder(
          int index) {
        return getHostIPsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.HostIP.getDefaultInstance());
      }
      /**
       * <pre>
       * hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must
       * match the hostIP field. This list is empty if the pod has not started yet.
       * A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will
       * not be updated even if there is a node is assigned to this pod.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.HostIP hostIPs = 16;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.HostIP.Builder> 
           getHostIPsBuilderList() {
        return getHostIPsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.HostIP, io.kubernetes.client.proto.V1.HostIP.Builder, io.kubernetes.client.proto.V1.HostIPOrBuilder> 
          getHostIPsFieldBuilder() {
        if (hostIPsBuilder_ == null) {
          hostIPsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.HostIP, io.kubernetes.client.proto.V1.HostIP.Builder, io.kubernetes.client.proto.V1.HostIPOrBuilder>(
                  hostIPs_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          hostIPs_ = null;
        }
        return hostIPsBuilder_;
      }

      private java.lang.Object podIP_ = "";
      /**
       * <pre>
       * podIP address allocated to the pod. Routable at least within the cluster.
       * Empty if not yet allocated.
       * +optional
       * </pre>
       *
       * <code>optional string podIP = 6;</code>
       * @return Whether the podIP field is set.
       */
      public boolean hasPodIP() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * podIP address allocated to the pod. Routable at least within the cluster.
       * Empty if not yet allocated.
       * +optional
       * </pre>
       *
       * <code>optional string podIP = 6;</code>
       * @return The podIP.
       */
      public java.lang.String getPodIP() {
        java.lang.Object ref = podIP_;
        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()) {
            podIP_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * podIP address allocated to the pod. Routable at least within the cluster.
       * Empty if not yet allocated.
       * +optional
       * </pre>
       *
       * <code>optional string podIP = 6;</code>
       * @return The bytes for podIP.
       */
      public com.google.protobuf.ByteString
          getPodIPBytes() {
        java.lang.Object ref = podIP_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          podIP_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * podIP address allocated to the pod. Routable at least within the cluster.
       * Empty if not yet allocated.
       * +optional
       * </pre>
       *
       * <code>optional string podIP = 6;</code>
       * @param value The podIP to set.
       * @return This builder for chaining.
       */
      public Builder setPodIP(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        podIP_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * podIP address allocated to the pod. Routable at least within the cluster.
       * Empty if not yet allocated.
       * +optional
       * </pre>
       *
       * <code>optional string podIP = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearPodIP() {
        podIP_ = getDefaultInstance().getPodIP();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * podIP address allocated to the pod. Routable at least within the cluster.
       * Empty if not yet allocated.
       * +optional
       * </pre>
       *
       * <code>optional string podIP = 6;</code>
       * @param value The bytes for podIP to set.
       * @return This builder for chaining.
       */
      public Builder setPodIPBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        podIP_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.PodIP> podIPs_ =
        java.util.Collections.emptyList();
      private void ensurePodIPsIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          podIPs_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PodIP>(podIPs_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodIP, io.kubernetes.client.proto.V1.PodIP.Builder, io.kubernetes.client.proto.V1.PodIPOrBuilder> podIPsBuilder_;

      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodIP> getPodIPsList() {
        if (podIPsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(podIPs_);
        } else {
          return podIPsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public int getPodIPsCount() {
        if (podIPsBuilder_ == null) {
          return podIPs_.size();
        } else {
          return podIPsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public io.kubernetes.client.proto.V1.PodIP getPodIPs(int index) {
        if (podIPsBuilder_ == null) {
          return podIPs_.get(index);
        } else {
          return podIPsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public Builder setPodIPs(
          int index, io.kubernetes.client.proto.V1.PodIP value) {
        if (podIPsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePodIPsIsMutable();
          podIPs_.set(index, value);
          onChanged();
        } else {
          podIPsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public Builder setPodIPs(
          int index, io.kubernetes.client.proto.V1.PodIP.Builder builderForValue) {
        if (podIPsBuilder_ == null) {
          ensurePodIPsIsMutable();
          podIPs_.set(index, builderForValue.build());
          onChanged();
        } else {
          podIPsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public Builder addPodIPs(io.kubernetes.client.proto.V1.PodIP value) {
        if (podIPsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePodIPsIsMutable();
          podIPs_.add(value);
          onChanged();
        } else {
          podIPsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public Builder addPodIPs(
          int index, io.kubernetes.client.proto.V1.PodIP value) {
        if (podIPsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePodIPsIsMutable();
          podIPs_.add(index, value);
          onChanged();
        } else {
          podIPsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public Builder addPodIPs(
          io.kubernetes.client.proto.V1.PodIP.Builder builderForValue) {
        if (podIPsBuilder_ == null) {
          ensurePodIPsIsMutable();
          podIPs_.add(builderForValue.build());
          onChanged();
        } else {
          podIPsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public Builder addPodIPs(
          int index, io.kubernetes.client.proto.V1.PodIP.Builder builderForValue) {
        if (podIPsBuilder_ == null) {
          ensurePodIPsIsMutable();
          podIPs_.add(index, builderForValue.build());
          onChanged();
        } else {
          podIPsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public Builder addAllPodIPs(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PodIP> values) {
        if (podIPsBuilder_ == null) {
          ensurePodIPsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, podIPs_);
          onChanged();
        } else {
          podIPsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public Builder clearPodIPs() {
        if (podIPsBuilder_ == null) {
          podIPs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          podIPsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public Builder removePodIPs(int index) {
        if (podIPsBuilder_ == null) {
          ensurePodIPsIsMutable();
          podIPs_.remove(index);
          onChanged();
        } else {
          podIPsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public io.kubernetes.client.proto.V1.PodIP.Builder getPodIPsBuilder(
          int index) {
        return getPodIPsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public io.kubernetes.client.proto.V1.PodIPOrBuilder getPodIPsOrBuilder(
          int index) {
        if (podIPsBuilder_ == null) {
          return podIPs_.get(index);  } else {
          return podIPsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodIPOrBuilder> 
           getPodIPsOrBuilderList() {
        if (podIPsBuilder_ != null) {
          return podIPsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(podIPs_);
        }
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public io.kubernetes.client.proto.V1.PodIP.Builder addPodIPsBuilder() {
        return getPodIPsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PodIP.getDefaultInstance());
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public io.kubernetes.client.proto.V1.PodIP.Builder addPodIPsBuilder(
          int index) {
        return getPodIPsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PodIP.getDefaultInstance());
      }
      /**
       * <pre>
       * podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
       * match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
       * is empty if no IPs have been allocated yet.
       * +optional
       * +patchStrategy=merge
       * +patchMergeKey=ip
       * +listType=map
       * +listMapKey=ip
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodIP podIPs = 12;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodIP.Builder> 
           getPodIPsBuilderList() {
        return getPodIPsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodIP, io.kubernetes.client.proto.V1.PodIP.Builder, io.kubernetes.client.proto.V1.PodIPOrBuilder> 
          getPodIPsFieldBuilder() {
        if (podIPsBuilder_ == null) {
          podIPsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PodIP, io.kubernetes.client.proto.V1.PodIP.Builder, io.kubernetes.client.proto.V1.PodIPOrBuilder>(
                  podIPs_,
                  ((bitField0_ & 0x00000100) != 0),
                  getParentForChildren(),
                  isClean());
          podIPs_ = null;
        }
        return podIPsBuilder_;
      }

      private io.kubernetes.client.proto.Meta.Time startTime_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> startTimeBuilder_;
      /**
       * <pre>
       * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
       * This is before the Kubelet pulled the container image(s) for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
       * @return Whether the startTime field is set.
       */
      public boolean hasStartTime() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
       * This is before the Kubelet pulled the container image(s) for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
       * @return The startTime.
       */
      public io.kubernetes.client.proto.Meta.Time getStartTime() {
        if (startTimeBuilder_ == null) {
          return startTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startTime_;
        } else {
          return startTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
       * This is before the Kubelet pulled the container image(s) for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
       */
      public Builder setStartTime(io.kubernetes.client.proto.Meta.Time value) {
        if (startTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          startTime_ = value;
        } else {
          startTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
       * This is before the Kubelet pulled the container image(s) for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
       */
      public Builder setStartTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (startTimeBuilder_ == null) {
          startTime_ = builderForValue.build();
        } else {
          startTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
       * This is before the Kubelet pulled the container image(s) for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
       */
      public Builder mergeStartTime(io.kubernetes.client.proto.Meta.Time value) {
        if (startTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            startTime_ != null &&
            startTime_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getStartTimeBuilder().mergeFrom(value);
          } else {
            startTime_ = value;
          }
        } else {
          startTimeBuilder_.mergeFrom(value);
        }
        if (startTime_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
       * This is before the Kubelet pulled the container image(s) for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
       */
      public Builder clearStartTime() {
        bitField0_ = (bitField0_ & ~0x00000200);
        startTime_ = null;
        if (startTimeBuilder_ != null) {
          startTimeBuilder_.dispose();
          startTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
       * This is before the Kubelet pulled the container image(s) for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getStartTimeBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getStartTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
       * This is before the Kubelet pulled the container image(s) for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getStartTimeOrBuilder() {
        if (startTimeBuilder_ != null) {
          return startTimeBuilder_.getMessageOrBuilder();
        } else {
          return startTime_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : startTime_;
        }
      }
      /**
       * <pre>
       * RFC 3339 date and time at which the object was acknowledged by the Kubelet.
       * This is before the Kubelet pulled the container image(s) for the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;</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> 
          getStartTimeFieldBuilder() {
        if (startTimeBuilder_ == null) {
          startTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getStartTime(),
                  getParentForChildren(),
                  isClean());
          startTime_ = null;
        }
        return startTimeBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> initContainerStatuses_ =
        java.util.Collections.emptyList();
      private void ensureInitContainerStatusesIsMutable() {
        if (!((bitField0_ & 0x00000400) != 0)) {
          initContainerStatuses_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ContainerStatus>(initContainerStatuses_);
          bitField0_ |= 0x00000400;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStatus, io.kubernetes.client.proto.V1.ContainerStatus.Builder, io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> initContainerStatusesBuilder_;

      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> getInitContainerStatusesList() {
        if (initContainerStatusesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(initContainerStatuses_);
        } else {
          return initContainerStatusesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public int getInitContainerStatusesCount() {
        if (initContainerStatusesBuilder_ == null) {
          return initContainerStatuses_.size();
        } else {
          return initContainerStatusesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus getInitContainerStatuses(int index) {
        if (initContainerStatusesBuilder_ == null) {
          return initContainerStatuses_.get(index);
        } else {
          return initContainerStatusesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public Builder setInitContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus value) {
        if (initContainerStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInitContainerStatusesIsMutable();
          initContainerStatuses_.set(index, value);
          onChanged();
        } else {
          initContainerStatusesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public Builder setInitContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus.Builder builderForValue) {
        if (initContainerStatusesBuilder_ == null) {
          ensureInitContainerStatusesIsMutable();
          initContainerStatuses_.set(index, builderForValue.build());
          onChanged();
        } else {
          initContainerStatusesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public Builder addInitContainerStatuses(io.kubernetes.client.proto.V1.ContainerStatus value) {
        if (initContainerStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInitContainerStatusesIsMutable();
          initContainerStatuses_.add(value);
          onChanged();
        } else {
          initContainerStatusesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public Builder addInitContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus value) {
        if (initContainerStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInitContainerStatusesIsMutable();
          initContainerStatuses_.add(index, value);
          onChanged();
        } else {
          initContainerStatusesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public Builder addInitContainerStatuses(
          io.kubernetes.client.proto.V1.ContainerStatus.Builder builderForValue) {
        if (initContainerStatusesBuilder_ == null) {
          ensureInitContainerStatusesIsMutable();
          initContainerStatuses_.add(builderForValue.build());
          onChanged();
        } else {
          initContainerStatusesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public Builder addInitContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus.Builder builderForValue) {
        if (initContainerStatusesBuilder_ == null) {
          ensureInitContainerStatusesIsMutable();
          initContainerStatuses_.add(index, builderForValue.build());
          onChanged();
        } else {
          initContainerStatusesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public Builder addAllInitContainerStatuses(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ContainerStatus> values) {
        if (initContainerStatusesBuilder_ == null) {
          ensureInitContainerStatusesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, initContainerStatuses_);
          onChanged();
        } else {
          initContainerStatusesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public Builder clearInitContainerStatuses() {
        if (initContainerStatusesBuilder_ == null) {
          initContainerStatuses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
        } else {
          initContainerStatusesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public Builder removeInitContainerStatuses(int index) {
        if (initContainerStatusesBuilder_ == null) {
          ensureInitContainerStatusesIsMutable();
          initContainerStatuses_.remove(index);
          onChanged();
        } else {
          initContainerStatusesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus.Builder getInitContainerStatusesBuilder(
          int index) {
        return getInitContainerStatusesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatusOrBuilder getInitContainerStatusesOrBuilder(
          int index) {
        if (initContainerStatusesBuilder_ == null) {
          return initContainerStatuses_.get(index);  } else {
          return initContainerStatusesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
           getInitContainerStatusesOrBuilderList() {
        if (initContainerStatusesBuilder_ != null) {
          return initContainerStatusesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(initContainerStatuses_);
        }
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus.Builder addInitContainerStatusesBuilder() {
        return getInitContainerStatusesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ContainerStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus.Builder addInitContainerStatusesBuilder(
          int index) {
        return getInitContainerStatusesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ContainerStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * The list has one entry per init container in the manifest. The most recent successful
       * init container will have ready = true, the most recently started container will have
       * startTime set.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus initContainerStatuses = 10;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerStatus.Builder> 
           getInitContainerStatusesBuilderList() {
        return getInitContainerStatusesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStatus, io.kubernetes.client.proto.V1.ContainerStatus.Builder, io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
          getInitContainerStatusesFieldBuilder() {
        if (initContainerStatusesBuilder_ == null) {
          initContainerStatusesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerStatus, io.kubernetes.client.proto.V1.ContainerStatus.Builder, io.kubernetes.client.proto.V1.ContainerStatusOrBuilder>(
                  initContainerStatuses_,
                  ((bitField0_ & 0x00000400) != 0),
                  getParentForChildren(),
                  isClean());
          initContainerStatuses_ = null;
        }
        return initContainerStatusesBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> containerStatuses_ =
        java.util.Collections.emptyList();
      private void ensureContainerStatusesIsMutable() {
        if (!((bitField0_ & 0x00000800) != 0)) {
          containerStatuses_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ContainerStatus>(containerStatuses_);
          bitField0_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStatus, io.kubernetes.client.proto.V1.ContainerStatus.Builder, io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> containerStatusesBuilder_;

      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> getContainerStatusesList() {
        if (containerStatusesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(containerStatuses_);
        } else {
          return containerStatusesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public int getContainerStatusesCount() {
        if (containerStatusesBuilder_ == null) {
          return containerStatuses_.size();
        } else {
          return containerStatusesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus getContainerStatuses(int index) {
        if (containerStatusesBuilder_ == null) {
          return containerStatuses_.get(index);
        } else {
          return containerStatusesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public Builder setContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus value) {
        if (containerStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContainerStatusesIsMutable();
          containerStatuses_.set(index, value);
          onChanged();
        } else {
          containerStatusesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public Builder setContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus.Builder builderForValue) {
        if (containerStatusesBuilder_ == null) {
          ensureContainerStatusesIsMutable();
          containerStatuses_.set(index, builderForValue.build());
          onChanged();
        } else {
          containerStatusesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public Builder addContainerStatuses(io.kubernetes.client.proto.V1.ContainerStatus value) {
        if (containerStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContainerStatusesIsMutable();
          containerStatuses_.add(value);
          onChanged();
        } else {
          containerStatusesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public Builder addContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus value) {
        if (containerStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureContainerStatusesIsMutable();
          containerStatuses_.add(index, value);
          onChanged();
        } else {
          containerStatusesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public Builder addContainerStatuses(
          io.kubernetes.client.proto.V1.ContainerStatus.Builder builderForValue) {
        if (containerStatusesBuilder_ == null) {
          ensureContainerStatusesIsMutable();
          containerStatuses_.add(builderForValue.build());
          onChanged();
        } else {
          containerStatusesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public Builder addContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus.Builder builderForValue) {
        if (containerStatusesBuilder_ == null) {
          ensureContainerStatusesIsMutable();
          containerStatuses_.add(index, builderForValue.build());
          onChanged();
        } else {
          containerStatusesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public Builder addAllContainerStatuses(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ContainerStatus> values) {
        if (containerStatusesBuilder_ == null) {
          ensureContainerStatusesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, containerStatuses_);
          onChanged();
        } else {
          containerStatusesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public Builder clearContainerStatuses() {
        if (containerStatusesBuilder_ == null) {
          containerStatuses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          containerStatusesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public Builder removeContainerStatuses(int index) {
        if (containerStatusesBuilder_ == null) {
          ensureContainerStatusesIsMutable();
          containerStatuses_.remove(index);
          onChanged();
        } else {
          containerStatusesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus.Builder getContainerStatusesBuilder(
          int index) {
        return getContainerStatusesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatusOrBuilder getContainerStatusesOrBuilder(
          int index) {
        if (containerStatusesBuilder_ == null) {
          return containerStatuses_.get(index);  } else {
          return containerStatusesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
           getContainerStatusesOrBuilderList() {
        if (containerStatusesBuilder_ != null) {
          return containerStatusesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(containerStatuses_);
        }
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus.Builder addContainerStatusesBuilder() {
        return getContainerStatusesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ContainerStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus.Builder addContainerStatusesBuilder(
          int index) {
        return getContainerStatusesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ContainerStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * The list has one entry per container in the manifest.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus containerStatuses = 8;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerStatus.Builder> 
           getContainerStatusesBuilderList() {
        return getContainerStatusesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStatus, io.kubernetes.client.proto.V1.ContainerStatus.Builder, io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
          getContainerStatusesFieldBuilder() {
        if (containerStatusesBuilder_ == null) {
          containerStatusesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerStatus, io.kubernetes.client.proto.V1.ContainerStatus.Builder, io.kubernetes.client.proto.V1.ContainerStatusOrBuilder>(
                  containerStatuses_,
                  ((bitField0_ & 0x00000800) != 0),
                  getParentForChildren(),
                  isClean());
          containerStatuses_ = null;
        }
        return containerStatusesBuilder_;
      }

      private java.lang.Object qosClass_ = "";
      /**
       * <pre>
       * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
       * See PodQOSClass type for available QOS classes
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
       * +optional
       * </pre>
       *
       * <code>optional string qosClass = 9;</code>
       * @return Whether the qosClass field is set.
       */
      public boolean hasQosClass() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
       * See PodQOSClass type for available QOS classes
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
       * +optional
       * </pre>
       *
       * <code>optional string qosClass = 9;</code>
       * @return The qosClass.
       */
      public java.lang.String getQosClass() {
        java.lang.Object ref = qosClass_;
        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()) {
            qosClass_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
       * See PodQOSClass type for available QOS classes
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
       * +optional
       * </pre>
       *
       * <code>optional string qosClass = 9;</code>
       * @return The bytes for qosClass.
       */
      public com.google.protobuf.ByteString
          getQosClassBytes() {
        java.lang.Object ref = qosClass_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          qosClass_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
       * See PodQOSClass type for available QOS classes
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
       * +optional
       * </pre>
       *
       * <code>optional string qosClass = 9;</code>
       * @param value The qosClass to set.
       * @return This builder for chaining.
       */
      public Builder setQosClass(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        qosClass_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
       * See PodQOSClass type for available QOS classes
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
       * +optional
       * </pre>
       *
       * <code>optional string qosClass = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearQosClass() {
        qosClass_ = getDefaultInstance().getQosClass();
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Quality of Service (QOS) classification assigned to the pod based on resource requirements
       * See PodQOSClass type for available QOS classes
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
       * +optional
       * </pre>
       *
       * <code>optional string qosClass = 9;</code>
       * @param value The bytes for qosClass to set.
       * @return This builder for chaining.
       */
      public Builder setQosClassBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        qosClass_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> ephemeralContainerStatuses_ =
        java.util.Collections.emptyList();
      private void ensureEphemeralContainerStatusesIsMutable() {
        if (!((bitField0_ & 0x00002000) != 0)) {
          ephemeralContainerStatuses_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ContainerStatus>(ephemeralContainerStatuses_);
          bitField0_ |= 0x00002000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStatus, io.kubernetes.client.proto.V1.ContainerStatus.Builder, io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> ephemeralContainerStatusesBuilder_;

      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerStatus> getEphemeralContainerStatusesList() {
        if (ephemeralContainerStatusesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ephemeralContainerStatuses_);
        } else {
          return ephemeralContainerStatusesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public int getEphemeralContainerStatusesCount() {
        if (ephemeralContainerStatusesBuilder_ == null) {
          return ephemeralContainerStatuses_.size();
        } else {
          return ephemeralContainerStatusesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus getEphemeralContainerStatuses(int index) {
        if (ephemeralContainerStatusesBuilder_ == null) {
          return ephemeralContainerStatuses_.get(index);
        } else {
          return ephemeralContainerStatusesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public Builder setEphemeralContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus value) {
        if (ephemeralContainerStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEphemeralContainerStatusesIsMutable();
          ephemeralContainerStatuses_.set(index, value);
          onChanged();
        } else {
          ephemeralContainerStatusesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public Builder setEphemeralContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus.Builder builderForValue) {
        if (ephemeralContainerStatusesBuilder_ == null) {
          ensureEphemeralContainerStatusesIsMutable();
          ephemeralContainerStatuses_.set(index, builderForValue.build());
          onChanged();
        } else {
          ephemeralContainerStatusesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public Builder addEphemeralContainerStatuses(io.kubernetes.client.proto.V1.ContainerStatus value) {
        if (ephemeralContainerStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEphemeralContainerStatusesIsMutable();
          ephemeralContainerStatuses_.add(value);
          onChanged();
        } else {
          ephemeralContainerStatusesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public Builder addEphemeralContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus value) {
        if (ephemeralContainerStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEphemeralContainerStatusesIsMutable();
          ephemeralContainerStatuses_.add(index, value);
          onChanged();
        } else {
          ephemeralContainerStatusesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public Builder addEphemeralContainerStatuses(
          io.kubernetes.client.proto.V1.ContainerStatus.Builder builderForValue) {
        if (ephemeralContainerStatusesBuilder_ == null) {
          ensureEphemeralContainerStatusesIsMutable();
          ephemeralContainerStatuses_.add(builderForValue.build());
          onChanged();
        } else {
          ephemeralContainerStatusesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public Builder addEphemeralContainerStatuses(
          int index, io.kubernetes.client.proto.V1.ContainerStatus.Builder builderForValue) {
        if (ephemeralContainerStatusesBuilder_ == null) {
          ensureEphemeralContainerStatusesIsMutable();
          ephemeralContainerStatuses_.add(index, builderForValue.build());
          onChanged();
        } else {
          ephemeralContainerStatusesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public Builder addAllEphemeralContainerStatuses(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ContainerStatus> values) {
        if (ephemeralContainerStatusesBuilder_ == null) {
          ensureEphemeralContainerStatusesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ephemeralContainerStatuses_);
          onChanged();
        } else {
          ephemeralContainerStatusesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public Builder clearEphemeralContainerStatuses() {
        if (ephemeralContainerStatusesBuilder_ == null) {
          ephemeralContainerStatuses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
          onChanged();
        } else {
          ephemeralContainerStatusesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public Builder removeEphemeralContainerStatuses(int index) {
        if (ephemeralContainerStatusesBuilder_ == null) {
          ensureEphemeralContainerStatusesIsMutable();
          ephemeralContainerStatuses_.remove(index);
          onChanged();
        } else {
          ephemeralContainerStatusesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus.Builder getEphemeralContainerStatusesBuilder(
          int index) {
        return getEphemeralContainerStatusesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatusOrBuilder getEphemeralContainerStatusesOrBuilder(
          int index) {
        if (ephemeralContainerStatusesBuilder_ == null) {
          return ephemeralContainerStatuses_.get(index);  } else {
          return ephemeralContainerStatusesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
           getEphemeralContainerStatusesOrBuilderList() {
        if (ephemeralContainerStatusesBuilder_ != null) {
          return ephemeralContainerStatusesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ephemeralContainerStatuses_);
        }
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus.Builder addEphemeralContainerStatusesBuilder() {
        return getEphemeralContainerStatusesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ContainerStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public io.kubernetes.client.proto.V1.ContainerStatus.Builder addEphemeralContainerStatusesBuilder(
          int index) {
        return getEphemeralContainerStatusesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ContainerStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Status for any ephemeral containers that have run in this pod.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ContainerStatus ephemeralContainerStatuses = 13;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ContainerStatus.Builder> 
           getEphemeralContainerStatusesBuilderList() {
        return getEphemeralContainerStatusesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ContainerStatus, io.kubernetes.client.proto.V1.ContainerStatus.Builder, io.kubernetes.client.proto.V1.ContainerStatusOrBuilder> 
          getEphemeralContainerStatusesFieldBuilder() {
        if (ephemeralContainerStatusesBuilder_ == null) {
          ephemeralContainerStatusesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ContainerStatus, io.kubernetes.client.proto.V1.ContainerStatus.Builder, io.kubernetes.client.proto.V1.ContainerStatusOrBuilder>(
                  ephemeralContainerStatuses_,
                  ((bitField0_ & 0x00002000) != 0),
                  getParentForChildren(),
                  isClean());
          ephemeralContainerStatuses_ = null;
        }
        return ephemeralContainerStatusesBuilder_;
      }

      private java.lang.Object resize_ = "";
      /**
       * <pre>
       * Status of resources resize desired for pod's containers.
       * It is empty if no resources resize is pending.
       * Any changes to container resources will automatically set this to "Proposed"
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional string resize = 14;</code>
       * @return Whether the resize field is set.
       */
      public boolean hasResize() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * Status of resources resize desired for pod's containers.
       * It is empty if no resources resize is pending.
       * Any changes to container resources will automatically set this to "Proposed"
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional string resize = 14;</code>
       * @return The resize.
       */
      public java.lang.String getResize() {
        java.lang.Object ref = resize_;
        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()) {
            resize_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Status of resources resize desired for pod's containers.
       * It is empty if no resources resize is pending.
       * Any changes to container resources will automatically set this to "Proposed"
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional string resize = 14;</code>
       * @return The bytes for resize.
       */
      public com.google.protobuf.ByteString
          getResizeBytes() {
        java.lang.Object ref = resize_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resize_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Status of resources resize desired for pod's containers.
       * It is empty if no resources resize is pending.
       * Any changes to container resources will automatically set this to "Proposed"
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional string resize = 14;</code>
       * @param value The resize to set.
       * @return This builder for chaining.
       */
      public Builder setResize(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        resize_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of resources resize desired for pod's containers.
       * It is empty if no resources resize is pending.
       * Any changes to container resources will automatically set this to "Proposed"
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional string resize = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearResize() {
        resize_ = getDefaultInstance().getResize();
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of resources resize desired for pod's containers.
       * It is empty if no resources resize is pending.
       * Any changes to container resources will automatically set this to "Proposed"
       * +featureGate=InPlacePodVerticalScaling
       * +optional
       * </pre>
       *
       * <code>optional string resize = 14;</code>
       * @param value The bytes for resize to set.
       * @return This builder for chaining.
       */
      public Builder setResizeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        resize_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.PodResourceClaimStatus> resourceClaimStatuses_ =
        java.util.Collections.emptyList();
      private void ensureResourceClaimStatusesIsMutable() {
        if (!((bitField0_ & 0x00008000) != 0)) {
          resourceClaimStatuses_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PodResourceClaimStatus>(resourceClaimStatuses_);
          bitField0_ |= 0x00008000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodResourceClaimStatus, io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder, io.kubernetes.client.proto.V1.PodResourceClaimStatusOrBuilder> resourceClaimStatusesBuilder_;

      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodResourceClaimStatus> getResourceClaimStatusesList() {
        if (resourceClaimStatusesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(resourceClaimStatuses_);
        } else {
          return resourceClaimStatusesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public int getResourceClaimStatusesCount() {
        if (resourceClaimStatusesBuilder_ == null) {
          return resourceClaimStatuses_.size();
        } else {
          return resourceClaimStatusesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public io.kubernetes.client.proto.V1.PodResourceClaimStatus getResourceClaimStatuses(int index) {
        if (resourceClaimStatusesBuilder_ == null) {
          return resourceClaimStatuses_.get(index);
        } else {
          return resourceClaimStatusesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public Builder setResourceClaimStatuses(
          int index, io.kubernetes.client.proto.V1.PodResourceClaimStatus value) {
        if (resourceClaimStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResourceClaimStatusesIsMutable();
          resourceClaimStatuses_.set(index, value);
          onChanged();
        } else {
          resourceClaimStatusesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public Builder setResourceClaimStatuses(
          int index, io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder builderForValue) {
        if (resourceClaimStatusesBuilder_ == null) {
          ensureResourceClaimStatusesIsMutable();
          resourceClaimStatuses_.set(index, builderForValue.build());
          onChanged();
        } else {
          resourceClaimStatusesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public Builder addResourceClaimStatuses(io.kubernetes.client.proto.V1.PodResourceClaimStatus value) {
        if (resourceClaimStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResourceClaimStatusesIsMutable();
          resourceClaimStatuses_.add(value);
          onChanged();
        } else {
          resourceClaimStatusesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public Builder addResourceClaimStatuses(
          int index, io.kubernetes.client.proto.V1.PodResourceClaimStatus value) {
        if (resourceClaimStatusesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResourceClaimStatusesIsMutable();
          resourceClaimStatuses_.add(index, value);
          onChanged();
        } else {
          resourceClaimStatusesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public Builder addResourceClaimStatuses(
          io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder builderForValue) {
        if (resourceClaimStatusesBuilder_ == null) {
          ensureResourceClaimStatusesIsMutable();
          resourceClaimStatuses_.add(builderForValue.build());
          onChanged();
        } else {
          resourceClaimStatusesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public Builder addResourceClaimStatuses(
          int index, io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder builderForValue) {
        if (resourceClaimStatusesBuilder_ == null) {
          ensureResourceClaimStatusesIsMutable();
          resourceClaimStatuses_.add(index, builderForValue.build());
          onChanged();
        } else {
          resourceClaimStatusesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public Builder addAllResourceClaimStatuses(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PodResourceClaimStatus> values) {
        if (resourceClaimStatusesBuilder_ == null) {
          ensureResourceClaimStatusesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, resourceClaimStatuses_);
          onChanged();
        } else {
          resourceClaimStatusesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public Builder clearResourceClaimStatuses() {
        if (resourceClaimStatusesBuilder_ == null) {
          resourceClaimStatuses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00008000);
          onChanged();
        } else {
          resourceClaimStatusesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public Builder removeResourceClaimStatuses(int index) {
        if (resourceClaimStatusesBuilder_ == null) {
          ensureResourceClaimStatusesIsMutable();
          resourceClaimStatuses_.remove(index);
          onChanged();
        } else {
          resourceClaimStatusesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder getResourceClaimStatusesBuilder(
          int index) {
        return getResourceClaimStatusesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public io.kubernetes.client.proto.V1.PodResourceClaimStatusOrBuilder getResourceClaimStatusesOrBuilder(
          int index) {
        if (resourceClaimStatusesBuilder_ == null) {
          return resourceClaimStatuses_.get(index);  } else {
          return resourceClaimStatusesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodResourceClaimStatusOrBuilder> 
           getResourceClaimStatusesOrBuilderList() {
        if (resourceClaimStatusesBuilder_ != null) {
          return resourceClaimStatusesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(resourceClaimStatuses_);
        }
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder addResourceClaimStatusesBuilder() {
        return getResourceClaimStatusesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PodResourceClaimStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder addResourceClaimStatusesBuilder(
          int index) {
        return getResourceClaimStatusesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PodResourceClaimStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Status of resource claims.
       * +patchMergeKey=name
       * +patchStrategy=merge,retainKeys
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodResourceClaimStatus resourceClaimStatuses = 15;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder> 
           getResourceClaimStatusesBuilderList() {
        return getResourceClaimStatusesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodResourceClaimStatus, io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder, io.kubernetes.client.proto.V1.PodResourceClaimStatusOrBuilder> 
          getResourceClaimStatusesFieldBuilder() {
        if (resourceClaimStatusesBuilder_ == null) {
          resourceClaimStatusesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PodResourceClaimStatus, io.kubernetes.client.proto.V1.PodResourceClaimStatus.Builder, io.kubernetes.client.proto.V1.PodResourceClaimStatusOrBuilder>(
                  resourceClaimStatuses_,
                  ((bitField0_ & 0x00008000) != 0),
                  getParentForChildren(),
                  isClean());
          resourceClaimStatuses_ = null;
        }
        return resourceClaimStatusesBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodStatus)
    private static final io.kubernetes.client.proto.V1.PodStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodStatus();
    }

    public static io.kubernetes.client.proto.V1.PodStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodStatus>
        PARSER = new com.google.protobuf.AbstractParser<PodStatus>() {
      @java.lang.Override
      public PodStatus 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<PodStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodStatusResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodStatusResult)
      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>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1.PodStatus getStatus();
    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodStatusResult}
   */
  public static final class PodStatusResult extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodStatusResult)
      PodStatusResultOrBuilder {
  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= */ "",
        PodStatusResult.class.getName());
    }
    // Use PodStatusResult.newBuilder() to construct.
    private PodStatusResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodStatusResult() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodStatusResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodStatusResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodStatusResult.class, io.kubernetes.client.proto.V1.PodStatusResult.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 STATUS_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.PodStatus status_;
    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1.PodStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * Most recently observed status of the pod.
     * This data may not be up to date.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1.PodStatus.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, 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, 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.V1.PodStatusResult)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodStatusResult other = (io.kubernetes.client.proto.V1.PodStatusResult) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) 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 (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.V1.PodStatusResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodStatusResult 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.V1.PodStatusResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodStatusResult 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.V1.PodStatusResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodStatusResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodStatusResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodStatusResult 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.V1.PodStatusResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodStatusResult 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.V1.PodStatusResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodStatusResult 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.V1.PodStatusResult 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>
     * PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodStatusResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodStatusResult)
        io.kubernetes.client.proto.V1.PodStatusResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodStatusResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodStatusResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodStatusResult.class, io.kubernetes.client.proto.V1.PodStatusResult.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodStatusResult.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();
          getStatusFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = 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.V1.internal_static_k8s_io_api_core_v1_PodStatusResult_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodStatusResult getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodStatusResult.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodStatusResult build() {
        io.kubernetes.client.proto.V1.PodStatusResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodStatusResult buildPartial() {
        io.kubernetes.client.proto.V1.PodStatusResult result = new io.kubernetes.client.proto.V1.PodStatusResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodStatusResult 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.status_ = statusBuilder_ == null
              ? status_
              : statusBuilder_.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.V1.PodStatusResult) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodStatusResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodStatusResult other) {
        if (other == io.kubernetes.client.proto.V1.PodStatusResult.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        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(
                    getStatusFieldBuilder().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.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.V1.PodStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodStatus, io.kubernetes.client.proto.V1.PodStatus.Builder, io.kubernetes.client.proto.V1.PodStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1.PodStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1.PodStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1.PodStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1.PodStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1.PodStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1.PodStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000002);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1.PodStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * Most recently observed status of the pod.
       * This data may not be up to date.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodStatus status = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodStatus, io.kubernetes.client.proto.V1.PodStatus.Builder, io.kubernetes.client.proto.V1.PodStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodStatus, io.kubernetes.client.proto.V1.PodStatus.Builder, io.kubernetes.client.proto.V1.PodStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodStatusResult)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodStatusResult)
    private static final io.kubernetes.client.proto.V1.PodStatusResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodStatusResult();
    }

    public static io.kubernetes.client.proto.V1.PodStatusResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodStatusResult>
        PARSER = new com.google.protobuf.AbstractParser<PodStatusResult>() {
      @java.lang.Override
      public PodStatusResult 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<PodStatusResult> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodStatusResult> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodStatusResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodTemplateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodTemplate)
      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>
     * Template defines the pods that will be created from this pod template.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
     * @return Whether the template field is set.
     */
    boolean hasTemplate();
    /**
     * <pre>
     * Template defines the pods that will be created from this pod template.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
     * @return The template.
     */
    io.kubernetes.client.proto.V1.PodTemplateSpec getTemplate();
    /**
     * <pre>
     * Template defines the pods that will be created from this pod template.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder getTemplateOrBuilder();
  }
  /**
   * <pre>
   * PodTemplate describes a template for creating copies of a predefined pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodTemplate}
   */
  public static final class PodTemplate extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodTemplate)
      PodTemplateOrBuilder {
  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= */ "",
        PodTemplate.class.getName());
    }
    // Use PodTemplate.newBuilder() to construct.
    private PodTemplate(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodTemplate() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplate_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodTemplate.class, io.kubernetes.client.proto.V1.PodTemplate.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 TEMPLATE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.PodTemplateSpec template_;
    /**
     * <pre>
     * Template defines the pods that will be created from this pod template.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
     * @return Whether the template field is set.
     */
    @java.lang.Override
    public boolean hasTemplate() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Template defines the pods that will be created from this pod template.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
     * @return The template.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodTemplateSpec getTemplate() {
      return template_ == null ? io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance() : template_;
    }
    /**
     * <pre>
     * Template defines the pods that will be created from this pod template.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder getTemplateOrBuilder() {
      return template_ == null ? io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance() : template_;
    }

    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, getTemplate());
      }
      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, getTemplate());
      }
      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.V1.PodTemplate)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodTemplate other = (io.kubernetes.client.proto.V1.PodTemplate) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (hasTemplate() != other.hasTemplate()) return false;
      if (hasTemplate()) {
        if (!getTemplate()
            .equals(other.getTemplate())) 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 (hasTemplate()) {
        hash = (37 * hash) + TEMPLATE_FIELD_NUMBER;
        hash = (53 * hash) + getTemplate().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodTemplate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodTemplate 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.V1.PodTemplate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodTemplate 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.V1.PodTemplate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodTemplate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodTemplate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodTemplate 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.V1.PodTemplate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodTemplate 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.V1.PodTemplate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodTemplate 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.V1.PodTemplate 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>
     * PodTemplate describes a template for creating copies of a predefined pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodTemplate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodTemplate)
        io.kubernetes.client.proto.V1.PodTemplateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplate_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodTemplate.class, io.kubernetes.client.proto.V1.PodTemplate.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodTemplate.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();
          getTemplateFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        template_ = null;
        if (templateBuilder_ != null) {
          templateBuilder_.dispose();
          templateBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplate_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodTemplate getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodTemplate.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodTemplate build() {
        io.kubernetes.client.proto.V1.PodTemplate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodTemplate buildPartial() {
        io.kubernetes.client.proto.V1.PodTemplate result = new io.kubernetes.client.proto.V1.PodTemplate(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodTemplate 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.template_ = templateBuilder_ == null
              ? template_
              : templateBuilder_.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.V1.PodTemplate) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodTemplate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodTemplate other) {
        if (other == io.kubernetes.client.proto.V1.PodTemplate.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasTemplate()) {
          mergeTemplate(other.getTemplate());
        }
        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(
                    getTemplateFieldBuilder().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.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.V1.PodTemplateSpec template_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodTemplateSpec, io.kubernetes.client.proto.V1.PodTemplateSpec.Builder, io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder> templateBuilder_;
      /**
       * <pre>
       * Template defines the pods that will be created from this pod template.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
       * @return Whether the template field is set.
       */
      public boolean hasTemplate() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Template defines the pods that will be created from this pod template.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
       * @return The template.
       */
      public io.kubernetes.client.proto.V1.PodTemplateSpec getTemplate() {
        if (templateBuilder_ == null) {
          return template_ == null ? io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance() : template_;
        } else {
          return templateBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Template defines the pods that will be created from this pod template.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
       */
      public Builder setTemplate(io.kubernetes.client.proto.V1.PodTemplateSpec value) {
        if (templateBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          template_ = value;
        } else {
          templateBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Template defines the pods that will be created from this pod template.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
       */
      public Builder setTemplate(
          io.kubernetes.client.proto.V1.PodTemplateSpec.Builder builderForValue) {
        if (templateBuilder_ == null) {
          template_ = builderForValue.build();
        } else {
          templateBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Template defines the pods that will be created from this pod template.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
       */
      public Builder mergeTemplate(io.kubernetes.client.proto.V1.PodTemplateSpec value) {
        if (templateBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            template_ != null &&
            template_ != io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance()) {
            getTemplateBuilder().mergeFrom(value);
          } else {
            template_ = value;
          }
        } else {
          templateBuilder_.mergeFrom(value);
        }
        if (template_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Template defines the pods that will be created from this pod template.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
       */
      public Builder clearTemplate() {
        bitField0_ = (bitField0_ & ~0x00000002);
        template_ = null;
        if (templateBuilder_ != null) {
          templateBuilder_.dispose();
          templateBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Template defines the pods that will be created from this pod template.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodTemplateSpec.Builder getTemplateBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTemplateFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Template defines the pods that will be created from this pod template.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder getTemplateOrBuilder() {
        if (templateBuilder_ != null) {
          return templateBuilder_.getMessageOrBuilder();
        } else {
          return template_ == null ?
              io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance() : template_;
        }
      }
      /**
       * <pre>
       * Template defines the pods that will be created from this pod template.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodTemplateSpec, io.kubernetes.client.proto.V1.PodTemplateSpec.Builder, io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder> 
          getTemplateFieldBuilder() {
        if (templateBuilder_ == null) {
          templateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodTemplateSpec, io.kubernetes.client.proto.V1.PodTemplateSpec.Builder, io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder>(
                  getTemplate(),
                  getParentForChildren(),
                  isClean());
          template_ = null;
        }
        return templateBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodTemplate)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodTemplate)
    private static final io.kubernetes.client.proto.V1.PodTemplate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodTemplate();
    }

    public static io.kubernetes.client.proto.V1.PodTemplate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodTemplate>
        PARSER = new com.google.protobuf.AbstractParser<PodTemplate>() {
      @java.lang.Override
      public PodTemplate 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<PodTemplate> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodTemplate> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodTemplate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodTemplateListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodTemplateList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * List of pod templates
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.PodTemplate> 
        getItemsList();
    /**
     * <pre>
     * List of pod templates
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodTemplate getItems(int index);
    /**
     * <pre>
     * List of pod templates
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * List of pod templates
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.PodTemplateOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * List of pod templates
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodTemplateOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * PodTemplateList is a list of PodTemplates.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodTemplateList}
   */
  public static final class PodTemplateList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodTemplateList)
      PodTemplateListOrBuilder {
  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= */ "",
        PodTemplateList.class.getName());
    }
    // Use PodTemplateList.newBuilder() to construct.
    private PodTemplateList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodTemplateList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplateList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplateList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodTemplateList.class, io.kubernetes.client.proto.V1.PodTemplateList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.PodTemplate> items_;
    /**
     * <pre>
     * List of pod templates
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.PodTemplate> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * List of pod templates
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.PodTemplateOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * List of pod templates
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * List of pod templates
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodTemplate getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * List of pod templates
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodTemplateOrBuilder 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.V1.PodTemplateList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodTemplateList other = (io.kubernetes.client.proto.V1.PodTemplateList) 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.V1.PodTemplateList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateList 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.V1.PodTemplateList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateList 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.V1.PodTemplateList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateList 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.V1.PodTemplateList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodTemplateList 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.V1.PodTemplateList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateList 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.V1.PodTemplateList 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>
     * PodTemplateList is a list of PodTemplates.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodTemplateList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodTemplateList)
        io.kubernetes.client.proto.V1.PodTemplateListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplateList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplateList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodTemplateList.class, io.kubernetes.client.proto.V1.PodTemplateList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodTemplateList.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.V1.internal_static_k8s_io_api_core_v1_PodTemplateList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodTemplateList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodTemplateList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodTemplateList build() {
        io.kubernetes.client.proto.V1.PodTemplateList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodTemplateList buildPartial() {
        io.kubernetes.client.proto.V1.PodTemplateList result = new io.kubernetes.client.proto.V1.PodTemplateList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.PodTemplateList 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.V1.PodTemplateList 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.V1.PodTemplateList) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodTemplateList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodTemplateList other) {
        if (other == io.kubernetes.client.proto.V1.PodTemplateList.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.V1.PodTemplate m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.PodTemplate.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.PodTemplate> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.PodTemplate>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodTemplate, io.kubernetes.client.proto.V1.PodTemplate.Builder, io.kubernetes.client.proto.V1.PodTemplateOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodTemplate> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodTemplate getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.PodTemplate value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.PodTemplate.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.PodTemplate value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.PodTemplate value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.PodTemplate.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.PodTemplate.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.PodTemplate> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodTemplate.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodTemplateOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.PodTemplateOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodTemplate.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.PodTemplate.getDefaultInstance());
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodTemplate.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.PodTemplate.getDefaultInstance());
      }
      /**
       * <pre>
       * List of pod templates
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.PodTemplate items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.PodTemplate.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.PodTemplate, io.kubernetes.client.proto.V1.PodTemplate.Builder, io.kubernetes.client.proto.V1.PodTemplateOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.PodTemplate, io.kubernetes.client.proto.V1.PodTemplate.Builder, io.kubernetes.client.proto.V1.PodTemplateOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodTemplateList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodTemplateList)
    private static final io.kubernetes.client.proto.V1.PodTemplateList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodTemplateList();
    }

    public static io.kubernetes.client.proto.V1.PodTemplateList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodTemplateList>
        PARSER = new com.google.protobuf.AbstractParser<PodTemplateList>() {
      @java.lang.Override
      public PodTemplateList 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<PodTemplateList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodTemplateList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodTemplateList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PodTemplateSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PodTemplateSpec)
      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>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.PodSpec getSpec();
    /**
     * <pre>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodSpecOrBuilder getSpecOrBuilder();
  }
  /**
   * <pre>
   * PodTemplateSpec describes the data a pod should have when created from a template
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PodTemplateSpec}
   */
  public static final class PodTemplateSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PodTemplateSpec)
      PodTemplateSpecOrBuilder {
  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= */ "",
        PodTemplateSpec.class.getName());
    }
    // Use PodTemplateSpec.newBuilder() to construct.
    private PodTemplateSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PodTemplateSpec() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplateSpec_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplateSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PodTemplateSpec.class, io.kubernetes.client.proto.V1.PodTemplateSpec.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.V1.PodSpec spec_;
    /**
     * <pre>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * Specification of the desired behavior of the pod.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance() : spec_;
    }

    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());
      }
      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());
      }
      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.V1.PodTemplateSpec)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PodTemplateSpec other = (io.kubernetes.client.proto.V1.PodTemplateSpec) 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 (!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();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PodTemplateSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateSpec 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.V1.PodTemplateSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateSpec 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.V1.PodTemplateSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateSpec 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.V1.PodTemplateSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PodTemplateSpec 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.V1.PodTemplateSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PodTemplateSpec 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.V1.PodTemplateSpec 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>
     * PodTemplateSpec describes the data a pod should have when created from a template
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PodTemplateSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PodTemplateSpec)
        io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplateSpec_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplateSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PodTemplateSpec.class, io.kubernetes.client.proto.V1.PodTemplateSpec.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PodTemplateSpec.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();
        }
      }
      @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;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PodTemplateSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodTemplateSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodTemplateSpec build() {
        io.kubernetes.client.proto.V1.PodTemplateSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PodTemplateSpec buildPartial() {
        io.kubernetes.client.proto.V1.PodTemplateSpec result = new io.kubernetes.client.proto.V1.PodTemplateSpec(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PodTemplateSpec 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;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.PodTemplateSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1.PodTemplateSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PodTemplateSpec other) {
        if (other == io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasSpec()) {
          mergeSpec(other.getSpec());
        }
        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
              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.V1.PodSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodSpec, io.kubernetes.client.proto.V1.PodSpec.Builder, io.kubernetes.client.proto.V1.PodSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.PodSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.PodSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.PodSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.PodSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.PodSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * Specification of the desired behavior of the pod.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodSpec, io.kubernetes.client.proto.V1.PodSpec.Builder, io.kubernetes.client.proto.V1.PodSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodSpec, io.kubernetes.client.proto.V1.PodSpec.Builder, io.kubernetes.client.proto.V1.PodSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PodTemplateSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PodTemplateSpec)
    private static final io.kubernetes.client.proto.V1.PodTemplateSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PodTemplateSpec();
    }

    public static io.kubernetes.client.proto.V1.PodTemplateSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PodTemplateSpec>
        PARSER = new com.google.protobuf.AbstractParser<PodTemplateSpec>() {
      @java.lang.Override
      public PodTemplateSpec 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<PodTemplateSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PodTemplateSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodTemplateSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PortStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PortStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Port is the port number of the service port of which status is recorded here
     * </pre>
     *
     * <code>optional int32 port = 1;</code>
     * @return Whether the port field is set.
     */
    boolean hasPort();
    /**
     * <pre>
     * Port is the port number of the service port of which status is recorded here
     * </pre>
     *
     * <code>optional int32 port = 1;</code>
     * @return The port.
     */
    int getPort();

    /**
     * <pre>
     * Protocol is the protocol of the service port of which status is recorded here
     * The supported values are: "TCP", "UDP", "SCTP"
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return Whether the protocol field is set.
     */
    boolean hasProtocol();
    /**
     * <pre>
     * Protocol is the protocol of the service port of which status is recorded here
     * The supported values are: "TCP", "UDP", "SCTP"
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return The protocol.
     */
    java.lang.String getProtocol();
    /**
     * <pre>
     * Protocol is the protocol of the service port of which status is recorded here
     * The supported values are: "TCP", "UDP", "SCTP"
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return The bytes for protocol.
     */
    com.google.protobuf.ByteString
        getProtocolBytes();

    /**
     * <pre>
     * Error is to record the problem with the service port
     * The format of the error shall comply with the following rules:
     * - built-in error values shall be specified in this file and those shall use
     * CamelCase names
     * - cloud provider specific error values must have names that comply with the
     * format foo.example.com/CamelCase.
     * ---
     * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
     * +optional
     * +kubebuilder:validation:Required
     * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
     * +kubebuilder:validation:MaxLength=316
     * </pre>
     *
     * <code>optional string error = 3;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Error is to record the problem with the service port
     * The format of the error shall comply with the following rules:
     * - built-in error values shall be specified in this file and those shall use
     * CamelCase names
     * - cloud provider specific error values must have names that comply with the
     * format foo.example.com/CamelCase.
     * ---
     * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
     * +optional
     * +kubebuilder:validation:Required
     * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
     * +kubebuilder:validation:MaxLength=316
     * </pre>
     *
     * <code>optional string error = 3;</code>
     * @return The error.
     */
    java.lang.String getError();
    /**
     * <pre>
     * Error is to record the problem with the service port
     * The format of the error shall comply with the following rules:
     * - built-in error values shall be specified in this file and those shall use
     * CamelCase names
     * - cloud provider specific error values must have names that comply with the
     * format foo.example.com/CamelCase.
     * ---
     * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
     * +optional
     * +kubebuilder:validation:Required
     * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
     * +kubebuilder:validation:MaxLength=316
     * </pre>
     *
     * <code>optional string error = 3;</code>
     * @return The bytes for error.
     */
    com.google.protobuf.ByteString
        getErrorBytes();
  }
  /**
   * Protobuf type {@code k8s.io.api.core.v1.PortStatus}
   */
  public static final class PortStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PortStatus)
      PortStatusOrBuilder {
  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= */ "",
        PortStatus.class.getName());
    }
    // Use PortStatus.newBuilder() to construct.
    private PortStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PortStatus() {
      protocol_ = "";
      error_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PortStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PortStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PortStatus.class, io.kubernetes.client.proto.V1.PortStatus.Builder.class);
    }

    private int bitField0_;
    public static final int PORT_FIELD_NUMBER = 1;
    private int port_ = 0;
    /**
     * <pre>
     * Port is the port number of the service port of which status is recorded here
     * </pre>
     *
     * <code>optional int32 port = 1;</code>
     * @return Whether the port field is set.
     */
    @java.lang.Override
    public boolean hasPort() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Port is the port number of the service port of which status is recorded here
     * </pre>
     *
     * <code>optional int32 port = 1;</code>
     * @return The port.
     */
    @java.lang.Override
    public int getPort() {
      return port_;
    }

    public static final int PROTOCOL_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object protocol_ = "";
    /**
     * <pre>
     * Protocol is the protocol of the service port of which status is recorded here
     * The supported values are: "TCP", "UDP", "SCTP"
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return Whether the protocol field is set.
     */
    @java.lang.Override
    public boolean hasProtocol() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Protocol is the protocol of the service port of which status is recorded here
     * The supported values are: "TCP", "UDP", "SCTP"
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return The protocol.
     */
    @java.lang.Override
    public java.lang.String getProtocol() {
      java.lang.Object ref = protocol_;
      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()) {
          protocol_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Protocol is the protocol of the service port of which status is recorded here
     * The supported values are: "TCP", "UDP", "SCTP"
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return The bytes for protocol.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getProtocolBytes() {
      java.lang.Object ref = protocol_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        protocol_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ERROR_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object error_ = "";
    /**
     * <pre>
     * Error is to record the problem with the service port
     * The format of the error shall comply with the following rules:
     * - built-in error values shall be specified in this file and those shall use
     * CamelCase names
     * - cloud provider specific error values must have names that comply with the
     * format foo.example.com/CamelCase.
     * ---
     * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
     * +optional
     * +kubebuilder:validation:Required
     * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
     * +kubebuilder:validation:MaxLength=316
     * </pre>
     *
     * <code>optional string error = 3;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Error is to record the problem with the service port
     * The format of the error shall comply with the following rules:
     * - built-in error values shall be specified in this file and those shall use
     * CamelCase names
     * - cloud provider specific error values must have names that comply with the
     * format foo.example.com/CamelCase.
     * ---
     * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
     * +optional
     * +kubebuilder:validation:Required
     * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
     * +kubebuilder:validation:MaxLength=316
     * </pre>
     *
     * <code>optional string error = 3;</code>
     * @return The error.
     */
    @java.lang.Override
    public java.lang.String getError() {
      java.lang.Object ref = error_;
      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()) {
          error_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Error is to record the problem with the service port
     * The format of the error shall comply with the following rules:
     * - built-in error values shall be specified in this file and those shall use
     * CamelCase names
     * - cloud provider specific error values must have names that comply with the
     * format foo.example.com/CamelCase.
     * ---
     * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
     * +optional
     * +kubebuilder:validation:Required
     * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
     * +kubebuilder:validation:MaxLength=316
     * </pre>
     *
     * <code>optional string error = 3;</code>
     * @return The bytes for error.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getErrorBytes() {
      java.lang.Object ref = error_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        error_ = 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)) {
        output.writeInt32(1, port_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, protocol_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, error_);
      }
      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
          .computeInt32Size(1, port_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, protocol_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, error_);
      }
      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.V1.PortStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PortStatus other = (io.kubernetes.client.proto.V1.PortStatus) obj;

      if (hasPort() != other.hasPort()) return false;
      if (hasPort()) {
        if (getPort()
            != other.getPort()) return false;
      }
      if (hasProtocol() != other.hasProtocol()) return false;
      if (hasProtocol()) {
        if (!getProtocol()
            .equals(other.getProtocol())) return false;
      }
      if (hasError() != other.hasError()) return false;
      if (hasError()) {
        if (!getError()
            .equals(other.getError())) 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 (hasPort()) {
        hash = (37 * hash) + PORT_FIELD_NUMBER;
        hash = (53 * hash) + getPort();
      }
      if (hasProtocol()) {
        hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
        hash = (53 * hash) + getProtocol().hashCode();
      }
      if (hasError()) {
        hash = (37 * hash) + ERROR_FIELD_NUMBER;
        hash = (53 * hash) + getError().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PortStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PortStatus 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.V1.PortStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PortStatus 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.V1.PortStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PortStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PortStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PortStatus 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.V1.PortStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PortStatus 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.V1.PortStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PortStatus 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.V1.PortStatus 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;
    }
    /**
     * Protobuf type {@code k8s.io.api.core.v1.PortStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PortStatus)
        io.kubernetes.client.proto.V1.PortStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PortStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PortStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PortStatus.class, io.kubernetes.client.proto.V1.PortStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PortStatus.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        port_ = 0;
        protocol_ = "";
        error_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PortStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PortStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PortStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PortStatus build() {
        io.kubernetes.client.proto.V1.PortStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PortStatus buildPartial() {
        io.kubernetes.client.proto.V1.PortStatus result = new io.kubernetes.client.proto.V1.PortStatus(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PortStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.port_ = port_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.protocol_ = protocol_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.error_ = error_;
          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.V1.PortStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.PortStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PortStatus other) {
        if (other == io.kubernetes.client.proto.V1.PortStatus.getDefaultInstance()) return this;
        if (other.hasPort()) {
          setPort(other.getPort());
        }
        if (other.hasProtocol()) {
          protocol_ = other.protocol_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasError()) {
          error_ = other.error_;
          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 8: {
                port_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                protocol_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                error_ = 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 int port_ ;
      /**
       * <pre>
       * Port is the port number of the service port of which status is recorded here
       * </pre>
       *
       * <code>optional int32 port = 1;</code>
       * @return Whether the port field is set.
       */
      @java.lang.Override
      public boolean hasPort() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Port is the port number of the service port of which status is recorded here
       * </pre>
       *
       * <code>optional int32 port = 1;</code>
       * @return The port.
       */
      @java.lang.Override
      public int getPort() {
        return port_;
      }
      /**
       * <pre>
       * Port is the port number of the service port of which status is recorded here
       * </pre>
       *
       * <code>optional int32 port = 1;</code>
       * @param value The port to set.
       * @return This builder for chaining.
       */
      public Builder setPort(int value) {

        port_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Port is the port number of the service port of which status is recorded here
       * </pre>
       *
       * <code>optional int32 port = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        bitField0_ = (bitField0_ & ~0x00000001);
        port_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object protocol_ = "";
      /**
       * <pre>
       * Protocol is the protocol of the service port of which status is recorded here
       * The supported values are: "TCP", "UDP", "SCTP"
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @return Whether the protocol field is set.
       */
      public boolean hasProtocol() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Protocol is the protocol of the service port of which status is recorded here
       * The supported values are: "TCP", "UDP", "SCTP"
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @return The protocol.
       */
      public java.lang.String getProtocol() {
        java.lang.Object ref = protocol_;
        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()) {
            protocol_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Protocol is the protocol of the service port of which status is recorded here
       * The supported values are: "TCP", "UDP", "SCTP"
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @return The bytes for protocol.
       */
      public com.google.protobuf.ByteString
          getProtocolBytes() {
        java.lang.Object ref = protocol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          protocol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Protocol is the protocol of the service port of which status is recorded here
       * The supported values are: "TCP", "UDP", "SCTP"
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @param value The protocol to set.
       * @return This builder for chaining.
       */
      public Builder setProtocol(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        protocol_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Protocol is the protocol of the service port of which status is recorded here
       * The supported values are: "TCP", "UDP", "SCTP"
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearProtocol() {
        protocol_ = getDefaultInstance().getProtocol();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Protocol is the protocol of the service port of which status is recorded here
       * The supported values are: "TCP", "UDP", "SCTP"
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @param value The bytes for protocol to set.
       * @return This builder for chaining.
       */
      public Builder setProtocolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        protocol_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object error_ = "";
      /**
       * <pre>
       * Error is to record the problem with the service port
       * The format of the error shall comply with the following rules:
       * - built-in error values shall be specified in this file and those shall use
       * CamelCase names
       * - cloud provider specific error values must have names that comply with the
       * format foo.example.com/CamelCase.
       * ---
       * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
       * +optional
       * +kubebuilder:validation:Required
       * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
       * +kubebuilder:validation:MaxLength=316
       * </pre>
       *
       * <code>optional string error = 3;</code>
       * @return Whether the error field is set.
       */
      public boolean hasError() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Error is to record the problem with the service port
       * The format of the error shall comply with the following rules:
       * - built-in error values shall be specified in this file and those shall use
       * CamelCase names
       * - cloud provider specific error values must have names that comply with the
       * format foo.example.com/CamelCase.
       * ---
       * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
       * +optional
       * +kubebuilder:validation:Required
       * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
       * +kubebuilder:validation:MaxLength=316
       * </pre>
       *
       * <code>optional string error = 3;</code>
       * @return The error.
       */
      public java.lang.String getError() {
        java.lang.Object ref = error_;
        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()) {
            error_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Error is to record the problem with the service port
       * The format of the error shall comply with the following rules:
       * - built-in error values shall be specified in this file and those shall use
       * CamelCase names
       * - cloud provider specific error values must have names that comply with the
       * format foo.example.com/CamelCase.
       * ---
       * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
       * +optional
       * +kubebuilder:validation:Required
       * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
       * +kubebuilder:validation:MaxLength=316
       * </pre>
       *
       * <code>optional string error = 3;</code>
       * @return The bytes for error.
       */
      public com.google.protobuf.ByteString
          getErrorBytes() {
        java.lang.Object ref = error_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          error_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Error is to record the problem with the service port
       * The format of the error shall comply with the following rules:
       * - built-in error values shall be specified in this file and those shall use
       * CamelCase names
       * - cloud provider specific error values must have names that comply with the
       * format foo.example.com/CamelCase.
       * ---
       * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
       * +optional
       * +kubebuilder:validation:Required
       * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
       * +kubebuilder:validation:MaxLength=316
       * </pre>
       *
       * <code>optional string error = 3;</code>
       * @param value The error to set.
       * @return This builder for chaining.
       */
      public Builder setError(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        error_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Error is to record the problem with the service port
       * The format of the error shall comply with the following rules:
       * - built-in error values shall be specified in this file and those shall use
       * CamelCase names
       * - cloud provider specific error values must have names that comply with the
       * format foo.example.com/CamelCase.
       * ---
       * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
       * +optional
       * +kubebuilder:validation:Required
       * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
       * +kubebuilder:validation:MaxLength=316
       * </pre>
       *
       * <code>optional string error = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearError() {
        error_ = getDefaultInstance().getError();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Error is to record the problem with the service port
       * The format of the error shall comply with the following rules:
       * - built-in error values shall be specified in this file and those shall use
       * CamelCase names
       * - cloud provider specific error values must have names that comply with the
       * format foo.example.com/CamelCase.
       * ---
       * The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
       * +optional
       * +kubebuilder:validation:Required
       * +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(&#92;.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*&#47;)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
       * +kubebuilder:validation:MaxLength=316
       * </pre>
       *
       * <code>optional string error = 3;</code>
       * @param value The bytes for error to set.
       * @return This builder for chaining.
       */
      public Builder setErrorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        error_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PortStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PortStatus)
    private static final io.kubernetes.client.proto.V1.PortStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PortStatus();
    }

    public static io.kubernetes.client.proto.V1.PortStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PortStatus>
        PARSER = new com.google.protobuf.AbstractParser<PortStatus>() {
      @java.lang.Override
      public PortStatus 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<PortStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PortStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PortStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PortworxVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PortworxVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * volumeID uniquely identifies a Portworx volume
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return Whether the volumeID field is set.
     */
    boolean hasVolumeID();
    /**
     * <pre>
     * volumeID uniquely identifies a Portworx volume
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The volumeID.
     */
    java.lang.String getVolumeID();
    /**
     * <pre>
     * volumeID uniquely identifies a Portworx volume
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The bytes for volumeID.
     */
    com.google.protobuf.ByteString
        getVolumeIDBytes();

    /**
     * <pre>
     * fSType represents the filesystem type to mount
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fSType represents the filesystem type to mount
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fSType represents the filesystem type to mount
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * PortworxVolumeSource represents a Portworx volume resource.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PortworxVolumeSource}
   */
  public static final class PortworxVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PortworxVolumeSource)
      PortworxVolumeSourceOrBuilder {
  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= */ "",
        PortworxVolumeSource.class.getName());
    }
    // Use PortworxVolumeSource.newBuilder() to construct.
    private PortworxVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PortworxVolumeSource() {
      volumeID_ = "";
      fsType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PortworxVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PortworxVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PortworxVolumeSource.class, io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int VOLUMEID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeID_ = "";
    /**
     * <pre>
     * volumeID uniquely identifies a Portworx volume
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return Whether the volumeID field is set.
     */
    @java.lang.Override
    public boolean hasVolumeID() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * volumeID uniquely identifies a Portworx volume
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The volumeID.
     */
    @java.lang.Override
    public java.lang.String getVolumeID() {
      java.lang.Object ref = volumeID_;
      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()) {
          volumeID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeID uniquely identifies a Portworx volume
     * </pre>
     *
     * <code>optional string volumeID = 1;</code>
     * @return The bytes for volumeID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeIDBytes() {
      java.lang.Object ref = volumeID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fSType represents the filesystem type to mount
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fSType represents the filesystem type to mount
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fSType represents the filesystem type to mount
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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, volumeID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      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, volumeID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      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.V1.PortworxVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PortworxVolumeSource other = (io.kubernetes.client.proto.V1.PortworxVolumeSource) obj;

      if (hasVolumeID() != other.hasVolumeID()) return false;
      if (hasVolumeID()) {
        if (!getVolumeID()
            .equals(other.getVolumeID())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (hasVolumeID()) {
        hash = (37 * hash) + VOLUMEID_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeID().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PortworxVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PortworxVolumeSource 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.V1.PortworxVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PortworxVolumeSource 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.V1.PortworxVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PortworxVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PortworxVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PortworxVolumeSource 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.V1.PortworxVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PortworxVolumeSource 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.V1.PortworxVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PortworxVolumeSource 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.V1.PortworxVolumeSource 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>
     * PortworxVolumeSource represents a Portworx volume resource.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PortworxVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PortworxVolumeSource)
        io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PortworxVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PortworxVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PortworxVolumeSource.class, io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PortworxVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        volumeID_ = "";
        fsType_ = "";
        readOnly_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PortworxVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PortworxVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PortworxVolumeSource build() {
        io.kubernetes.client.proto.V1.PortworxVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PortworxVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.PortworxVolumeSource result = new io.kubernetes.client.proto.V1.PortworxVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PortworxVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.volumeID_ = volumeID_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.PortworxVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.PortworxVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PortworxVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance()) return this;
        if (other.hasVolumeID()) {
          volumeID_ = other.volumeID_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        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: {
                volumeID_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object volumeID_ = "";
      /**
       * <pre>
       * volumeID uniquely identifies a Portworx volume
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return Whether the volumeID field is set.
       */
      public boolean hasVolumeID() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * volumeID uniquely identifies a Portworx volume
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return The volumeID.
       */
      public java.lang.String getVolumeID() {
        java.lang.Object ref = volumeID_;
        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()) {
            volumeID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeID uniquely identifies a Portworx volume
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return The bytes for volumeID.
       */
      public com.google.protobuf.ByteString
          getVolumeIDBytes() {
        java.lang.Object ref = volumeID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeID uniquely identifies a Portworx volume
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @param value The volumeID to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeID uniquely identifies a Portworx volume
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeID() {
        volumeID_ = getDefaultInstance().getVolumeID();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeID uniquely identifies a Portworx volume
       * </pre>
       *
       * <code>optional string volumeID = 1;</code>
       * @param value The bytes for volumeID to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeID_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fSType represents the filesystem type to mount
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * fSType represents the filesystem type to mount
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fSType represents the filesystem type to mount
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fSType represents the filesystem type to mount
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fSType represents the filesystem type to mount
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fSType represents the filesystem type to mount
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PortworxVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PortworxVolumeSource)
    private static final io.kubernetes.client.proto.V1.PortworxVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PortworxVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.PortworxVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PortworxVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<PortworxVolumeSource>() {
      @java.lang.Override
      public PortworxVolumeSource 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<PortworxVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PortworxVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PortworxVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PreconditionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Preconditions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Specifies the target UID.
     * +optional
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return Whether the uid field is set.
     */
    boolean hasUid();
    /**
     * <pre>
     * Specifies the target UID.
     * +optional
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return The uid.
     */
    java.lang.String getUid();
    /**
     * <pre>
     * Specifies the target UID.
     * +optional
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return The bytes for uid.
     */
    com.google.protobuf.ByteString
        getUidBytes();
  }
  /**
   * <pre>
   * Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.
   * +k8s:openapi-gen=false
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Preconditions}
   */
  public static final class Preconditions extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Preconditions)
      PreconditionsOrBuilder {
  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= */ "",
        Preconditions.class.getName());
    }
    // Use Preconditions.newBuilder() to construct.
    private Preconditions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Preconditions() {
      uid_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Preconditions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Preconditions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Preconditions.class, io.kubernetes.client.proto.V1.Preconditions.Builder.class);
    }

    private int bitField0_;
    public static final int UID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object uid_ = "";
    /**
     * <pre>
     * Specifies the target UID.
     * +optional
     * </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>
     * Specifies the target UID.
     * +optional
     * </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>
     * Specifies the target UID.
     * +optional
     * </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;
      }
    }

    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_);
      }
      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_);
      }
      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.V1.Preconditions)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Preconditions other = (io.kubernetes.client.proto.V1.Preconditions) obj;

      if (hasUid() != other.hasUid()) return false;
      if (hasUid()) {
        if (!getUid()
            .equals(other.getUid())) 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();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.Preconditions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Preconditions 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.V1.Preconditions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Preconditions 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.V1.Preconditions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Preconditions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Preconditions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Preconditions 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.V1.Preconditions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Preconditions 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.V1.Preconditions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Preconditions 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.V1.Preconditions 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>
     * Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.
     * +k8s:openapi-gen=false
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Preconditions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Preconditions)
        io.kubernetes.client.proto.V1.PreconditionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Preconditions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Preconditions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Preconditions.class, io.kubernetes.client.proto.V1.Preconditions.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Preconditions.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        uid_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Preconditions_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Preconditions getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Preconditions.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Preconditions build() {
        io.kubernetes.client.proto.V1.Preconditions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Preconditions buildPartial() {
        io.kubernetes.client.proto.V1.Preconditions result = new io.kubernetes.client.proto.V1.Preconditions(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Preconditions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.uid_ = uid_;
          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.V1.Preconditions) {
          return mergeFrom((io.kubernetes.client.proto.V1.Preconditions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Preconditions other) {
        if (other == io.kubernetes.client.proto.V1.Preconditions.getDefaultInstance()) return this;
        if (other.hasUid()) {
          uid_ = other.uid_;
          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: {
                uid_ = 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 uid_ = "";
      /**
       * <pre>
       * Specifies the target UID.
       * +optional
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @return Whether the uid field is set.
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Specifies the target UID.
       * +optional
       * </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>
       * Specifies the target UID.
       * +optional
       * </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>
       * Specifies the target UID.
       * +optional
       * </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>
       * Specifies the target UID.
       * +optional
       * </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>
       * Specifies the target UID.
       * +optional
       * </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;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Preconditions)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Preconditions)
    private static final io.kubernetes.client.proto.V1.Preconditions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Preconditions();
    }

    public static io.kubernetes.client.proto.V1.Preconditions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Preconditions>
        PARSER = new com.google.protobuf.AbstractParser<Preconditions>() {
      @java.lang.Override
      public Preconditions 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<Preconditions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Preconditions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Preconditions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PreferAvoidPodsEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PreferAvoidPodsEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The class of pods.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
     * @return Whether the podSignature field is set.
     */
    boolean hasPodSignature();
    /**
     * <pre>
     * The class of pods.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
     * @return The podSignature.
     */
    io.kubernetes.client.proto.V1.PodSignature getPodSignature();
    /**
     * <pre>
     * The class of pods.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
     */
    io.kubernetes.client.proto.V1.PodSignatureOrBuilder getPodSignatureOrBuilder();

    /**
     * <pre>
     * Time at which this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
     * @return Whether the evictionTime field is set.
     */
    boolean hasEvictionTime();
    /**
     * <pre>
     * Time at which this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
     * @return The evictionTime.
     */
    io.kubernetes.client.proto.Meta.Time getEvictionTime();
    /**
     * <pre>
     * Time at which this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getEvictionTimeOrBuilder();

    /**
     * <pre>
     * (brief) reason why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * (brief) reason why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * (brief) reason why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * Human readable message indicating why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * Human readable message indicating why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * Human readable message indicating why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * <pre>
   * Describes a class of pods that should avoid this node.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PreferAvoidPodsEntry}
   */
  public static final class PreferAvoidPodsEntry extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PreferAvoidPodsEntry)
      PreferAvoidPodsEntryOrBuilder {
  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= */ "",
        PreferAvoidPodsEntry.class.getName());
    }
    // Use PreferAvoidPodsEntry.newBuilder() to construct.
    private PreferAvoidPodsEntry(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PreferAvoidPodsEntry() {
      reason_ = "";
      message_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PreferAvoidPodsEntry_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PreferAvoidPodsEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.class, io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder.class);
    }

    private int bitField0_;
    public static final int PODSIGNATURE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.PodSignature podSignature_;
    /**
     * <pre>
     * The class of pods.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
     * @return Whether the podSignature field is set.
     */
    @java.lang.Override
    public boolean hasPodSignature() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The class of pods.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
     * @return The podSignature.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSignature getPodSignature() {
      return podSignature_ == null ? io.kubernetes.client.proto.V1.PodSignature.getDefaultInstance() : podSignature_;
    }
    /**
     * <pre>
     * The class of pods.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodSignatureOrBuilder getPodSignatureOrBuilder() {
      return podSignature_ == null ? io.kubernetes.client.proto.V1.PodSignature.getDefaultInstance() : podSignature_;
    }

    public static final int EVICTIONTIME_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.Meta.Time evictionTime_;
    /**
     * <pre>
     * Time at which this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
     * @return Whether the evictionTime field is set.
     */
    @java.lang.Override
    public boolean hasEvictionTime() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Time at which this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
     * @return The evictionTime.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getEvictionTime() {
      return evictionTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : evictionTime_;
    }
    /**
     * <pre>
     * Time at which this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getEvictionTimeOrBuilder() {
      return evictionTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : evictionTime_;
    }

    public static final int REASON_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * (brief) reason why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * (brief) reason why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</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>
     * (brief) reason why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 3;</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 = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * Human readable message indicating why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Human readable message indicating why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</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>
     * Human readable message indicating why this entry was added to the list.
     * +optional
     * </pre>
     *
     * <code>optional string message = 4;</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)) {
        output.writeMessage(1, getPodSignature());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getEvictionTime());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, reason_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, 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.CodedOutputStream
          .computeMessageSize(1, getPodSignature());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getEvictionTime());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, reason_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, 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.V1.PreferAvoidPodsEntry)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PreferAvoidPodsEntry other = (io.kubernetes.client.proto.V1.PreferAvoidPodsEntry) obj;

      if (hasPodSignature() != other.hasPodSignature()) return false;
      if (hasPodSignature()) {
        if (!getPodSignature()
            .equals(other.getPodSignature())) return false;
      }
      if (hasEvictionTime() != other.hasEvictionTime()) return false;
      if (hasEvictionTime()) {
        if (!getEvictionTime()
            .equals(other.getEvictionTime())) 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 (hasPodSignature()) {
        hash = (37 * hash) + PODSIGNATURE_FIELD_NUMBER;
        hash = (53 * hash) + getPodSignature().hashCode();
      }
      if (hasEvictionTime()) {
        hash = (37 * hash) + EVICTIONTIME_FIELD_NUMBER;
        hash = (53 * hash) + getEvictionTime().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.V1.PreferAvoidPodsEntry parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PreferAvoidPodsEntry 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.V1.PreferAvoidPodsEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PreferAvoidPodsEntry 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.V1.PreferAvoidPodsEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PreferAvoidPodsEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PreferAvoidPodsEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PreferAvoidPodsEntry 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.V1.PreferAvoidPodsEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PreferAvoidPodsEntry 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.V1.PreferAvoidPodsEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PreferAvoidPodsEntry 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.V1.PreferAvoidPodsEntry 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>
     * Describes a class of pods that should avoid this node.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PreferAvoidPodsEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PreferAvoidPodsEntry)
        io.kubernetes.client.proto.V1.PreferAvoidPodsEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PreferAvoidPodsEntry_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PreferAvoidPodsEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.class, io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPodSignatureFieldBuilder();
          getEvictionTimeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        podSignature_ = null;
        if (podSignatureBuilder_ != null) {
          podSignatureBuilder_.dispose();
          podSignatureBuilder_ = null;
        }
        evictionTime_ = null;
        if (evictionTimeBuilder_ != null) {
          evictionTimeBuilder_.dispose();
          evictionTimeBuilder_ = null;
        }
        reason_ = "";
        message_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PreferAvoidPodsEntry_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PreferAvoidPodsEntry getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PreferAvoidPodsEntry build() {
        io.kubernetes.client.proto.V1.PreferAvoidPodsEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PreferAvoidPodsEntry buildPartial() {
        io.kubernetes.client.proto.V1.PreferAvoidPodsEntry result = new io.kubernetes.client.proto.V1.PreferAvoidPodsEntry(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PreferAvoidPodsEntry result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.podSignature_ = podSignatureBuilder_ == null
              ? podSignature_
              : podSignatureBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.evictionTime_ = evictionTimeBuilder_ == null
              ? evictionTime_
              : evictionTimeBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.message_ = message_;
          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.V1.PreferAvoidPodsEntry) {
          return mergeFrom((io.kubernetes.client.proto.V1.PreferAvoidPodsEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PreferAvoidPodsEntry other) {
        if (other == io.kubernetes.client.proto.V1.PreferAvoidPodsEntry.getDefaultInstance()) return this;
        if (other.hasPodSignature()) {
          mergePodSignature(other.getPodSignature());
        }
        if (other.hasEvictionTime()) {
          mergeEvictionTime(other.getEvictionTime());
        }
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getPodSignatureFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getEvictionTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                reason_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                message_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.V1.PodSignature podSignature_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodSignature, io.kubernetes.client.proto.V1.PodSignature.Builder, io.kubernetes.client.proto.V1.PodSignatureOrBuilder> podSignatureBuilder_;
      /**
       * <pre>
       * The class of pods.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
       * @return Whether the podSignature field is set.
       */
      public boolean hasPodSignature() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The class of pods.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
       * @return The podSignature.
       */
      public io.kubernetes.client.proto.V1.PodSignature getPodSignature() {
        if (podSignatureBuilder_ == null) {
          return podSignature_ == null ? io.kubernetes.client.proto.V1.PodSignature.getDefaultInstance() : podSignature_;
        } else {
          return podSignatureBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The class of pods.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
       */
      public Builder setPodSignature(io.kubernetes.client.proto.V1.PodSignature value) {
        if (podSignatureBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          podSignature_ = value;
        } else {
          podSignatureBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The class of pods.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
       */
      public Builder setPodSignature(
          io.kubernetes.client.proto.V1.PodSignature.Builder builderForValue) {
        if (podSignatureBuilder_ == null) {
          podSignature_ = builderForValue.build();
        } else {
          podSignatureBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The class of pods.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
       */
      public Builder mergePodSignature(io.kubernetes.client.proto.V1.PodSignature value) {
        if (podSignatureBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            podSignature_ != null &&
            podSignature_ != io.kubernetes.client.proto.V1.PodSignature.getDefaultInstance()) {
            getPodSignatureBuilder().mergeFrom(value);
          } else {
            podSignature_ = value;
          }
        } else {
          podSignatureBuilder_.mergeFrom(value);
        }
        if (podSignature_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The class of pods.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
       */
      public Builder clearPodSignature() {
        bitField0_ = (bitField0_ & ~0x00000001);
        podSignature_ = null;
        if (podSignatureBuilder_ != null) {
          podSignatureBuilder_.dispose();
          podSignatureBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The class of pods.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodSignature.Builder getPodSignatureBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPodSignatureFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The class of pods.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
       */
      public io.kubernetes.client.proto.V1.PodSignatureOrBuilder getPodSignatureOrBuilder() {
        if (podSignatureBuilder_ != null) {
          return podSignatureBuilder_.getMessageOrBuilder();
        } else {
          return podSignature_ == null ?
              io.kubernetes.client.proto.V1.PodSignature.getDefaultInstance() : podSignature_;
        }
      }
      /**
       * <pre>
       * The class of pods.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodSignature podSignature = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodSignature, io.kubernetes.client.proto.V1.PodSignature.Builder, io.kubernetes.client.proto.V1.PodSignatureOrBuilder> 
          getPodSignatureFieldBuilder() {
        if (podSignatureBuilder_ == null) {
          podSignatureBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodSignature, io.kubernetes.client.proto.V1.PodSignature.Builder, io.kubernetes.client.proto.V1.PodSignatureOrBuilder>(
                  getPodSignature(),
                  getParentForChildren(),
                  isClean());
          podSignature_ = null;
        }
        return podSignatureBuilder_;
      }

      private io.kubernetes.client.proto.Meta.Time evictionTime_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> evictionTimeBuilder_;
      /**
       * <pre>
       * Time at which this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
       * @return Whether the evictionTime field is set.
       */
      public boolean hasEvictionTime() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Time at which this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
       * @return The evictionTime.
       */
      public io.kubernetes.client.proto.Meta.Time getEvictionTime() {
        if (evictionTimeBuilder_ == null) {
          return evictionTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : evictionTime_;
        } else {
          return evictionTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Time at which this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
       */
      public Builder setEvictionTime(io.kubernetes.client.proto.Meta.Time value) {
        if (evictionTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          evictionTime_ = value;
        } else {
          evictionTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
       */
      public Builder setEvictionTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (evictionTimeBuilder_ == null) {
          evictionTime_ = builderForValue.build();
        } else {
          evictionTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
       */
      public Builder mergeEvictionTime(io.kubernetes.client.proto.Meta.Time value) {
        if (evictionTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            evictionTime_ != null &&
            evictionTime_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getEvictionTimeBuilder().mergeFrom(value);
          } else {
            evictionTime_ = value;
          }
        } else {
          evictionTimeBuilder_.mergeFrom(value);
        }
        if (evictionTime_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Time at which this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
       */
      public Builder clearEvictionTime() {
        bitField0_ = (bitField0_ & ~0x00000002);
        evictionTime_ = null;
        if (evictionTimeBuilder_ != null) {
          evictionTimeBuilder_.dispose();
          evictionTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getEvictionTimeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getEvictionTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Time at which this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getEvictionTimeOrBuilder() {
        if (evictionTimeBuilder_ != null) {
          return evictionTimeBuilder_.getMessageOrBuilder();
        } else {
          return evictionTime_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : evictionTime_;
        }
      }
      /**
       * <pre>
       * Time at which this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;</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> 
          getEvictionTimeFieldBuilder() {
        if (evictionTimeBuilder_ == null) {
          evictionTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getEvictionTime(),
                  getParentForChildren(),
                  isClean());
          evictionTime_ = null;
        }
        return evictionTimeBuilder_;
      }

      private java.lang.Object reason_ = "";
      /**
       * <pre>
       * (brief) reason why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * (brief) reason why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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>
       * (brief) reason why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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>
       * (brief) reason why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * (brief) reason why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * (brief) reason why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * Human readable message indicating why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Human readable message indicating why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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>
       * Human readable message indicating why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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>
       * Human readable message indicating why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Human readable message indicating why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Human readable message indicating why this entry was added to the list.
       * +optional
       * </pre>
       *
       * <code>optional string message = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PreferAvoidPodsEntry)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PreferAvoidPodsEntry)
    private static final io.kubernetes.client.proto.V1.PreferAvoidPodsEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PreferAvoidPodsEntry();
    }

    public static io.kubernetes.client.proto.V1.PreferAvoidPodsEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PreferAvoidPodsEntry>
        PARSER = new com.google.protobuf.AbstractParser<PreferAvoidPodsEntry>() {
      @java.lang.Override
      public PreferAvoidPodsEntry 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<PreferAvoidPodsEntry> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PreferAvoidPodsEntry> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PreferAvoidPodsEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PreferredSchedulingTermOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.PreferredSchedulingTerm)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
     * </pre>
     *
     * <code>optional int32 weight = 1;</code>
     * @return Whether the weight field is set.
     */
    boolean hasWeight();
    /**
     * <pre>
     * Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
     * </pre>
     *
     * <code>optional int32 weight = 1;</code>
     * @return The weight.
     */
    int getWeight();

    /**
     * <pre>
     * A node selector term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
     * @return Whether the preference field is set.
     */
    boolean hasPreference();
    /**
     * <pre>
     * A node selector term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
     * @return The preference.
     */
    io.kubernetes.client.proto.V1.NodeSelectorTerm getPreference();
    /**
     * <pre>
     * A node selector term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
     */
    io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder getPreferenceOrBuilder();
  }
  /**
   * <pre>
   * An empty preferred scheduling term matches all objects with implicit weight 0
   * (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.PreferredSchedulingTerm}
   */
  public static final class PreferredSchedulingTerm extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.PreferredSchedulingTerm)
      PreferredSchedulingTermOrBuilder {
  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= */ "",
        PreferredSchedulingTerm.class.getName());
    }
    // Use PreferredSchedulingTerm.newBuilder() to construct.
    private PreferredSchedulingTerm(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private PreferredSchedulingTerm() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PreferredSchedulingTerm_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PreferredSchedulingTerm_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.PreferredSchedulingTerm.class, io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder.class);
    }

    private int bitField0_;
    public static final int WEIGHT_FIELD_NUMBER = 1;
    private int weight_ = 0;
    /**
     * <pre>
     * Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
     * </pre>
     *
     * <code>optional int32 weight = 1;</code>
     * @return Whether the weight field is set.
     */
    @java.lang.Override
    public boolean hasWeight() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
     * </pre>
     *
     * <code>optional int32 weight = 1;</code>
     * @return The weight.
     */
    @java.lang.Override
    public int getWeight() {
      return weight_;
    }

    public static final int PREFERENCE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.NodeSelectorTerm preference_;
    /**
     * <pre>
     * A node selector term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
     * @return Whether the preference field is set.
     */
    @java.lang.Override
    public boolean hasPreference() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * A node selector term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
     * @return The preference.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorTerm getPreference() {
      return preference_ == null ? io.kubernetes.client.proto.V1.NodeSelectorTerm.getDefaultInstance() : preference_;
    }
    /**
     * <pre>
     * A node selector term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder getPreferenceOrBuilder() {
      return preference_ == null ? io.kubernetes.client.proto.V1.NodeSelectorTerm.getDefaultInstance() : preference_;
    }

    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.writeInt32(1, weight_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getPreference());
      }
      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
          .computeInt32Size(1, weight_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPreference());
      }
      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.V1.PreferredSchedulingTerm)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.PreferredSchedulingTerm other = (io.kubernetes.client.proto.V1.PreferredSchedulingTerm) obj;

      if (hasWeight() != other.hasWeight()) return false;
      if (hasWeight()) {
        if (getWeight()
            != other.getWeight()) return false;
      }
      if (hasPreference() != other.hasPreference()) return false;
      if (hasPreference()) {
        if (!getPreference()
            .equals(other.getPreference())) 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 (hasWeight()) {
        hash = (37 * hash) + WEIGHT_FIELD_NUMBER;
        hash = (53 * hash) + getWeight();
      }
      if (hasPreference()) {
        hash = (37 * hash) + PREFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getPreference().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.PreferredSchedulingTerm parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PreferredSchedulingTerm 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.V1.PreferredSchedulingTerm parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PreferredSchedulingTerm 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.V1.PreferredSchedulingTerm parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.PreferredSchedulingTerm parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.PreferredSchedulingTerm parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PreferredSchedulingTerm 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.V1.PreferredSchedulingTerm parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.PreferredSchedulingTerm 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.V1.PreferredSchedulingTerm parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.PreferredSchedulingTerm 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.V1.PreferredSchedulingTerm 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>
     * An empty preferred scheduling term matches all objects with implicit weight 0
     * (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.PreferredSchedulingTerm}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.PreferredSchedulingTerm)
        io.kubernetes.client.proto.V1.PreferredSchedulingTermOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PreferredSchedulingTerm_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PreferredSchedulingTerm_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.PreferredSchedulingTerm.class, io.kubernetes.client.proto.V1.PreferredSchedulingTerm.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.PreferredSchedulingTerm.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPreferenceFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        weight_ = 0;
        preference_ = null;
        if (preferenceBuilder_ != null) {
          preferenceBuilder_.dispose();
          preferenceBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_PreferredSchedulingTerm_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PreferredSchedulingTerm getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.PreferredSchedulingTerm.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PreferredSchedulingTerm build() {
        io.kubernetes.client.proto.V1.PreferredSchedulingTerm result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.PreferredSchedulingTerm buildPartial() {
        io.kubernetes.client.proto.V1.PreferredSchedulingTerm result = new io.kubernetes.client.proto.V1.PreferredSchedulingTerm(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.PreferredSchedulingTerm result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.weight_ = weight_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.preference_ = preferenceBuilder_ == null
              ? preference_
              : preferenceBuilder_.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.V1.PreferredSchedulingTerm) {
          return mergeFrom((io.kubernetes.client.proto.V1.PreferredSchedulingTerm)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.PreferredSchedulingTerm other) {
        if (other == io.kubernetes.client.proto.V1.PreferredSchedulingTerm.getDefaultInstance()) return this;
        if (other.hasWeight()) {
          setWeight(other.getWeight());
        }
        if (other.hasPreference()) {
          mergePreference(other.getPreference());
        }
        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: {
                weight_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getPreferenceFieldBuilder().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 int weight_ ;
      /**
       * <pre>
       * Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
       * </pre>
       *
       * <code>optional int32 weight = 1;</code>
       * @return Whether the weight field is set.
       */
      @java.lang.Override
      public boolean hasWeight() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
       * </pre>
       *
       * <code>optional int32 weight = 1;</code>
       * @return The weight.
       */
      @java.lang.Override
      public int getWeight() {
        return weight_;
      }
      /**
       * <pre>
       * Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
       * </pre>
       *
       * <code>optional int32 weight = 1;</code>
       * @param value The weight to set.
       * @return This builder for chaining.
       */
      public Builder setWeight(int value) {

        weight_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
       * </pre>
       *
       * <code>optional int32 weight = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearWeight() {
        bitField0_ = (bitField0_ & ~0x00000001);
        weight_ = 0;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.NodeSelectorTerm preference_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelectorTerm, io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder, io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder> preferenceBuilder_;
      /**
       * <pre>
       * A node selector term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
       * @return Whether the preference field is set.
       */
      public boolean hasPreference() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * A node selector term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
       * @return The preference.
       */
      public io.kubernetes.client.proto.V1.NodeSelectorTerm getPreference() {
        if (preferenceBuilder_ == null) {
          return preference_ == null ? io.kubernetes.client.proto.V1.NodeSelectorTerm.getDefaultInstance() : preference_;
        } else {
          return preferenceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A node selector term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
       */
      public Builder setPreference(io.kubernetes.client.proto.V1.NodeSelectorTerm value) {
        if (preferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          preference_ = value;
        } else {
          preferenceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A node selector term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
       */
      public Builder setPreference(
          io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder builderForValue) {
        if (preferenceBuilder_ == null) {
          preference_ = builderForValue.build();
        } else {
          preferenceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A node selector term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
       */
      public Builder mergePreference(io.kubernetes.client.proto.V1.NodeSelectorTerm value) {
        if (preferenceBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            preference_ != null &&
            preference_ != io.kubernetes.client.proto.V1.NodeSelectorTerm.getDefaultInstance()) {
            getPreferenceBuilder().mergeFrom(value);
          } else {
            preference_ = value;
          }
        } else {
          preferenceBuilder_.mergeFrom(value);
        }
        if (preference_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * A node selector term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
       */
      public Builder clearPreference() {
        bitField0_ = (bitField0_ & ~0x00000002);
        preference_ = null;
        if (preferenceBuilder_ != null) {
          preferenceBuilder_.dispose();
          preferenceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A node selector term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder getPreferenceBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPreferenceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A node selector term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder getPreferenceOrBuilder() {
        if (preferenceBuilder_ != null) {
          return preferenceBuilder_.getMessageOrBuilder();
        } else {
          return preference_ == null ?
              io.kubernetes.client.proto.V1.NodeSelectorTerm.getDefaultInstance() : preference_;
        }
      }
      /**
       * <pre>
       * A node selector term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelectorTerm preference = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelectorTerm, io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder, io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder> 
          getPreferenceFieldBuilder() {
        if (preferenceBuilder_ == null) {
          preferenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeSelectorTerm, io.kubernetes.client.proto.V1.NodeSelectorTerm.Builder, io.kubernetes.client.proto.V1.NodeSelectorTermOrBuilder>(
                  getPreference(),
                  getParentForChildren(),
                  isClean());
          preference_ = null;
        }
        return preferenceBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.PreferredSchedulingTerm)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.PreferredSchedulingTerm)
    private static final io.kubernetes.client.proto.V1.PreferredSchedulingTerm DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.PreferredSchedulingTerm();
    }

    public static io.kubernetes.client.proto.V1.PreferredSchedulingTerm getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PreferredSchedulingTerm>
        PARSER = new com.google.protobuf.AbstractParser<PreferredSchedulingTerm>() {
      @java.lang.Override
      public PreferredSchedulingTerm 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<PreferredSchedulingTerm> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PreferredSchedulingTerm> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.PreferredSchedulingTerm getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ProbeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Probe)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The action taken to determine the health of a container
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
     * @return Whether the handler field is set.
     */
    boolean hasHandler();
    /**
     * <pre>
     * The action taken to determine the health of a container
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
     * @return The handler.
     */
    io.kubernetes.client.proto.V1.ProbeHandler getHandler();
    /**
     * <pre>
     * The action taken to determine the health of a container
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
     */
    io.kubernetes.client.proto.V1.ProbeHandlerOrBuilder getHandlerOrBuilder();

    /**
     * <pre>
     * Number of seconds after the container has started before liveness probes are initiated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional int32 initialDelaySeconds = 2;</code>
     * @return Whether the initialDelaySeconds field is set.
     */
    boolean hasInitialDelaySeconds();
    /**
     * <pre>
     * Number of seconds after the container has started before liveness probes are initiated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional int32 initialDelaySeconds = 2;</code>
     * @return The initialDelaySeconds.
     */
    int getInitialDelaySeconds();

    /**
     * <pre>
     * Number of seconds after which the probe times out.
     * Defaults to 1 second. Minimum value is 1.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional int32 timeoutSeconds = 3;</code>
     * @return Whether the timeoutSeconds field is set.
     */
    boolean hasTimeoutSeconds();
    /**
     * <pre>
     * Number of seconds after which the probe times out.
     * Defaults to 1 second. Minimum value is 1.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional int32 timeoutSeconds = 3;</code>
     * @return The timeoutSeconds.
     */
    int getTimeoutSeconds();

    /**
     * <pre>
     * How often (in seconds) to perform the probe.
     * Default to 10 seconds. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 periodSeconds = 4;</code>
     * @return Whether the periodSeconds field is set.
     */
    boolean hasPeriodSeconds();
    /**
     * <pre>
     * How often (in seconds) to perform the probe.
     * Default to 10 seconds. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 periodSeconds = 4;</code>
     * @return The periodSeconds.
     */
    int getPeriodSeconds();

    /**
     * <pre>
     * Minimum consecutive successes for the probe to be considered successful after having failed.
     * Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 successThreshold = 5;</code>
     * @return Whether the successThreshold field is set.
     */
    boolean hasSuccessThreshold();
    /**
     * <pre>
     * Minimum consecutive successes for the probe to be considered successful after having failed.
     * Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 successThreshold = 5;</code>
     * @return The successThreshold.
     */
    int getSuccessThreshold();

    /**
     * <pre>
     * Minimum consecutive failures for the probe to be considered failed after having succeeded.
     * Defaults to 3. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 failureThreshold = 6;</code>
     * @return Whether the failureThreshold field is set.
     */
    boolean hasFailureThreshold();
    /**
     * <pre>
     * Minimum consecutive failures for the probe to be considered failed after having succeeded.
     * Defaults to 3. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 failureThreshold = 6;</code>
     * @return The failureThreshold.
     */
    int getFailureThreshold();

    /**
     * <pre>
     * Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
     * The grace period is the duration in seconds after the processes running in the pod are sent
     * a termination signal and the time when the processes are forcibly halted with a kill signal.
     * Set this value longer than the expected cleanup time for your process.
     * If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
     * value overrides the value provided by the pod spec.
     * Value must be non-negative integer. The value zero indicates stop immediately via
     * the kill signal (no opportunity to shut down).
     * This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
     * Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
     * +optional
     * </pre>
     *
     * <code>optional int64 terminationGracePeriodSeconds = 7;</code>
     * @return Whether the terminationGracePeriodSeconds field is set.
     */
    boolean hasTerminationGracePeriodSeconds();
    /**
     * <pre>
     * Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
     * The grace period is the duration in seconds after the processes running in the pod are sent
     * a termination signal and the time when the processes are forcibly halted with a kill signal.
     * Set this value longer than the expected cleanup time for your process.
     * If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
     * value overrides the value provided by the pod spec.
     * Value must be non-negative integer. The value zero indicates stop immediately via
     * the kill signal (no opportunity to shut down).
     * This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
     * Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
     * +optional
     * </pre>
     *
     * <code>optional int64 terminationGracePeriodSeconds = 7;</code>
     * @return The terminationGracePeriodSeconds.
     */
    long getTerminationGracePeriodSeconds();
  }
  /**
   * <pre>
   * Probe describes a health check to be performed against a container to determine whether it is
   * alive or ready to receive traffic.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Probe}
   */
  public static final class Probe extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Probe)
      ProbeOrBuilder {
  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= */ "",
        Probe.class.getName());
    }
    // Use Probe.newBuilder() to construct.
    private Probe(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Probe() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Probe_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Probe_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Probe.class, io.kubernetes.client.proto.V1.Probe.Builder.class);
    }

    private int bitField0_;
    public static final int HANDLER_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.ProbeHandler handler_;
    /**
     * <pre>
     * The action taken to determine the health of a container
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
     * @return Whether the handler field is set.
     */
    @java.lang.Override
    public boolean hasHandler() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The action taken to determine the health of a container
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
     * @return The handler.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProbeHandler getHandler() {
      return handler_ == null ? io.kubernetes.client.proto.V1.ProbeHandler.getDefaultInstance() : handler_;
    }
    /**
     * <pre>
     * The action taken to determine the health of a container
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProbeHandlerOrBuilder getHandlerOrBuilder() {
      return handler_ == null ? io.kubernetes.client.proto.V1.ProbeHandler.getDefaultInstance() : handler_;
    }

    public static final int INITIALDELAYSECONDS_FIELD_NUMBER = 2;
    private int initialDelaySeconds_ = 0;
    /**
     * <pre>
     * Number of seconds after the container has started before liveness probes are initiated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional int32 initialDelaySeconds = 2;</code>
     * @return Whether the initialDelaySeconds field is set.
     */
    @java.lang.Override
    public boolean hasInitialDelaySeconds() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Number of seconds after the container has started before liveness probes are initiated.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional int32 initialDelaySeconds = 2;</code>
     * @return The initialDelaySeconds.
     */
    @java.lang.Override
    public int getInitialDelaySeconds() {
      return initialDelaySeconds_;
    }

    public static final int TIMEOUTSECONDS_FIELD_NUMBER = 3;
    private int timeoutSeconds_ = 0;
    /**
     * <pre>
     * Number of seconds after which the probe times out.
     * Defaults to 1 second. Minimum value is 1.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional int32 timeoutSeconds = 3;</code>
     * @return Whether the timeoutSeconds field is set.
     */
    @java.lang.Override
    public boolean hasTimeoutSeconds() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Number of seconds after which the probe times out.
     * Defaults to 1 second. Minimum value is 1.
     * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
     * +optional
     * </pre>
     *
     * <code>optional int32 timeoutSeconds = 3;</code>
     * @return The timeoutSeconds.
     */
    @java.lang.Override
    public int getTimeoutSeconds() {
      return timeoutSeconds_;
    }

    public static final int PERIODSECONDS_FIELD_NUMBER = 4;
    private int periodSeconds_ = 0;
    /**
     * <pre>
     * How often (in seconds) to perform the probe.
     * Default to 10 seconds. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 periodSeconds = 4;</code>
     * @return Whether the periodSeconds field is set.
     */
    @java.lang.Override
    public boolean hasPeriodSeconds() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * How often (in seconds) to perform the probe.
     * Default to 10 seconds. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 periodSeconds = 4;</code>
     * @return The periodSeconds.
     */
    @java.lang.Override
    public int getPeriodSeconds() {
      return periodSeconds_;
    }

    public static final int SUCCESSTHRESHOLD_FIELD_NUMBER = 5;
    private int successThreshold_ = 0;
    /**
     * <pre>
     * Minimum consecutive successes for the probe to be considered successful after having failed.
     * Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 successThreshold = 5;</code>
     * @return Whether the successThreshold field is set.
     */
    @java.lang.Override
    public boolean hasSuccessThreshold() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * Minimum consecutive successes for the probe to be considered successful after having failed.
     * Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 successThreshold = 5;</code>
     * @return The successThreshold.
     */
    @java.lang.Override
    public int getSuccessThreshold() {
      return successThreshold_;
    }

    public static final int FAILURETHRESHOLD_FIELD_NUMBER = 6;
    private int failureThreshold_ = 0;
    /**
     * <pre>
     * Minimum consecutive failures for the probe to be considered failed after having succeeded.
     * Defaults to 3. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 failureThreshold = 6;</code>
     * @return Whether the failureThreshold field is set.
     */
    @java.lang.Override
    public boolean hasFailureThreshold() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Minimum consecutive failures for the probe to be considered failed after having succeeded.
     * Defaults to 3. Minimum value is 1.
     * +optional
     * </pre>
     *
     * <code>optional int32 failureThreshold = 6;</code>
     * @return The failureThreshold.
     */
    @java.lang.Override
    public int getFailureThreshold() {
      return failureThreshold_;
    }

    public static final int TERMINATIONGRACEPERIODSECONDS_FIELD_NUMBER = 7;
    private long terminationGracePeriodSeconds_ = 0L;
    /**
     * <pre>
     * Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
     * The grace period is the duration in seconds after the processes running in the pod are sent
     * a termination signal and the time when the processes are forcibly halted with a kill signal.
     * Set this value longer than the expected cleanup time for your process.
     * If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
     * value overrides the value provided by the pod spec.
     * Value must be non-negative integer. The value zero indicates stop immediately via
     * the kill signal (no opportunity to shut down).
     * This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
     * Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
     * +optional
     * </pre>
     *
     * <code>optional int64 terminationGracePeriodSeconds = 7;</code>
     * @return Whether the terminationGracePeriodSeconds field is set.
     */
    @java.lang.Override
    public boolean hasTerminationGracePeriodSeconds() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
     * The grace period is the duration in seconds after the processes running in the pod are sent
     * a termination signal and the time when the processes are forcibly halted with a kill signal.
     * Set this value longer than the expected cleanup time for your process.
     * If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
     * value overrides the value provided by the pod spec.
     * Value must be non-negative integer. The value zero indicates stop immediately via
     * the kill signal (no opportunity to shut down).
     * This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
     * Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
     * +optional
     * </pre>
     *
     * <code>optional int64 terminationGracePeriodSeconds = 7;</code>
     * @return The terminationGracePeriodSeconds.
     */
    @java.lang.Override
    public long getTerminationGracePeriodSeconds() {
      return terminationGracePeriodSeconds_;
    }

    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, getHandler());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, initialDelaySeconds_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, timeoutSeconds_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt32(4, periodSeconds_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt32(5, successThreshold_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeInt32(6, failureThreshold_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeInt64(7, terminationGracePeriodSeconds_);
      }
      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, getHandler());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, initialDelaySeconds_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, timeoutSeconds_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, periodSeconds_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, successThreshold_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, failureThreshold_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, terminationGracePeriodSeconds_);
      }
      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.V1.Probe)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Probe other = (io.kubernetes.client.proto.V1.Probe) obj;

      if (hasHandler() != other.hasHandler()) return false;
      if (hasHandler()) {
        if (!getHandler()
            .equals(other.getHandler())) return false;
      }
      if (hasInitialDelaySeconds() != other.hasInitialDelaySeconds()) return false;
      if (hasInitialDelaySeconds()) {
        if (getInitialDelaySeconds()
            != other.getInitialDelaySeconds()) return false;
      }
      if (hasTimeoutSeconds() != other.hasTimeoutSeconds()) return false;
      if (hasTimeoutSeconds()) {
        if (getTimeoutSeconds()
            != other.getTimeoutSeconds()) return false;
      }
      if (hasPeriodSeconds() != other.hasPeriodSeconds()) return false;
      if (hasPeriodSeconds()) {
        if (getPeriodSeconds()
            != other.getPeriodSeconds()) return false;
      }
      if (hasSuccessThreshold() != other.hasSuccessThreshold()) return false;
      if (hasSuccessThreshold()) {
        if (getSuccessThreshold()
            != other.getSuccessThreshold()) return false;
      }
      if (hasFailureThreshold() != other.hasFailureThreshold()) return false;
      if (hasFailureThreshold()) {
        if (getFailureThreshold()
            != other.getFailureThreshold()) return false;
      }
      if (hasTerminationGracePeriodSeconds() != other.hasTerminationGracePeriodSeconds()) return false;
      if (hasTerminationGracePeriodSeconds()) {
        if (getTerminationGracePeriodSeconds()
            != other.getTerminationGracePeriodSeconds()) 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 (hasHandler()) {
        hash = (37 * hash) + HANDLER_FIELD_NUMBER;
        hash = (53 * hash) + getHandler().hashCode();
      }
      if (hasInitialDelaySeconds()) {
        hash = (37 * hash) + INITIALDELAYSECONDS_FIELD_NUMBER;
        hash = (53 * hash) + getInitialDelaySeconds();
      }
      if (hasTimeoutSeconds()) {
        hash = (37 * hash) + TIMEOUTSECONDS_FIELD_NUMBER;
        hash = (53 * hash) + getTimeoutSeconds();
      }
      if (hasPeriodSeconds()) {
        hash = (37 * hash) + PERIODSECONDS_FIELD_NUMBER;
        hash = (53 * hash) + getPeriodSeconds();
      }
      if (hasSuccessThreshold()) {
        hash = (37 * hash) + SUCCESSTHRESHOLD_FIELD_NUMBER;
        hash = (53 * hash) + getSuccessThreshold();
      }
      if (hasFailureThreshold()) {
        hash = (37 * hash) + FAILURETHRESHOLD_FIELD_NUMBER;
        hash = (53 * hash) + getFailureThreshold();
      }
      if (hasTerminationGracePeriodSeconds()) {
        hash = (37 * hash) + TERMINATIONGRACEPERIODSECONDS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTerminationGracePeriodSeconds());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.Probe parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Probe 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.V1.Probe parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Probe 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.V1.Probe parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Probe parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Probe parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Probe 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.V1.Probe parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Probe 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.V1.Probe parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Probe 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.V1.Probe 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>
     * Probe describes a health check to be performed against a container to determine whether it is
     * alive or ready to receive traffic.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Probe}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Probe)
        io.kubernetes.client.proto.V1.ProbeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Probe_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Probe_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Probe.class, io.kubernetes.client.proto.V1.Probe.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Probe.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getHandlerFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        handler_ = null;
        if (handlerBuilder_ != null) {
          handlerBuilder_.dispose();
          handlerBuilder_ = null;
        }
        initialDelaySeconds_ = 0;
        timeoutSeconds_ = 0;
        periodSeconds_ = 0;
        successThreshold_ = 0;
        failureThreshold_ = 0;
        terminationGracePeriodSeconds_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Probe_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Probe getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Probe.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Probe build() {
        io.kubernetes.client.proto.V1.Probe result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Probe buildPartial() {
        io.kubernetes.client.proto.V1.Probe result = new io.kubernetes.client.proto.V1.Probe(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Probe result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.handler_ = handlerBuilder_ == null
              ? handler_
              : handlerBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.initialDelaySeconds_ = initialDelaySeconds_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.timeoutSeconds_ = timeoutSeconds_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.periodSeconds_ = periodSeconds_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.successThreshold_ = successThreshold_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.failureThreshold_ = failureThreshold_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.terminationGracePeriodSeconds_ = terminationGracePeriodSeconds_;
          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.V1.Probe) {
          return mergeFrom((io.kubernetes.client.proto.V1.Probe)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Probe other) {
        if (other == io.kubernetes.client.proto.V1.Probe.getDefaultInstance()) return this;
        if (other.hasHandler()) {
          mergeHandler(other.getHandler());
        }
        if (other.hasInitialDelaySeconds()) {
          setInitialDelaySeconds(other.getInitialDelaySeconds());
        }
        if (other.hasTimeoutSeconds()) {
          setTimeoutSeconds(other.getTimeoutSeconds());
        }
        if (other.hasPeriodSeconds()) {
          setPeriodSeconds(other.getPeriodSeconds());
        }
        if (other.hasSuccessThreshold()) {
          setSuccessThreshold(other.getSuccessThreshold());
        }
        if (other.hasFailureThreshold()) {
          setFailureThreshold(other.getFailureThreshold());
        }
        if (other.hasTerminationGracePeriodSeconds()) {
          setTerminationGracePeriodSeconds(other.getTerminationGracePeriodSeconds());
        }
        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(
                    getHandlerFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                initialDelaySeconds_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                timeoutSeconds_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                periodSeconds_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                successThreshold_ = input.readInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                failureThreshold_ = input.readInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                terminationGracePeriodSeconds_ = input.readInt64();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              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.V1.ProbeHandler handler_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ProbeHandler, io.kubernetes.client.proto.V1.ProbeHandler.Builder, io.kubernetes.client.proto.V1.ProbeHandlerOrBuilder> handlerBuilder_;
      /**
       * <pre>
       * The action taken to determine the health of a container
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
       * @return Whether the handler field is set.
       */
      public boolean hasHandler() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The action taken to determine the health of a container
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
       * @return The handler.
       */
      public io.kubernetes.client.proto.V1.ProbeHandler getHandler() {
        if (handlerBuilder_ == null) {
          return handler_ == null ? io.kubernetes.client.proto.V1.ProbeHandler.getDefaultInstance() : handler_;
        } else {
          return handlerBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The action taken to determine the health of a container
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
       */
      public Builder setHandler(io.kubernetes.client.proto.V1.ProbeHandler value) {
        if (handlerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          handler_ = value;
        } else {
          handlerBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The action taken to determine the health of a container
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
       */
      public Builder setHandler(
          io.kubernetes.client.proto.V1.ProbeHandler.Builder builderForValue) {
        if (handlerBuilder_ == null) {
          handler_ = builderForValue.build();
        } else {
          handlerBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The action taken to determine the health of a container
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
       */
      public Builder mergeHandler(io.kubernetes.client.proto.V1.ProbeHandler value) {
        if (handlerBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            handler_ != null &&
            handler_ != io.kubernetes.client.proto.V1.ProbeHandler.getDefaultInstance()) {
            getHandlerBuilder().mergeFrom(value);
          } else {
            handler_ = value;
          }
        } else {
          handlerBuilder_.mergeFrom(value);
        }
        if (handler_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The action taken to determine the health of a container
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
       */
      public Builder clearHandler() {
        bitField0_ = (bitField0_ & ~0x00000001);
        handler_ = null;
        if (handlerBuilder_ != null) {
          handlerBuilder_.dispose();
          handlerBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The action taken to determine the health of a container
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ProbeHandler.Builder getHandlerBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getHandlerFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The action taken to determine the health of a container
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ProbeHandlerOrBuilder getHandlerOrBuilder() {
        if (handlerBuilder_ != null) {
          return handlerBuilder_.getMessageOrBuilder();
        } else {
          return handler_ == null ?
              io.kubernetes.client.proto.V1.ProbeHandler.getDefaultInstance() : handler_;
        }
      }
      /**
       * <pre>
       * The action taken to determine the health of a container
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProbeHandler handler = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ProbeHandler, io.kubernetes.client.proto.V1.ProbeHandler.Builder, io.kubernetes.client.proto.V1.ProbeHandlerOrBuilder> 
          getHandlerFieldBuilder() {
        if (handlerBuilder_ == null) {
          handlerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ProbeHandler, io.kubernetes.client.proto.V1.ProbeHandler.Builder, io.kubernetes.client.proto.V1.ProbeHandlerOrBuilder>(
                  getHandler(),
                  getParentForChildren(),
                  isClean());
          handler_ = null;
        }
        return handlerBuilder_;
      }

      private int initialDelaySeconds_ ;
      /**
       * <pre>
       * Number of seconds after the container has started before liveness probes are initiated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional int32 initialDelaySeconds = 2;</code>
       * @return Whether the initialDelaySeconds field is set.
       */
      @java.lang.Override
      public boolean hasInitialDelaySeconds() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Number of seconds after the container has started before liveness probes are initiated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional int32 initialDelaySeconds = 2;</code>
       * @return The initialDelaySeconds.
       */
      @java.lang.Override
      public int getInitialDelaySeconds() {
        return initialDelaySeconds_;
      }
      /**
       * <pre>
       * Number of seconds after the container has started before liveness probes are initiated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional int32 initialDelaySeconds = 2;</code>
       * @param value The initialDelaySeconds to set.
       * @return This builder for chaining.
       */
      public Builder setInitialDelaySeconds(int value) {

        initialDelaySeconds_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of seconds after the container has started before liveness probes are initiated.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional int32 initialDelaySeconds = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearInitialDelaySeconds() {
        bitField0_ = (bitField0_ & ~0x00000002);
        initialDelaySeconds_ = 0;
        onChanged();
        return this;
      }

      private int timeoutSeconds_ ;
      /**
       * <pre>
       * Number of seconds after which the probe times out.
       * Defaults to 1 second. Minimum value is 1.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional int32 timeoutSeconds = 3;</code>
       * @return Whether the timeoutSeconds field is set.
       */
      @java.lang.Override
      public boolean hasTimeoutSeconds() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Number of seconds after which the probe times out.
       * Defaults to 1 second. Minimum value is 1.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional int32 timeoutSeconds = 3;</code>
       * @return The timeoutSeconds.
       */
      @java.lang.Override
      public int getTimeoutSeconds() {
        return timeoutSeconds_;
      }
      /**
       * <pre>
       * Number of seconds after which the probe times out.
       * Defaults to 1 second. Minimum value is 1.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional int32 timeoutSeconds = 3;</code>
       * @param value The timeoutSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setTimeoutSeconds(int value) {

        timeoutSeconds_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of seconds after which the probe times out.
       * Defaults to 1 second. Minimum value is 1.
       * More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       * +optional
       * </pre>
       *
       * <code>optional int32 timeoutSeconds = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimeoutSeconds() {
        bitField0_ = (bitField0_ & ~0x00000004);
        timeoutSeconds_ = 0;
        onChanged();
        return this;
      }

      private int periodSeconds_ ;
      /**
       * <pre>
       * How often (in seconds) to perform the probe.
       * Default to 10 seconds. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 periodSeconds = 4;</code>
       * @return Whether the periodSeconds field is set.
       */
      @java.lang.Override
      public boolean hasPeriodSeconds() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * How often (in seconds) to perform the probe.
       * Default to 10 seconds. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 periodSeconds = 4;</code>
       * @return The periodSeconds.
       */
      @java.lang.Override
      public int getPeriodSeconds() {
        return periodSeconds_;
      }
      /**
       * <pre>
       * How often (in seconds) to perform the probe.
       * Default to 10 seconds. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 periodSeconds = 4;</code>
       * @param value The periodSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setPeriodSeconds(int value) {

        periodSeconds_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * How often (in seconds) to perform the probe.
       * Default to 10 seconds. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 periodSeconds = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPeriodSeconds() {
        bitField0_ = (bitField0_ & ~0x00000008);
        periodSeconds_ = 0;
        onChanged();
        return this;
      }

      private int successThreshold_ ;
      /**
       * <pre>
       * Minimum consecutive successes for the probe to be considered successful after having failed.
       * Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 successThreshold = 5;</code>
       * @return Whether the successThreshold field is set.
       */
      @java.lang.Override
      public boolean hasSuccessThreshold() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Minimum consecutive successes for the probe to be considered successful after having failed.
       * Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 successThreshold = 5;</code>
       * @return The successThreshold.
       */
      @java.lang.Override
      public int getSuccessThreshold() {
        return successThreshold_;
      }
      /**
       * <pre>
       * Minimum consecutive successes for the probe to be considered successful after having failed.
       * Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 successThreshold = 5;</code>
       * @param value The successThreshold to set.
       * @return This builder for chaining.
       */
      public Builder setSuccessThreshold(int value) {

        successThreshold_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Minimum consecutive successes for the probe to be considered successful after having failed.
       * Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 successThreshold = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuccessThreshold() {
        bitField0_ = (bitField0_ & ~0x00000010);
        successThreshold_ = 0;
        onChanged();
        return this;
      }

      private int failureThreshold_ ;
      /**
       * <pre>
       * Minimum consecutive failures for the probe to be considered failed after having succeeded.
       * Defaults to 3. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 failureThreshold = 6;</code>
       * @return Whether the failureThreshold field is set.
       */
      @java.lang.Override
      public boolean hasFailureThreshold() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Minimum consecutive failures for the probe to be considered failed after having succeeded.
       * Defaults to 3. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 failureThreshold = 6;</code>
       * @return The failureThreshold.
       */
      @java.lang.Override
      public int getFailureThreshold() {
        return failureThreshold_;
      }
      /**
       * <pre>
       * Minimum consecutive failures for the probe to be considered failed after having succeeded.
       * Defaults to 3. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 failureThreshold = 6;</code>
       * @param value The failureThreshold to set.
       * @return This builder for chaining.
       */
      public Builder setFailureThreshold(int value) {

        failureThreshold_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Minimum consecutive failures for the probe to be considered failed after having succeeded.
       * Defaults to 3. Minimum value is 1.
       * +optional
       * </pre>
       *
       * <code>optional int32 failureThreshold = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearFailureThreshold() {
        bitField0_ = (bitField0_ & ~0x00000020);
        failureThreshold_ = 0;
        onChanged();
        return this;
      }

      private long terminationGracePeriodSeconds_ ;
      /**
       * <pre>
       * Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
       * The grace period is the duration in seconds after the processes running in the pod are sent
       * a termination signal and the time when the processes are forcibly halted with a kill signal.
       * Set this value longer than the expected cleanup time for your process.
       * If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
       * value overrides the value provided by the pod spec.
       * Value must be non-negative integer. The value zero indicates stop immediately via
       * the kill signal (no opportunity to shut down).
       * This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
       * Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
       * +optional
       * </pre>
       *
       * <code>optional int64 terminationGracePeriodSeconds = 7;</code>
       * @return Whether the terminationGracePeriodSeconds field is set.
       */
      @java.lang.Override
      public boolean hasTerminationGracePeriodSeconds() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
       * The grace period is the duration in seconds after the processes running in the pod are sent
       * a termination signal and the time when the processes are forcibly halted with a kill signal.
       * Set this value longer than the expected cleanup time for your process.
       * If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
       * value overrides the value provided by the pod spec.
       * Value must be non-negative integer. The value zero indicates stop immediately via
       * the kill signal (no opportunity to shut down).
       * This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
       * Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
       * +optional
       * </pre>
       *
       * <code>optional int64 terminationGracePeriodSeconds = 7;</code>
       * @return The terminationGracePeriodSeconds.
       */
      @java.lang.Override
      public long getTerminationGracePeriodSeconds() {
        return terminationGracePeriodSeconds_;
      }
      /**
       * <pre>
       * Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
       * The grace period is the duration in seconds after the processes running in the pod are sent
       * a termination signal and the time when the processes are forcibly halted with a kill signal.
       * Set this value longer than the expected cleanup time for your process.
       * If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
       * value overrides the value provided by the pod spec.
       * Value must be non-negative integer. The value zero indicates stop immediately via
       * the kill signal (no opportunity to shut down).
       * This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
       * Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
       * +optional
       * </pre>
       *
       * <code>optional int64 terminationGracePeriodSeconds = 7;</code>
       * @param value The terminationGracePeriodSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setTerminationGracePeriodSeconds(long value) {

        terminationGracePeriodSeconds_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
       * The grace period is the duration in seconds after the processes running in the pod are sent
       * a termination signal and the time when the processes are forcibly halted with a kill signal.
       * Set this value longer than the expected cleanup time for your process.
       * If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
       * value overrides the value provided by the pod spec.
       * Value must be non-negative integer. The value zero indicates stop immediately via
       * the kill signal (no opportunity to shut down).
       * This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
       * Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
       * +optional
       * </pre>
       *
       * <code>optional int64 terminationGracePeriodSeconds = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTerminationGracePeriodSeconds() {
        bitField0_ = (bitField0_ & ~0x00000040);
        terminationGracePeriodSeconds_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Probe)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Probe)
    private static final io.kubernetes.client.proto.V1.Probe DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Probe();
    }

    public static io.kubernetes.client.proto.V1.Probe getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Probe>
        PARSER = new com.google.protobuf.AbstractParser<Probe>() {
      @java.lang.Override
      public Probe 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<Probe> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Probe> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Probe getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ProbeHandlerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ProbeHandler)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     * @return Whether the exec field is set.
     */
    boolean hasExec();
    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     * @return The exec.
     */
    io.kubernetes.client.proto.V1.ExecAction getExec();
    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     */
    io.kubernetes.client.proto.V1.ExecActionOrBuilder getExecOrBuilder();

    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     * @return Whether the httpGet field is set.
     */
    boolean hasHttpGet();
    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     * @return The httpGet.
     */
    io.kubernetes.client.proto.V1.HTTPGetAction getHttpGet();
    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     */
    io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder getHttpGetOrBuilder();

    /**
     * <pre>
     * TCPSocket specifies an action involving a TCP port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     * @return Whether the tcpSocket field is set.
     */
    boolean hasTcpSocket();
    /**
     * <pre>
     * TCPSocket specifies an action involving a TCP port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     * @return The tcpSocket.
     */
    io.kubernetes.client.proto.V1.TCPSocketAction getTcpSocket();
    /**
     * <pre>
     * TCPSocket specifies an action involving a TCP port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     */
    io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder getTcpSocketOrBuilder();

    /**
     * <pre>
     * GRPC specifies an action involving a GRPC port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
     * @return Whether the grpc field is set.
     */
    boolean hasGrpc();
    /**
     * <pre>
     * GRPC specifies an action involving a GRPC port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
     * @return The grpc.
     */
    io.kubernetes.client.proto.V1.GRPCAction getGrpc();
    /**
     * <pre>
     * GRPC specifies an action involving a GRPC port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
     */
    io.kubernetes.client.proto.V1.GRPCActionOrBuilder getGrpcOrBuilder();
  }
  /**
   * <pre>
   * ProbeHandler defines a specific action that should be taken in a probe.
   * One and only one of the fields must be specified.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ProbeHandler}
   */
  public static final class ProbeHandler extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ProbeHandler)
      ProbeHandlerOrBuilder {
  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= */ "",
        ProbeHandler.class.getName());
    }
    // Use ProbeHandler.newBuilder() to construct.
    private ProbeHandler(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ProbeHandler() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ProbeHandler_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ProbeHandler_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ProbeHandler.class, io.kubernetes.client.proto.V1.ProbeHandler.Builder.class);
    }

    private int bitField0_;
    public static final int EXEC_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.ExecAction exec_;
    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     * @return Whether the exec field is set.
     */
    @java.lang.Override
    public boolean hasExec() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     * @return The exec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ExecAction getExec() {
      return exec_ == null ? io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance() : exec_;
    }
    /**
     * <pre>
     * Exec specifies the action to take.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ExecActionOrBuilder getExecOrBuilder() {
      return exec_ == null ? io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance() : exec_;
    }

    public static final int HTTPGET_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.HTTPGetAction httpGet_;
    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     * @return Whether the httpGet field is set.
     */
    @java.lang.Override
    public boolean hasHttpGet() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     * @return The httpGet.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HTTPGetAction getHttpGet() {
      return httpGet_ == null ? io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance() : httpGet_;
    }
    /**
     * <pre>
     * HTTPGet specifies the http request to perform.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder getHttpGetOrBuilder() {
      return httpGet_ == null ? io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance() : httpGet_;
    }

    public static final int TCPSOCKET_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.TCPSocketAction tcpSocket_;
    /**
     * <pre>
     * TCPSocket specifies an action involving a TCP port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     * @return Whether the tcpSocket field is set.
     */
    @java.lang.Override
    public boolean hasTcpSocket() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * TCPSocket specifies an action involving a TCP port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     * @return The tcpSocket.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TCPSocketAction getTcpSocket() {
      return tcpSocket_ == null ? io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance() : tcpSocket_;
    }
    /**
     * <pre>
     * TCPSocket specifies an action involving a TCP port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder getTcpSocketOrBuilder() {
      return tcpSocket_ == null ? io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance() : tcpSocket_;
    }

    public static final int GRPC_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.V1.GRPCAction grpc_;
    /**
     * <pre>
     * GRPC specifies an action involving a GRPC port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
     * @return Whether the grpc field is set.
     */
    @java.lang.Override
    public boolean hasGrpc() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * GRPC specifies an action involving a GRPC port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
     * @return The grpc.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GRPCAction getGrpc() {
      return grpc_ == null ? io.kubernetes.client.proto.V1.GRPCAction.getDefaultInstance() : grpc_;
    }
    /**
     * <pre>
     * GRPC specifies an action involving a GRPC port.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GRPCActionOrBuilder getGrpcOrBuilder() {
      return grpc_ == null ? io.kubernetes.client.proto.V1.GRPCAction.getDefaultInstance() : grpc_;
    }

    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, getExec());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getHttpGet());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getTcpSocket());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getGrpc());
      }
      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, getExec());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getHttpGet());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getTcpSocket());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getGrpc());
      }
      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.V1.ProbeHandler)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ProbeHandler other = (io.kubernetes.client.proto.V1.ProbeHandler) obj;

      if (hasExec() != other.hasExec()) return false;
      if (hasExec()) {
        if (!getExec()
            .equals(other.getExec())) return false;
      }
      if (hasHttpGet() != other.hasHttpGet()) return false;
      if (hasHttpGet()) {
        if (!getHttpGet()
            .equals(other.getHttpGet())) return false;
      }
      if (hasTcpSocket() != other.hasTcpSocket()) return false;
      if (hasTcpSocket()) {
        if (!getTcpSocket()
            .equals(other.getTcpSocket())) return false;
      }
      if (hasGrpc() != other.hasGrpc()) return false;
      if (hasGrpc()) {
        if (!getGrpc()
            .equals(other.getGrpc())) 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 (hasExec()) {
        hash = (37 * hash) + EXEC_FIELD_NUMBER;
        hash = (53 * hash) + getExec().hashCode();
      }
      if (hasHttpGet()) {
        hash = (37 * hash) + HTTPGET_FIELD_NUMBER;
        hash = (53 * hash) + getHttpGet().hashCode();
      }
      if (hasTcpSocket()) {
        hash = (37 * hash) + TCPSOCKET_FIELD_NUMBER;
        hash = (53 * hash) + getTcpSocket().hashCode();
      }
      if (hasGrpc()) {
        hash = (37 * hash) + GRPC_FIELD_NUMBER;
        hash = (53 * hash) + getGrpc().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ProbeHandler parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ProbeHandler 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.V1.ProbeHandler parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ProbeHandler 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.V1.ProbeHandler parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ProbeHandler parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ProbeHandler parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ProbeHandler 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.V1.ProbeHandler parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ProbeHandler 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.V1.ProbeHandler parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ProbeHandler 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.V1.ProbeHandler 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>
     * ProbeHandler defines a specific action that should be taken in a probe.
     * One and only one of the fields must be specified.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ProbeHandler}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ProbeHandler)
        io.kubernetes.client.proto.V1.ProbeHandlerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ProbeHandler_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ProbeHandler_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ProbeHandler.class, io.kubernetes.client.proto.V1.ProbeHandler.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ProbeHandler.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getExecFieldBuilder();
          getHttpGetFieldBuilder();
          getTcpSocketFieldBuilder();
          getGrpcFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        exec_ = null;
        if (execBuilder_ != null) {
          execBuilder_.dispose();
          execBuilder_ = null;
        }
        httpGet_ = null;
        if (httpGetBuilder_ != null) {
          httpGetBuilder_.dispose();
          httpGetBuilder_ = null;
        }
        tcpSocket_ = null;
        if (tcpSocketBuilder_ != null) {
          tcpSocketBuilder_.dispose();
          tcpSocketBuilder_ = null;
        }
        grpc_ = null;
        if (grpcBuilder_ != null) {
          grpcBuilder_.dispose();
          grpcBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ProbeHandler_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ProbeHandler getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ProbeHandler.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ProbeHandler build() {
        io.kubernetes.client.proto.V1.ProbeHandler result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ProbeHandler buildPartial() {
        io.kubernetes.client.proto.V1.ProbeHandler result = new io.kubernetes.client.proto.V1.ProbeHandler(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ProbeHandler result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.exec_ = execBuilder_ == null
              ? exec_
              : execBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.httpGet_ = httpGetBuilder_ == null
              ? httpGet_
              : httpGetBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.tcpSocket_ = tcpSocketBuilder_ == null
              ? tcpSocket_
              : tcpSocketBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.grpc_ = grpcBuilder_ == null
              ? grpc_
              : grpcBuilder_.build();
          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.V1.ProbeHandler) {
          return mergeFrom((io.kubernetes.client.proto.V1.ProbeHandler)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ProbeHandler other) {
        if (other == io.kubernetes.client.proto.V1.ProbeHandler.getDefaultInstance()) return this;
        if (other.hasExec()) {
          mergeExec(other.getExec());
        }
        if (other.hasHttpGet()) {
          mergeHttpGet(other.getHttpGet());
        }
        if (other.hasTcpSocket()) {
          mergeTcpSocket(other.getTcpSocket());
        }
        if (other.hasGrpc()) {
          mergeGrpc(other.getGrpc());
        }
        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(
                    getExecFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getHttpGetFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getTcpSocketFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getGrpcFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.V1.ExecAction exec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ExecAction, io.kubernetes.client.proto.V1.ExecAction.Builder, io.kubernetes.client.proto.V1.ExecActionOrBuilder> execBuilder_;
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       * @return Whether the exec field is set.
       */
      public boolean hasExec() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       * @return The exec.
       */
      public io.kubernetes.client.proto.V1.ExecAction getExec() {
        if (execBuilder_ == null) {
          return exec_ == null ? io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance() : exec_;
        } else {
          return execBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public Builder setExec(io.kubernetes.client.proto.V1.ExecAction value) {
        if (execBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exec_ = value;
        } else {
          execBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public Builder setExec(
          io.kubernetes.client.proto.V1.ExecAction.Builder builderForValue) {
        if (execBuilder_ == null) {
          exec_ = builderForValue.build();
        } else {
          execBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public Builder mergeExec(io.kubernetes.client.proto.V1.ExecAction value) {
        if (execBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            exec_ != null &&
            exec_ != io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance()) {
            getExecBuilder().mergeFrom(value);
          } else {
            exec_ = value;
          }
        } else {
          execBuilder_.mergeFrom(value);
        }
        if (exec_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public Builder clearExec() {
        bitField0_ = (bitField0_ & ~0x00000001);
        exec_ = null;
        if (execBuilder_ != null) {
          execBuilder_.dispose();
          execBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ExecAction.Builder getExecBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getExecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ExecActionOrBuilder getExecOrBuilder() {
        if (execBuilder_ != null) {
          return execBuilder_.getMessageOrBuilder();
        } else {
          return exec_ == null ?
              io.kubernetes.client.proto.V1.ExecAction.getDefaultInstance() : exec_;
        }
      }
      /**
       * <pre>
       * Exec specifies the action to take.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ExecAction exec = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ExecAction, io.kubernetes.client.proto.V1.ExecAction.Builder, io.kubernetes.client.proto.V1.ExecActionOrBuilder> 
          getExecFieldBuilder() {
        if (execBuilder_ == null) {
          execBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ExecAction, io.kubernetes.client.proto.V1.ExecAction.Builder, io.kubernetes.client.proto.V1.ExecActionOrBuilder>(
                  getExec(),
                  getParentForChildren(),
                  isClean());
          exec_ = null;
        }
        return execBuilder_;
      }

      private io.kubernetes.client.proto.V1.HTTPGetAction httpGet_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.HTTPGetAction, io.kubernetes.client.proto.V1.HTTPGetAction.Builder, io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder> httpGetBuilder_;
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       * @return Whether the httpGet field is set.
       */
      public boolean hasHttpGet() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       * @return The httpGet.
       */
      public io.kubernetes.client.proto.V1.HTTPGetAction getHttpGet() {
        if (httpGetBuilder_ == null) {
          return httpGet_ == null ? io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance() : httpGet_;
        } else {
          return httpGetBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public Builder setHttpGet(io.kubernetes.client.proto.V1.HTTPGetAction value) {
        if (httpGetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          httpGet_ = value;
        } else {
          httpGetBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public Builder setHttpGet(
          io.kubernetes.client.proto.V1.HTTPGetAction.Builder builderForValue) {
        if (httpGetBuilder_ == null) {
          httpGet_ = builderForValue.build();
        } else {
          httpGetBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public Builder mergeHttpGet(io.kubernetes.client.proto.V1.HTTPGetAction value) {
        if (httpGetBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            httpGet_ != null &&
            httpGet_ != io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance()) {
            getHttpGetBuilder().mergeFrom(value);
          } else {
            httpGet_ = value;
          }
        } else {
          httpGetBuilder_.mergeFrom(value);
        }
        if (httpGet_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public Builder clearHttpGet() {
        bitField0_ = (bitField0_ & ~0x00000002);
        httpGet_ = null;
        if (httpGetBuilder_ != null) {
          httpGetBuilder_.dispose();
          httpGetBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public io.kubernetes.client.proto.V1.HTTPGetAction.Builder getHttpGetBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getHttpGetFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      public io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder getHttpGetOrBuilder() {
        if (httpGetBuilder_ != null) {
          return httpGetBuilder_.getMessageOrBuilder();
        } else {
          return httpGet_ == null ?
              io.kubernetes.client.proto.V1.HTTPGetAction.getDefaultInstance() : httpGet_;
        }
      }
      /**
       * <pre>
       * HTTPGet specifies the http request to perform.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HTTPGetAction httpGet = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.HTTPGetAction, io.kubernetes.client.proto.V1.HTTPGetAction.Builder, io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder> 
          getHttpGetFieldBuilder() {
        if (httpGetBuilder_ == null) {
          httpGetBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.HTTPGetAction, io.kubernetes.client.proto.V1.HTTPGetAction.Builder, io.kubernetes.client.proto.V1.HTTPGetActionOrBuilder>(
                  getHttpGet(),
                  getParentForChildren(),
                  isClean());
          httpGet_ = null;
        }
        return httpGetBuilder_;
      }

      private io.kubernetes.client.proto.V1.TCPSocketAction tcpSocket_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.TCPSocketAction, io.kubernetes.client.proto.V1.TCPSocketAction.Builder, io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder> tcpSocketBuilder_;
      /**
       * <pre>
       * TCPSocket specifies an action involving a TCP port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       * @return Whether the tcpSocket field is set.
       */
      public boolean hasTcpSocket() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * TCPSocket specifies an action involving a TCP port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       * @return The tcpSocket.
       */
      public io.kubernetes.client.proto.V1.TCPSocketAction getTcpSocket() {
        if (tcpSocketBuilder_ == null) {
          return tcpSocket_ == null ? io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance() : tcpSocket_;
        } else {
          return tcpSocketBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * TCPSocket specifies an action involving a TCP port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public Builder setTcpSocket(io.kubernetes.client.proto.V1.TCPSocketAction value) {
        if (tcpSocketBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tcpSocket_ = value;
        } else {
          tcpSocketBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TCPSocket specifies an action involving a TCP port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public Builder setTcpSocket(
          io.kubernetes.client.proto.V1.TCPSocketAction.Builder builderForValue) {
        if (tcpSocketBuilder_ == null) {
          tcpSocket_ = builderForValue.build();
        } else {
          tcpSocketBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TCPSocket specifies an action involving a TCP port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public Builder mergeTcpSocket(io.kubernetes.client.proto.V1.TCPSocketAction value) {
        if (tcpSocketBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            tcpSocket_ != null &&
            tcpSocket_ != io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance()) {
            getTcpSocketBuilder().mergeFrom(value);
          } else {
            tcpSocket_ = value;
          }
        } else {
          tcpSocketBuilder_.mergeFrom(value);
        }
        if (tcpSocket_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * TCPSocket specifies an action involving a TCP port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public Builder clearTcpSocket() {
        bitField0_ = (bitField0_ & ~0x00000004);
        tcpSocket_ = null;
        if (tcpSocketBuilder_ != null) {
          tcpSocketBuilder_.dispose();
          tcpSocketBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TCPSocket specifies an action involving a TCP port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public io.kubernetes.client.proto.V1.TCPSocketAction.Builder getTcpSocketBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getTcpSocketFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * TCPSocket specifies an action involving a TCP port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      public io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder getTcpSocketOrBuilder() {
        if (tcpSocketBuilder_ != null) {
          return tcpSocketBuilder_.getMessageOrBuilder();
        } else {
          return tcpSocket_ == null ?
              io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance() : tcpSocket_;
        }
      }
      /**
       * <pre>
       * TCPSocket specifies an action involving a TCP port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.TCPSocketAction tcpSocket = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.TCPSocketAction, io.kubernetes.client.proto.V1.TCPSocketAction.Builder, io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder> 
          getTcpSocketFieldBuilder() {
        if (tcpSocketBuilder_ == null) {
          tcpSocketBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.TCPSocketAction, io.kubernetes.client.proto.V1.TCPSocketAction.Builder, io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder>(
                  getTcpSocket(),
                  getParentForChildren(),
                  isClean());
          tcpSocket_ = null;
        }
        return tcpSocketBuilder_;
      }

      private io.kubernetes.client.proto.V1.GRPCAction grpc_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GRPCAction, io.kubernetes.client.proto.V1.GRPCAction.Builder, io.kubernetes.client.proto.V1.GRPCActionOrBuilder> grpcBuilder_;
      /**
       * <pre>
       * GRPC specifies an action involving a GRPC port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
       * @return Whether the grpc field is set.
       */
      public boolean hasGrpc() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * GRPC specifies an action involving a GRPC port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
       * @return The grpc.
       */
      public io.kubernetes.client.proto.V1.GRPCAction getGrpc() {
        if (grpcBuilder_ == null) {
          return grpc_ == null ? io.kubernetes.client.proto.V1.GRPCAction.getDefaultInstance() : grpc_;
        } else {
          return grpcBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * GRPC specifies an action involving a GRPC port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
       */
      public Builder setGrpc(io.kubernetes.client.proto.V1.GRPCAction value) {
        if (grpcBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          grpc_ = value;
        } else {
          grpcBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GRPC specifies an action involving a GRPC port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
       */
      public Builder setGrpc(
          io.kubernetes.client.proto.V1.GRPCAction.Builder builderForValue) {
        if (grpcBuilder_ == null) {
          grpc_ = builderForValue.build();
        } else {
          grpcBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GRPC specifies an action involving a GRPC port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
       */
      public Builder mergeGrpc(io.kubernetes.client.proto.V1.GRPCAction value) {
        if (grpcBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            grpc_ != null &&
            grpc_ != io.kubernetes.client.proto.V1.GRPCAction.getDefaultInstance()) {
            getGrpcBuilder().mergeFrom(value);
          } else {
            grpc_ = value;
          }
        } else {
          grpcBuilder_.mergeFrom(value);
        }
        if (grpc_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * GRPC specifies an action involving a GRPC port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
       */
      public Builder clearGrpc() {
        bitField0_ = (bitField0_ & ~0x00000008);
        grpc_ = null;
        if (grpcBuilder_ != null) {
          grpcBuilder_.dispose();
          grpcBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GRPC specifies an action involving a GRPC port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
       */
      public io.kubernetes.client.proto.V1.GRPCAction.Builder getGrpcBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getGrpcFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * GRPC specifies an action involving a GRPC port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
       */
      public io.kubernetes.client.proto.V1.GRPCActionOrBuilder getGrpcOrBuilder() {
        if (grpcBuilder_ != null) {
          return grpcBuilder_.getMessageOrBuilder();
        } else {
          return grpc_ == null ?
              io.kubernetes.client.proto.V1.GRPCAction.getDefaultInstance() : grpc_;
        }
      }
      /**
       * <pre>
       * GRPC specifies an action involving a GRPC port.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GRPCAction grpc = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GRPCAction, io.kubernetes.client.proto.V1.GRPCAction.Builder, io.kubernetes.client.proto.V1.GRPCActionOrBuilder> 
          getGrpcFieldBuilder() {
        if (grpcBuilder_ == null) {
          grpcBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.GRPCAction, io.kubernetes.client.proto.V1.GRPCAction.Builder, io.kubernetes.client.proto.V1.GRPCActionOrBuilder>(
                  getGrpc(),
                  getParentForChildren(),
                  isClean());
          grpc_ = null;
        }
        return grpcBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ProbeHandler)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ProbeHandler)
    private static final io.kubernetes.client.proto.V1.ProbeHandler DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ProbeHandler();
    }

    public static io.kubernetes.client.proto.V1.ProbeHandler getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ProbeHandler>
        PARSER = new com.google.protobuf.AbstractParser<ProbeHandler>() {
      @java.lang.Override
      public ProbeHandler 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<ProbeHandler> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ProbeHandler> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProbeHandler getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ProjectedVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ProjectedVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * sources is the list of volume projections
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.VolumeProjection> 
        getSourcesList();
    /**
     * <pre>
     * sources is the list of volume projections
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
     */
    io.kubernetes.client.proto.V1.VolumeProjection getSources(int index);
    /**
     * <pre>
     * sources is the list of volume projections
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
     */
    int getSourcesCount();
    /**
     * <pre>
     * sources is the list of volume projections
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.VolumeProjectionOrBuilder> 
        getSourcesOrBuilderList();
    /**
     * <pre>
     * sources is the list of volume projections
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
     */
    io.kubernetes.client.proto.V1.VolumeProjectionOrBuilder getSourcesOrBuilder(
        int index);

    /**
     * <pre>
     * defaultMode are the mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 2;</code>
     * @return Whether the defaultMode field is set.
     */
    boolean hasDefaultMode();
    /**
     * <pre>
     * defaultMode are the mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 2;</code>
     * @return The defaultMode.
     */
    int getDefaultMode();
  }
  /**
   * <pre>
   * Represents a projected volume source
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ProjectedVolumeSource}
   */
  public static final class ProjectedVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ProjectedVolumeSource)
      ProjectedVolumeSourceOrBuilder {
  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= */ "",
        ProjectedVolumeSource.class.getName());
    }
    // Use ProjectedVolumeSource.newBuilder() to construct.
    private ProjectedVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ProjectedVolumeSource() {
      sources_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ProjectedVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ProjectedVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ProjectedVolumeSource.class, io.kubernetes.client.proto.V1.ProjectedVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int SOURCES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.VolumeProjection> sources_;
    /**
     * <pre>
     * sources is the list of volume projections
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.VolumeProjection> getSourcesList() {
      return sources_;
    }
    /**
     * <pre>
     * sources is the list of volume projections
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeProjectionOrBuilder> 
        getSourcesOrBuilderList() {
      return sources_;
    }
    /**
     * <pre>
     * sources is the list of volume projections
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
     */
    @java.lang.Override
    public int getSourcesCount() {
      return sources_.size();
    }
    /**
     * <pre>
     * sources is the list of volume projections
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeProjection getSources(int index) {
      return sources_.get(index);
    }
    /**
     * <pre>
     * sources is the list of volume projections
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeProjectionOrBuilder getSourcesOrBuilder(
        int index) {
      return sources_.get(index);
    }

    public static final int DEFAULTMODE_FIELD_NUMBER = 2;
    private int defaultMode_ = 0;
    /**
     * <pre>
     * defaultMode are the mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 2;</code>
     * @return Whether the defaultMode field is set.
     */
    @java.lang.Override
    public boolean hasDefaultMode() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * defaultMode are the mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 2;</code>
     * @return The defaultMode.
     */
    @java.lang.Override
    public int getDefaultMode() {
      return defaultMode_;
    }

    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 < sources_.size(); i++) {
        output.writeMessage(1, sources_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(2, defaultMode_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < sources_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, sources_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, defaultMode_);
      }
      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.V1.ProjectedVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ProjectedVolumeSource other = (io.kubernetes.client.proto.V1.ProjectedVolumeSource) obj;

      if (!getSourcesList()
          .equals(other.getSourcesList())) return false;
      if (hasDefaultMode() != other.hasDefaultMode()) return false;
      if (hasDefaultMode()) {
        if (getDefaultMode()
            != other.getDefaultMode()) 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 (getSourcesCount() > 0) {
        hash = (37 * hash) + SOURCES_FIELD_NUMBER;
        hash = (53 * hash) + getSourcesList().hashCode();
      }
      if (hasDefaultMode()) {
        hash = (37 * hash) + DEFAULTMODE_FIELD_NUMBER;
        hash = (53 * hash) + getDefaultMode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ProjectedVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ProjectedVolumeSource 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.V1.ProjectedVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ProjectedVolumeSource 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.V1.ProjectedVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ProjectedVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ProjectedVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ProjectedVolumeSource 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.V1.ProjectedVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ProjectedVolumeSource 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.V1.ProjectedVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ProjectedVolumeSource 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.V1.ProjectedVolumeSource 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>
     * Represents a projected volume source
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ProjectedVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ProjectedVolumeSource)
        io.kubernetes.client.proto.V1.ProjectedVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ProjectedVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ProjectedVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ProjectedVolumeSource.class, io.kubernetes.client.proto.V1.ProjectedVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ProjectedVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (sourcesBuilder_ == null) {
          sources_ = java.util.Collections.emptyList();
        } else {
          sources_ = null;
          sourcesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        defaultMode_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ProjectedVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ProjectedVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ProjectedVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ProjectedVolumeSource build() {
        io.kubernetes.client.proto.V1.ProjectedVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ProjectedVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.ProjectedVolumeSource result = new io.kubernetes.client.proto.V1.ProjectedVolumeSource(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ProjectedVolumeSource result) {
        if (sourcesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            sources_ = java.util.Collections.unmodifiableList(sources_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sources_ = sources_;
        } else {
          result.sources_ = sourcesBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ProjectedVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.defaultMode_ = defaultMode_;
          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.V1.ProjectedVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.ProjectedVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ProjectedVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.ProjectedVolumeSource.getDefaultInstance()) return this;
        if (sourcesBuilder_ == null) {
          if (!other.sources_.isEmpty()) {
            if (sources_.isEmpty()) {
              sources_ = other.sources_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSourcesIsMutable();
              sources_.addAll(other.sources_);
            }
            onChanged();
          }
        } else {
          if (!other.sources_.isEmpty()) {
            if (sourcesBuilder_.isEmpty()) {
              sourcesBuilder_.dispose();
              sourcesBuilder_ = null;
              sources_ = other.sources_;
              bitField0_ = (bitField0_ & ~0x00000001);
              sourcesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSourcesFieldBuilder() : null;
            } else {
              sourcesBuilder_.addAllMessages(other.sources_);
            }
          }
        }
        if (other.hasDefaultMode()) {
          setDefaultMode(other.getDefaultMode());
        }
        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.V1.VolumeProjection m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.VolumeProjection.parser(),
                        extensionRegistry);
                if (sourcesBuilder_ == null) {
                  ensureSourcesIsMutable();
                  sources_.add(m);
                } else {
                  sourcesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 16: {
                defaultMode_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              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.V1.VolumeProjection> sources_ =
        java.util.Collections.emptyList();
      private void ensureSourcesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          sources_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.VolumeProjection>(sources_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeProjection, io.kubernetes.client.proto.V1.VolumeProjection.Builder, io.kubernetes.client.proto.V1.VolumeProjectionOrBuilder> sourcesBuilder_;

      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeProjection> getSourcesList() {
        if (sourcesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sources_);
        } else {
          return sourcesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public int getSourcesCount() {
        if (sourcesBuilder_ == null) {
          return sources_.size();
        } else {
          return sourcesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeProjection getSources(int index) {
        if (sourcesBuilder_ == null) {
          return sources_.get(index);
        } else {
          return sourcesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public Builder setSources(
          int index, io.kubernetes.client.proto.V1.VolumeProjection value) {
        if (sourcesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSourcesIsMutable();
          sources_.set(index, value);
          onChanged();
        } else {
          sourcesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public Builder setSources(
          int index, io.kubernetes.client.proto.V1.VolumeProjection.Builder builderForValue) {
        if (sourcesBuilder_ == null) {
          ensureSourcesIsMutable();
          sources_.set(index, builderForValue.build());
          onChanged();
        } else {
          sourcesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public Builder addSources(io.kubernetes.client.proto.V1.VolumeProjection value) {
        if (sourcesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSourcesIsMutable();
          sources_.add(value);
          onChanged();
        } else {
          sourcesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public Builder addSources(
          int index, io.kubernetes.client.proto.V1.VolumeProjection value) {
        if (sourcesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSourcesIsMutable();
          sources_.add(index, value);
          onChanged();
        } else {
          sourcesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public Builder addSources(
          io.kubernetes.client.proto.V1.VolumeProjection.Builder builderForValue) {
        if (sourcesBuilder_ == null) {
          ensureSourcesIsMutable();
          sources_.add(builderForValue.build());
          onChanged();
        } else {
          sourcesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public Builder addSources(
          int index, io.kubernetes.client.proto.V1.VolumeProjection.Builder builderForValue) {
        if (sourcesBuilder_ == null) {
          ensureSourcesIsMutable();
          sources_.add(index, builderForValue.build());
          onChanged();
        } else {
          sourcesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public Builder addAllSources(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.VolumeProjection> values) {
        if (sourcesBuilder_ == null) {
          ensureSourcesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sources_);
          onChanged();
        } else {
          sourcesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public Builder clearSources() {
        if (sourcesBuilder_ == null) {
          sources_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          sourcesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public Builder removeSources(int index) {
        if (sourcesBuilder_ == null) {
          ensureSourcesIsMutable();
          sources_.remove(index);
          onChanged();
        } else {
          sourcesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeProjection.Builder getSourcesBuilder(
          int index) {
        return getSourcesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeProjectionOrBuilder getSourcesOrBuilder(
          int index) {
        if (sourcesBuilder_ == null) {
          return sources_.get(index);  } else {
          return sourcesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.VolumeProjectionOrBuilder> 
           getSourcesOrBuilderList() {
        if (sourcesBuilder_ != null) {
          return sourcesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sources_);
        }
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeProjection.Builder addSourcesBuilder() {
        return getSourcesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.VolumeProjection.getDefaultInstance());
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeProjection.Builder addSourcesBuilder(
          int index) {
        return getSourcesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.VolumeProjection.getDefaultInstance());
      }
      /**
       * <pre>
       * sources is the list of volume projections
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.VolumeProjection sources = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.VolumeProjection.Builder> 
           getSourcesBuilderList() {
        return getSourcesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeProjection, io.kubernetes.client.proto.V1.VolumeProjection.Builder, io.kubernetes.client.proto.V1.VolumeProjectionOrBuilder> 
          getSourcesFieldBuilder() {
        if (sourcesBuilder_ == null) {
          sourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.VolumeProjection, io.kubernetes.client.proto.V1.VolumeProjection.Builder, io.kubernetes.client.proto.V1.VolumeProjectionOrBuilder>(
                  sources_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          sources_ = null;
        }
        return sourcesBuilder_;
      }

      private int defaultMode_ ;
      /**
       * <pre>
       * defaultMode are the mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 2;</code>
       * @return Whether the defaultMode field is set.
       */
      @java.lang.Override
      public boolean hasDefaultMode() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * defaultMode are the mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 2;</code>
       * @return The defaultMode.
       */
      @java.lang.Override
      public int getDefaultMode() {
        return defaultMode_;
      }
      /**
       * <pre>
       * defaultMode are the mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 2;</code>
       * @param value The defaultMode to set.
       * @return This builder for chaining.
       */
      public Builder setDefaultMode(int value) {

        defaultMode_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * defaultMode are the mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDefaultMode() {
        bitField0_ = (bitField0_ & ~0x00000002);
        defaultMode_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ProjectedVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ProjectedVolumeSource)
    private static final io.kubernetes.client.proto.V1.ProjectedVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ProjectedVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.ProjectedVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ProjectedVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<ProjectedVolumeSource>() {
      @java.lang.Override
      public ProjectedVolumeSource 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<ProjectedVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ProjectedVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProjectedVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface QuobyteVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.QuobyteVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * registry represents a single or multiple Quobyte Registry services
     * specified as a string as host:port pair (multiple entries are separated with commas)
     * which acts as the central registry for volumes
     * </pre>
     *
     * <code>optional string registry = 1;</code>
     * @return Whether the registry field is set.
     */
    boolean hasRegistry();
    /**
     * <pre>
     * registry represents a single or multiple Quobyte Registry services
     * specified as a string as host:port pair (multiple entries are separated with commas)
     * which acts as the central registry for volumes
     * </pre>
     *
     * <code>optional string registry = 1;</code>
     * @return The registry.
     */
    java.lang.String getRegistry();
    /**
     * <pre>
     * registry represents a single or multiple Quobyte Registry services
     * specified as a string as host:port pair (multiple entries are separated with commas)
     * which acts as the central registry for volumes
     * </pre>
     *
     * <code>optional string registry = 1;</code>
     * @return The bytes for registry.
     */
    com.google.protobuf.ByteString
        getRegistryBytes();

    /**
     * <pre>
     * volume is a string that references an already created Quobyte volume by name.
     * </pre>
     *
     * <code>optional string volume = 2;</code>
     * @return Whether the volume field is set.
     */
    boolean hasVolume();
    /**
     * <pre>
     * volume is a string that references an already created Quobyte volume by name.
     * </pre>
     *
     * <code>optional string volume = 2;</code>
     * @return The volume.
     */
    java.lang.String getVolume();
    /**
     * <pre>
     * volume is a string that references an already created Quobyte volume by name.
     * </pre>
     *
     * <code>optional string volume = 2;</code>
     * @return The bytes for volume.
     */
    com.google.protobuf.ByteString
        getVolumeBytes();

    /**
     * <pre>
     * readOnly here will force the Quobyte volume to be mounted with read-only permissions.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly here will force the Quobyte volume to be mounted with read-only permissions.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * user to map volume access to
     * Defaults to serivceaccount user
     * +optional
     * </pre>
     *
     * <code>optional string user = 4;</code>
     * @return Whether the user field is set.
     */
    boolean hasUser();
    /**
     * <pre>
     * user to map volume access to
     * Defaults to serivceaccount user
     * +optional
     * </pre>
     *
     * <code>optional string user = 4;</code>
     * @return The user.
     */
    java.lang.String getUser();
    /**
     * <pre>
     * user to map volume access to
     * Defaults to serivceaccount user
     * +optional
     * </pre>
     *
     * <code>optional string user = 4;</code>
     * @return The bytes for user.
     */
    com.google.protobuf.ByteString
        getUserBytes();

    /**
     * <pre>
     * group to map volume access to
     * Default is no group
     * +optional
     * </pre>
     *
     * <code>optional string group = 5;</code>
     * @return Whether the group field is set.
     */
    boolean hasGroup();
    /**
     * <pre>
     * group to map volume access to
     * Default is no group
     * +optional
     * </pre>
     *
     * <code>optional string group = 5;</code>
     * @return The group.
     */
    java.lang.String getGroup();
    /**
     * <pre>
     * group to map volume access to
     * Default is no group
     * +optional
     * </pre>
     *
     * <code>optional string group = 5;</code>
     * @return The bytes for group.
     */
    com.google.protobuf.ByteString
        getGroupBytes();

    /**
     * <pre>
     * tenant owning the given Quobyte volume in the Backend
     * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
     * +optional
     * </pre>
     *
     * <code>optional string tenant = 6;</code>
     * @return Whether the tenant field is set.
     */
    boolean hasTenant();
    /**
     * <pre>
     * tenant owning the given Quobyte volume in the Backend
     * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
     * +optional
     * </pre>
     *
     * <code>optional string tenant = 6;</code>
     * @return The tenant.
     */
    java.lang.String getTenant();
    /**
     * <pre>
     * tenant owning the given Quobyte volume in the Backend
     * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
     * +optional
     * </pre>
     *
     * <code>optional string tenant = 6;</code>
     * @return The bytes for tenant.
     */
    com.google.protobuf.ByteString
        getTenantBytes();
  }
  /**
   * <pre>
   * Represents a Quobyte mount that lasts the lifetime of a pod.
   * Quobyte volumes do not support ownership management or SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.QuobyteVolumeSource}
   */
  public static final class QuobyteVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.QuobyteVolumeSource)
      QuobyteVolumeSourceOrBuilder {
  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= */ "",
        QuobyteVolumeSource.class.getName());
    }
    // Use QuobyteVolumeSource.newBuilder() to construct.
    private QuobyteVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private QuobyteVolumeSource() {
      registry_ = "";
      volume_ = "";
      user_ = "";
      group_ = "";
      tenant_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_QuobyteVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_QuobyteVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.QuobyteVolumeSource.class, io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int REGISTRY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object registry_ = "";
    /**
     * <pre>
     * registry represents a single or multiple Quobyte Registry services
     * specified as a string as host:port pair (multiple entries are separated with commas)
     * which acts as the central registry for volumes
     * </pre>
     *
     * <code>optional string registry = 1;</code>
     * @return Whether the registry field is set.
     */
    @java.lang.Override
    public boolean hasRegistry() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * registry represents a single or multiple Quobyte Registry services
     * specified as a string as host:port pair (multiple entries are separated with commas)
     * which acts as the central registry for volumes
     * </pre>
     *
     * <code>optional string registry = 1;</code>
     * @return The registry.
     */
    @java.lang.Override
    public java.lang.String getRegistry() {
      java.lang.Object ref = registry_;
      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()) {
          registry_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * registry represents a single or multiple Quobyte Registry services
     * specified as a string as host:port pair (multiple entries are separated with commas)
     * which acts as the central registry for volumes
     * </pre>
     *
     * <code>optional string registry = 1;</code>
     * @return The bytes for registry.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRegistryBytes() {
      java.lang.Object ref = registry_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        registry_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volume_ = "";
    /**
     * <pre>
     * volume is a string that references an already created Quobyte volume by name.
     * </pre>
     *
     * <code>optional string volume = 2;</code>
     * @return Whether the volume field is set.
     */
    @java.lang.Override
    public boolean hasVolume() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * volume is a string that references an already created Quobyte volume by name.
     * </pre>
     *
     * <code>optional string volume = 2;</code>
     * @return The volume.
     */
    @java.lang.Override
    public java.lang.String getVolume() {
      java.lang.Object ref = volume_;
      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()) {
          volume_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volume is a string that references an already created Quobyte volume by name.
     * </pre>
     *
     * <code>optional string volume = 2;</code>
     * @return The bytes for volume.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeBytes() {
      java.lang.Object ref = volume_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volume_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly here will force the Quobyte volume to be mounted with read-only permissions.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * readOnly here will force the Quobyte volume to be mounted with read-only permissions.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int USER_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object user_ = "";
    /**
     * <pre>
     * user to map volume access to
     * Defaults to serivceaccount user
     * +optional
     * </pre>
     *
     * <code>optional string user = 4;</code>
     * @return Whether the user field is set.
     */
    @java.lang.Override
    public boolean hasUser() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * user to map volume access to
     * Defaults to serivceaccount user
     * +optional
     * </pre>
     *
     * <code>optional string user = 4;</code>
     * @return The user.
     */
    @java.lang.Override
    public java.lang.String getUser() {
      java.lang.Object ref = user_;
      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()) {
          user_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * user to map volume access to
     * Defaults to serivceaccount user
     * +optional
     * </pre>
     *
     * <code>optional string user = 4;</code>
     * @return The bytes for user.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserBytes() {
      java.lang.Object ref = user_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        user_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GROUP_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object group_ = "";
    /**
     * <pre>
     * group to map volume access to
     * Default is no group
     * +optional
     * </pre>
     *
     * <code>optional string group = 5;</code>
     * @return Whether the group field is set.
     */
    @java.lang.Override
    public boolean hasGroup() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * group to map volume access to
     * Default is no group
     * +optional
     * </pre>
     *
     * <code>optional string group = 5;</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 to map volume access to
     * Default is no group
     * +optional
     * </pre>
     *
     * <code>optional string group = 5;</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 TENANT_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object tenant_ = "";
    /**
     * <pre>
     * tenant owning the given Quobyte volume in the Backend
     * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
     * +optional
     * </pre>
     *
     * <code>optional string tenant = 6;</code>
     * @return Whether the tenant field is set.
     */
    @java.lang.Override
    public boolean hasTenant() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * tenant owning the given Quobyte volume in the Backend
     * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
     * +optional
     * </pre>
     *
     * <code>optional string tenant = 6;</code>
     * @return The tenant.
     */
    @java.lang.Override
    public java.lang.String getTenant() {
      java.lang.Object ref = tenant_;
      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()) {
          tenant_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * tenant owning the given Quobyte volume in the Backend
     * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
     * +optional
     * </pre>
     *
     * <code>optional string tenant = 6;</code>
     * @return The bytes for tenant.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTenantBytes() {
      java.lang.Object ref = tenant_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        tenant_ = 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, registry_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, volume_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, user_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, group_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, tenant_);
      }
      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, registry_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, volume_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, user_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, group_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, tenant_);
      }
      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.V1.QuobyteVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.QuobyteVolumeSource other = (io.kubernetes.client.proto.V1.QuobyteVolumeSource) obj;

      if (hasRegistry() != other.hasRegistry()) return false;
      if (hasRegistry()) {
        if (!getRegistry()
            .equals(other.getRegistry())) return false;
      }
      if (hasVolume() != other.hasVolume()) return false;
      if (hasVolume()) {
        if (!getVolume()
            .equals(other.getVolume())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasUser() != other.hasUser()) return false;
      if (hasUser()) {
        if (!getUser()
            .equals(other.getUser())) return false;
      }
      if (hasGroup() != other.hasGroup()) return false;
      if (hasGroup()) {
        if (!getGroup()
            .equals(other.getGroup())) return false;
      }
      if (hasTenant() != other.hasTenant()) return false;
      if (hasTenant()) {
        if (!getTenant()
            .equals(other.getTenant())) 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 (hasRegistry()) {
        hash = (37 * hash) + REGISTRY_FIELD_NUMBER;
        hash = (53 * hash) + getRegistry().hashCode();
      }
      if (hasVolume()) {
        hash = (37 * hash) + VOLUME_FIELD_NUMBER;
        hash = (53 * hash) + getVolume().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasUser()) {
        hash = (37 * hash) + USER_FIELD_NUMBER;
        hash = (53 * hash) + getUser().hashCode();
      }
      if (hasGroup()) {
        hash = (37 * hash) + GROUP_FIELD_NUMBER;
        hash = (53 * hash) + getGroup().hashCode();
      }
      if (hasTenant()) {
        hash = (37 * hash) + TENANT_FIELD_NUMBER;
        hash = (53 * hash) + getTenant().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.QuobyteVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.QuobyteVolumeSource 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.V1.QuobyteVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.QuobyteVolumeSource 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.V1.QuobyteVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.QuobyteVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.QuobyteVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.QuobyteVolumeSource 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.V1.QuobyteVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.QuobyteVolumeSource 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.V1.QuobyteVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.QuobyteVolumeSource 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.V1.QuobyteVolumeSource 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>
     * Represents a Quobyte mount that lasts the lifetime of a pod.
     * Quobyte volumes do not support ownership management or SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.QuobyteVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.QuobyteVolumeSource)
        io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_QuobyteVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_QuobyteVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.QuobyteVolumeSource.class, io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.QuobyteVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        registry_ = "";
        volume_ = "";
        readOnly_ = false;
        user_ = "";
        group_ = "";
        tenant_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_QuobyteVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.QuobyteVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.QuobyteVolumeSource build() {
        io.kubernetes.client.proto.V1.QuobyteVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.QuobyteVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.QuobyteVolumeSource result = new io.kubernetes.client.proto.V1.QuobyteVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.QuobyteVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.registry_ = registry_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.volume_ = volume_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.user_ = user_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.group_ = group_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.tenant_ = tenant_;
          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.V1.QuobyteVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.QuobyteVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.QuobyteVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance()) return this;
        if (other.hasRegistry()) {
          registry_ = other.registry_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasVolume()) {
          volume_ = other.volume_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasUser()) {
          user_ = other.user_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasGroup()) {
          group_ = other.group_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasTenant()) {
          tenant_ = other.tenant_;
          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: {
                registry_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                volume_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                user_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                group_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                tenant_ = 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 registry_ = "";
      /**
       * <pre>
       * registry represents a single or multiple Quobyte Registry services
       * specified as a string as host:port pair (multiple entries are separated with commas)
       * which acts as the central registry for volumes
       * </pre>
       *
       * <code>optional string registry = 1;</code>
       * @return Whether the registry field is set.
       */
      public boolean hasRegistry() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * registry represents a single or multiple Quobyte Registry services
       * specified as a string as host:port pair (multiple entries are separated with commas)
       * which acts as the central registry for volumes
       * </pre>
       *
       * <code>optional string registry = 1;</code>
       * @return The registry.
       */
      public java.lang.String getRegistry() {
        java.lang.Object ref = registry_;
        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()) {
            registry_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * registry represents a single or multiple Quobyte Registry services
       * specified as a string as host:port pair (multiple entries are separated with commas)
       * which acts as the central registry for volumes
       * </pre>
       *
       * <code>optional string registry = 1;</code>
       * @return The bytes for registry.
       */
      public com.google.protobuf.ByteString
          getRegistryBytes() {
        java.lang.Object ref = registry_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          registry_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * registry represents a single or multiple Quobyte Registry services
       * specified as a string as host:port pair (multiple entries are separated with commas)
       * which acts as the central registry for volumes
       * </pre>
       *
       * <code>optional string registry = 1;</code>
       * @param value The registry to set.
       * @return This builder for chaining.
       */
      public Builder setRegistry(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        registry_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * registry represents a single or multiple Quobyte Registry services
       * specified as a string as host:port pair (multiple entries are separated with commas)
       * which acts as the central registry for volumes
       * </pre>
       *
       * <code>optional string registry = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRegistry() {
        registry_ = getDefaultInstance().getRegistry();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * registry represents a single or multiple Quobyte Registry services
       * specified as a string as host:port pair (multiple entries are separated with commas)
       * which acts as the central registry for volumes
       * </pre>
       *
       * <code>optional string registry = 1;</code>
       * @param value The bytes for registry to set.
       * @return This builder for chaining.
       */
      public Builder setRegistryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        registry_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object volume_ = "";
      /**
       * <pre>
       * volume is a string that references an already created Quobyte volume by name.
       * </pre>
       *
       * <code>optional string volume = 2;</code>
       * @return Whether the volume field is set.
       */
      public boolean hasVolume() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * volume is a string that references an already created Quobyte volume by name.
       * </pre>
       *
       * <code>optional string volume = 2;</code>
       * @return The volume.
       */
      public java.lang.String getVolume() {
        java.lang.Object ref = volume_;
        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()) {
            volume_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volume is a string that references an already created Quobyte volume by name.
       * </pre>
       *
       * <code>optional string volume = 2;</code>
       * @return The bytes for volume.
       */
      public com.google.protobuf.ByteString
          getVolumeBytes() {
        java.lang.Object ref = volume_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volume_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volume is a string that references an already created Quobyte volume by name.
       * </pre>
       *
       * <code>optional string volume = 2;</code>
       * @param value The volume to set.
       * @return This builder for chaining.
       */
      public Builder setVolume(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volume_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volume is a string that references an already created Quobyte volume by name.
       * </pre>
       *
       * <code>optional string volume = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolume() {
        volume_ = getDefaultInstance().getVolume();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volume is a string that references an already created Quobyte volume by name.
       * </pre>
       *
       * <code>optional string volume = 2;</code>
       * @param value The bytes for volume to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volume_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly here will force the Quobyte volume to be mounted with read-only permissions.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * readOnly here will force the Quobyte volume to be mounted with read-only permissions.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly here will force the Quobyte volume to be mounted with read-only permissions.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly here will force the Quobyte volume to be mounted with read-only permissions.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object user_ = "";
      /**
       * <pre>
       * user to map volume access to
       * Defaults to serivceaccount user
       * +optional
       * </pre>
       *
       * <code>optional string user = 4;</code>
       * @return Whether the user field is set.
       */
      public boolean hasUser() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * user to map volume access to
       * Defaults to serivceaccount user
       * +optional
       * </pre>
       *
       * <code>optional string user = 4;</code>
       * @return The user.
       */
      public java.lang.String getUser() {
        java.lang.Object ref = user_;
        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()) {
            user_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * user to map volume access to
       * Defaults to serivceaccount user
       * +optional
       * </pre>
       *
       * <code>optional string user = 4;</code>
       * @return The bytes for user.
       */
      public com.google.protobuf.ByteString
          getUserBytes() {
        java.lang.Object ref = user_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          user_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * user to map volume access to
       * Defaults to serivceaccount user
       * +optional
       * </pre>
       *
       * <code>optional string user = 4;</code>
       * @param value The user to set.
       * @return This builder for chaining.
       */
      public Builder setUser(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * user to map volume access to
       * Defaults to serivceaccount user
       * +optional
       * </pre>
       *
       * <code>optional string user = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearUser() {
        user_ = getDefaultInstance().getUser();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * user to map volume access to
       * Defaults to serivceaccount user
       * +optional
       * </pre>
       *
       * <code>optional string user = 4;</code>
       * @param value The bytes for user to set.
       * @return This builder for chaining.
       */
      public Builder setUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object group_ = "";
      /**
       * <pre>
       * group to map volume access to
       * Default is no group
       * +optional
       * </pre>
       *
       * <code>optional string group = 5;</code>
       * @return Whether the group field is set.
       */
      public boolean hasGroup() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * group to map volume access to
       * Default is no group
       * +optional
       * </pre>
       *
       * <code>optional string group = 5;</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 to map volume access to
       * Default is no group
       * +optional
       * </pre>
       *
       * <code>optional string group = 5;</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 to map volume access to
       * Default is no group
       * +optional
       * </pre>
       *
       * <code>optional string group = 5;</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_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * group to map volume access to
       * Default is no group
       * +optional
       * </pre>
       *
       * <code>optional string group = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearGroup() {
        group_ = getDefaultInstance().getGroup();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * group to map volume access to
       * Default is no group
       * +optional
       * </pre>
       *
       * <code>optional string group = 5;</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_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object tenant_ = "";
      /**
       * <pre>
       * tenant owning the given Quobyte volume in the Backend
       * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
       * +optional
       * </pre>
       *
       * <code>optional string tenant = 6;</code>
       * @return Whether the tenant field is set.
       */
      public boolean hasTenant() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * tenant owning the given Quobyte volume in the Backend
       * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
       * +optional
       * </pre>
       *
       * <code>optional string tenant = 6;</code>
       * @return The tenant.
       */
      public java.lang.String getTenant() {
        java.lang.Object ref = tenant_;
        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()) {
            tenant_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * tenant owning the given Quobyte volume in the Backend
       * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
       * +optional
       * </pre>
       *
       * <code>optional string tenant = 6;</code>
       * @return The bytes for tenant.
       */
      public com.google.protobuf.ByteString
          getTenantBytes() {
        java.lang.Object ref = tenant_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tenant_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * tenant owning the given Quobyte volume in the Backend
       * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
       * +optional
       * </pre>
       *
       * <code>optional string tenant = 6;</code>
       * @param value The tenant to set.
       * @return This builder for chaining.
       */
      public Builder setTenant(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        tenant_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * tenant owning the given Quobyte volume in the Backend
       * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
       * +optional
       * </pre>
       *
       * <code>optional string tenant = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTenant() {
        tenant_ = getDefaultInstance().getTenant();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * tenant owning the given Quobyte volume in the Backend
       * Used with dynamically provisioned Quobyte volumes, value is set by the plugin
       * +optional
       * </pre>
       *
       * <code>optional string tenant = 6;</code>
       * @param value The bytes for tenant to set.
       * @return This builder for chaining.
       */
      public Builder setTenantBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        tenant_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.QuobyteVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.QuobyteVolumeSource)
    private static final io.kubernetes.client.proto.V1.QuobyteVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.QuobyteVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.QuobyteVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<QuobyteVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<QuobyteVolumeSource>() {
      @java.lang.Override
      public QuobyteVolumeSource 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<QuobyteVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<QuobyteVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.QuobyteVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RBDPersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.RBDPersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return A list containing the monitors.
     */
    java.util.List<java.lang.String>
        getMonitorsList();
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return The count of monitors.
     */
    int getMonitorsCount();
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the element to return.
     * @return The monitors at the given index.
     */
    java.lang.String getMonitors(int index);
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the monitors at the given index.
     */
    com.google.protobuf.ByteString
        getMonitorsBytes(int index);

    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return Whether the image field is set.
     */
    boolean hasImage();
    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The image.
     */
    java.lang.String getImage();
    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The bytes for image.
     */
    com.google.protobuf.ByteString
        getImageBytes();

    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return Whether the pool field is set.
     */
    boolean hasPool();
    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return The pool.
     */
    java.lang.String getPool();
    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return The bytes for pool.
     */
    com.google.protobuf.ByteString
        getPoolBytes();

    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return Whether the user field is set.
     */
    boolean hasUser();
    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return The user.
     */
    java.lang.String getUser();
    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return The bytes for user.
     */
    com.google.protobuf.ByteString
        getUserBytes();

    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return Whether the keyring field is set.
     */
    boolean hasKeyring();
    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return The keyring.
     */
    java.lang.String getKeyring();
    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return The bytes for keyring.
     */
    com.google.protobuf.ByteString
        getKeyringBytes();

    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getSecretRef();
    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder();

    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 8;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 8;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * Represents a Rados Block Device mount that lasts the lifetime of a pod.
   * RBD volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.RBDPersistentVolumeSource}
   */
  public static final class RBDPersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.RBDPersistentVolumeSource)
      RBDPersistentVolumeSourceOrBuilder {
  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= */ "",
        RBDPersistentVolumeSource.class.getName());
    }
    // Use RBDPersistentVolumeSource.newBuilder() to construct.
    private RBDPersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private RBDPersistentVolumeSource() {
      monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      image_ = "";
      fsType_ = "";
      pool_ = "";
      user_ = "";
      keyring_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RBDPersistentVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RBDPersistentVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.class, io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int MONITORS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList monitors_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return A list containing the monitors.
     */
    public com.google.protobuf.ProtocolStringList
        getMonitorsList() {
      return monitors_;
    }
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return The count of monitors.
     */
    public int getMonitorsCount() {
      return monitors_.size();
    }
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the element to return.
     * @return The monitors at the given index.
     */
    public java.lang.String getMonitors(int index) {
      return monitors_.get(index);
    }
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the monitors at the given index.
     */
    public com.google.protobuf.ByteString
        getMonitorsBytes(int index) {
      return monitors_.getByteString(index);
    }

    public static final int IMAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object image_ = "";
    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return Whether the image field is set.
     */
    @java.lang.Override
    public boolean hasImage() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The image.
     */
    @java.lang.Override
    public java.lang.String getImage() {
      java.lang.Object ref = image_;
      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()) {
          image_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The bytes for image.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getImageBytes() {
      java.lang.Object ref = image_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        image_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int POOL_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object pool_ = "";
    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return Whether the pool field is set.
     */
    @java.lang.Override
    public boolean hasPool() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return The pool.
     */
    @java.lang.Override
    public java.lang.String getPool() {
      java.lang.Object ref = pool_;
      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()) {
          pool_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return The bytes for pool.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPoolBytes() {
      java.lang.Object ref = pool_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pool_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int USER_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object user_ = "";
    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return Whether the user field is set.
     */
    @java.lang.Override
    public boolean hasUser() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return The user.
     */
    @java.lang.Override
    public java.lang.String getUser() {
      java.lang.Object ref = user_;
      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()) {
          user_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return The bytes for user.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserBytes() {
      java.lang.Object ref = user_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        user_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KEYRING_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object keyring_ = "";
    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return Whether the keyring field is set.
     */
    @java.lang.Override
    public boolean hasKeyring() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return The keyring.
     */
    @java.lang.Override
    public java.lang.String getKeyring() {
      java.lang.Object ref = keyring_;
      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()) {
          keyring_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return The bytes for keyring.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyringBytes() {
      java.lang.Object ref = keyring_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        keyring_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECRETREF_FIELD_NUMBER = 7;
    private io.kubernetes.client.proto.V1.SecretReference secretRef_;
    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }

    public static final int READONLY_FIELD_NUMBER = 8;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 8;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 8;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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 < monitors_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, monitors_.getRaw(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, image_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, pool_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, user_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, keyring_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(7, getSecretRef());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeBool(8, readOnly_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < monitors_.size(); i++) {
          dataSize += computeStringSizeNoTag(monitors_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getMonitorsList().size();
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, image_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, pool_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, user_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, keyring_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getSecretRef());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, readOnly_);
      }
      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.V1.RBDPersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.RBDPersistentVolumeSource other = (io.kubernetes.client.proto.V1.RBDPersistentVolumeSource) obj;

      if (!getMonitorsList()
          .equals(other.getMonitorsList())) return false;
      if (hasImage() != other.hasImage()) return false;
      if (hasImage()) {
        if (!getImage()
            .equals(other.getImage())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasPool() != other.hasPool()) return false;
      if (hasPool()) {
        if (!getPool()
            .equals(other.getPool())) return false;
      }
      if (hasUser() != other.hasUser()) return false;
      if (hasUser()) {
        if (!getUser()
            .equals(other.getUser())) return false;
      }
      if (hasKeyring() != other.hasKeyring()) return false;
      if (hasKeyring()) {
        if (!getKeyring()
            .equals(other.getKeyring())) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (getMonitorsCount() > 0) {
        hash = (37 * hash) + MONITORS_FIELD_NUMBER;
        hash = (53 * hash) + getMonitorsList().hashCode();
      }
      if (hasImage()) {
        hash = (37 * hash) + IMAGE_FIELD_NUMBER;
        hash = (53 * hash) + getImage().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasPool()) {
        hash = (37 * hash) + POOL_FIELD_NUMBER;
        hash = (53 * hash) + getPool().hashCode();
      }
      if (hasUser()) {
        hash = (37 * hash) + USER_FIELD_NUMBER;
        hash = (53 * hash) + getUser().hashCode();
      }
      if (hasKeyring()) {
        hash = (37 * hash) + KEYRING_FIELD_NUMBER;
        hash = (53 * hash) + getKeyring().hashCode();
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.RBDPersistentVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.RBDPersistentVolumeSource 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.V1.RBDPersistentVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.RBDPersistentVolumeSource 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.V1.RBDPersistentVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.RBDPersistentVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.RBDPersistentVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.RBDPersistentVolumeSource 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.V1.RBDPersistentVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.RBDPersistentVolumeSource 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.V1.RBDPersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.RBDPersistentVolumeSource 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.V1.RBDPersistentVolumeSource 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>
     * Represents a Rados Block Device mount that lasts the lifetime of a pod.
     * RBD volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.RBDPersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.RBDPersistentVolumeSource)
        io.kubernetes.client.proto.V1.RBDPersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RBDPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RBDPersistentVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.class, io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        monitors_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        image_ = "";
        fsType_ = "";
        pool_ = "";
        user_ = "";
        keyring_ = "";
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        readOnly_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RBDPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.RBDPersistentVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.RBDPersistentVolumeSource build() {
        io.kubernetes.client.proto.V1.RBDPersistentVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.RBDPersistentVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.RBDPersistentVolumeSource result = new io.kubernetes.client.proto.V1.RBDPersistentVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.RBDPersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          monitors_.makeImmutable();
          result.monitors_ = monitors_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.image_ = image_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.pool_ = pool_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.user_ = user_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.keyring_ = keyring_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.RBDPersistentVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.RBDPersistentVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.RBDPersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.RBDPersistentVolumeSource.getDefaultInstance()) return this;
        if (!other.monitors_.isEmpty()) {
          if (monitors_.isEmpty()) {
            monitors_ = other.monitors_;
            bitField0_ |= 0x00000001;
          } else {
            ensureMonitorsIsMutable();
            monitors_.addAll(other.monitors_);
          }
          onChanged();
        }
        if (other.hasImage()) {
          image_ = other.image_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasPool()) {
          pool_ = other.pool_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasUser()) {
          user_ = other.user_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasKeyring()) {
          keyring_ = other.keyring_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureMonitorsIsMutable();
                monitors_.add(bs);
                break;
              } // case 10
              case 18: {
                image_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                pool_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                user_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                keyring_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 64: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringArrayList monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureMonitorsIsMutable() {
        if (!monitors_.isModifiable()) {
          monitors_ = new com.google.protobuf.LazyStringArrayList(monitors_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return A list containing the monitors.
       */
      public com.google.protobuf.ProtocolStringList
          getMonitorsList() {
        monitors_.makeImmutable();
        return monitors_;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return The count of monitors.
       */
      public int getMonitorsCount() {
        return monitors_.size();
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index of the element to return.
       * @return The monitors at the given index.
       */
      public java.lang.String getMonitors(int index) {
        return monitors_.get(index);
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the monitors at the given index.
       */
      public com.google.protobuf.ByteString
          getMonitorsBytes(int index) {
        return monitors_.getByteString(index);
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index to set the value at.
       * @param value The monitors to set.
       * @return This builder for chaining.
       */
      public Builder setMonitors(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param value The monitors to add.
       * @return This builder for chaining.
       */
      public Builder addMonitors(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param values The monitors to add.
       * @return This builder for chaining.
       */
      public Builder addAllMonitors(
          java.lang.Iterable<java.lang.String> values) {
        ensureMonitorsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, monitors_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMonitors() {
        monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param value The bytes of the monitors to add.
       * @return This builder for chaining.
       */
      public Builder addMonitorsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object image_ = "";
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return Whether the image field is set.
       */
      public boolean hasImage() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return The image.
       */
      public java.lang.String getImage() {
        java.lang.Object ref = image_;
        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()) {
            image_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return The bytes for image.
       */
      public com.google.protobuf.ByteString
          getImageBytes() {
        java.lang.Object ref = image_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          image_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @param value The image to set.
       * @return This builder for chaining.
       */
      public Builder setImage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        image_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearImage() {
        image_ = getDefaultInstance().getImage();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @param value The bytes for image to set.
       * @return This builder for chaining.
       */
      public Builder setImageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        image_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object pool_ = "";
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @return Whether the pool field is set.
       */
      public boolean hasPool() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @return The pool.
       */
      public java.lang.String getPool() {
        java.lang.Object ref = pool_;
        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()) {
            pool_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @return The bytes for pool.
       */
      public com.google.protobuf.ByteString
          getPoolBytes() {
        java.lang.Object ref = pool_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pool_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @param value The pool to set.
       * @return This builder for chaining.
       */
      public Builder setPool(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        pool_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPool() {
        pool_ = getDefaultInstance().getPool();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @param value The bytes for pool to set.
       * @return This builder for chaining.
       */
      public Builder setPoolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        pool_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object user_ = "";
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @return Whether the user field is set.
       */
      public boolean hasUser() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @return The user.
       */
      public java.lang.String getUser() {
        java.lang.Object ref = user_;
        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()) {
            user_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @return The bytes for user.
       */
      public com.google.protobuf.ByteString
          getUserBytes() {
        java.lang.Object ref = user_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          user_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @param value The user to set.
       * @return This builder for chaining.
       */
      public Builder setUser(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearUser() {
        user_ = getDefaultInstance().getUser();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @param value The bytes for user to set.
       * @return This builder for chaining.
       */
      public Builder setUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object keyring_ = "";
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @return Whether the keyring field is set.
       */
      public boolean hasKeyring() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @return The keyring.
       */
      public java.lang.String getKeyring() {
        java.lang.Object ref = keyring_;
        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()) {
            keyring_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @return The bytes for keyring.
       */
      public com.google.protobuf.ByteString
          getKeyringBytes() {
        java.lang.Object ref = keyring_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          keyring_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @param value The keyring to set.
       * @return This builder for chaining.
       */
      public Builder setKeyring(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        keyring_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearKeyring() {
        keyring_ = getDefaultInstance().getKeyring();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @param value The bytes for keyring to set.
       * @return This builder for chaining.
       */
      public Builder setKeyringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        keyring_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SecretReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000040);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 8;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 8;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 8;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000080);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.RBDPersistentVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.RBDPersistentVolumeSource)
    private static final io.kubernetes.client.proto.V1.RBDPersistentVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.RBDPersistentVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.RBDPersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RBDPersistentVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<RBDPersistentVolumeSource>() {
      @java.lang.Override
      public RBDPersistentVolumeSource 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<RBDPersistentVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<RBDPersistentVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.RBDPersistentVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RBDVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.RBDVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return A list containing the monitors.
     */
    java.util.List<java.lang.String>
        getMonitorsList();
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return The count of monitors.
     */
    int getMonitorsCount();
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the element to return.
     * @return The monitors at the given index.
     */
    java.lang.String getMonitors(int index);
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the monitors at the given index.
     */
    com.google.protobuf.ByteString
        getMonitorsBytes(int index);

    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return Whether the image field is set.
     */
    boolean hasImage();
    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The image.
     */
    java.lang.String getImage();
    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The bytes for image.
     */
    com.google.protobuf.ByteString
        getImageBytes();

    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return Whether the pool field is set.
     */
    boolean hasPool();
    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return The pool.
     */
    java.lang.String getPool();
    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return The bytes for pool.
     */
    com.google.protobuf.ByteString
        getPoolBytes();

    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return Whether the user field is set.
     */
    boolean hasUser();
    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return The user.
     */
    java.lang.String getUser();
    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return The bytes for user.
     */
    com.google.protobuf.ByteString
        getUserBytes();

    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return Whether the keyring field is set.
     */
    boolean hasKeyring();
    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return The keyring.
     */
    java.lang.String getKeyring();
    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return The bytes for keyring.
     */
    com.google.protobuf.ByteString
        getKeyringBytes();

    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef();
    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder();

    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 8;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 8;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * Represents a Rados Block Device mount that lasts the lifetime of a pod.
   * RBD volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.RBDVolumeSource}
   */
  public static final class RBDVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.RBDVolumeSource)
      RBDVolumeSourceOrBuilder {
  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= */ "",
        RBDVolumeSource.class.getName());
    }
    // Use RBDVolumeSource.newBuilder() to construct.
    private RBDVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private RBDVolumeSource() {
      monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      image_ = "";
      fsType_ = "";
      pool_ = "";
      user_ = "";
      keyring_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RBDVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RBDVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.RBDVolumeSource.class, io.kubernetes.client.proto.V1.RBDVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int MONITORS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList monitors_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return A list containing the monitors.
     */
    public com.google.protobuf.ProtocolStringList
        getMonitorsList() {
      return monitors_;
    }
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @return The count of monitors.
     */
    public int getMonitorsCount() {
      return monitors_.size();
    }
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the element to return.
     * @return The monitors at the given index.
     */
    public java.lang.String getMonitors(int index) {
      return monitors_.get(index);
    }
    /**
     * <pre>
     * monitors is a collection of Ceph monitors.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string monitors = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the monitors at the given index.
     */
    public com.google.protobuf.ByteString
        getMonitorsBytes(int index) {
      return monitors_.getByteString(index);
    }

    public static final int IMAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object image_ = "";
    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return Whether the image field is set.
     */
    @java.lang.Override
    public boolean hasImage() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The image.
     */
    @java.lang.Override
    public java.lang.String getImage() {
      java.lang.Object ref = image_;
      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()) {
          image_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * image is the rados image name.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * </pre>
     *
     * <code>optional string image = 2;</code>
     * @return The bytes for image.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getImageBytes() {
      java.lang.Object ref = image_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        image_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type of the volume that you want to mount.
     * Tip: Ensure that the filesystem type is supported by the host operating system.
     * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
     * TODO: how do we prevent errors in the filesystem from compromising the machine
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int POOL_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object pool_ = "";
    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return Whether the pool field is set.
     */
    @java.lang.Override
    public boolean hasPool() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return The pool.
     */
    @java.lang.Override
    public java.lang.String getPool() {
      java.lang.Object ref = pool_;
      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()) {
          pool_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * pool is the rados pool name.
     * Default is rbd.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string pool = 4;</code>
     * @return The bytes for pool.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPoolBytes() {
      java.lang.Object ref = pool_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pool_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int USER_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object user_ = "";
    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return Whether the user field is set.
     */
    @java.lang.Override
    public boolean hasUser() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return The user.
     */
    @java.lang.Override
    public java.lang.String getUser() {
      java.lang.Object ref = user_;
      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()) {
          user_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * user is the rados user name.
     * Default is admin.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string user = 5;</code>
     * @return The bytes for user.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserBytes() {
      java.lang.Object ref = user_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        user_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KEYRING_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object keyring_ = "";
    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return Whether the keyring field is set.
     */
    @java.lang.Override
    public boolean hasKeyring() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return The keyring.
     */
    @java.lang.Override
    public java.lang.String getKeyring() {
      java.lang.Object ref = keyring_;
      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()) {
          keyring_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * keyring is the path to key ring for RBDUser.
     * Default is /etc/ceph/keyring.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional string keyring = 6;</code>
     * @return The bytes for keyring.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyringBytes() {
      java.lang.Object ref = keyring_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        keyring_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECRETREF_FIELD_NUMBER = 7;
    private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef is name of the authentication secret for RBDUser. If provided
     * overrides keyring.
     * Default is nil.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }

    public static final int READONLY_FIELD_NUMBER = 8;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 8;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * readOnly here will force the ReadOnly setting in VolumeMounts.
     * Defaults to false.
     * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 8;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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 < monitors_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, monitors_.getRaw(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, image_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, pool_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, user_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, keyring_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(7, getSecretRef());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeBool(8, readOnly_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < monitors_.size(); i++) {
          dataSize += computeStringSizeNoTag(monitors_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getMonitorsList().size();
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, image_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, pool_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, user_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, keyring_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getSecretRef());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, readOnly_);
      }
      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.V1.RBDVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.RBDVolumeSource other = (io.kubernetes.client.proto.V1.RBDVolumeSource) obj;

      if (!getMonitorsList()
          .equals(other.getMonitorsList())) return false;
      if (hasImage() != other.hasImage()) return false;
      if (hasImage()) {
        if (!getImage()
            .equals(other.getImage())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasPool() != other.hasPool()) return false;
      if (hasPool()) {
        if (!getPool()
            .equals(other.getPool())) return false;
      }
      if (hasUser() != other.hasUser()) return false;
      if (hasUser()) {
        if (!getUser()
            .equals(other.getUser())) return false;
      }
      if (hasKeyring() != other.hasKeyring()) return false;
      if (hasKeyring()) {
        if (!getKeyring()
            .equals(other.getKeyring())) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (getMonitorsCount() > 0) {
        hash = (37 * hash) + MONITORS_FIELD_NUMBER;
        hash = (53 * hash) + getMonitorsList().hashCode();
      }
      if (hasImage()) {
        hash = (37 * hash) + IMAGE_FIELD_NUMBER;
        hash = (53 * hash) + getImage().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasPool()) {
        hash = (37 * hash) + POOL_FIELD_NUMBER;
        hash = (53 * hash) + getPool().hashCode();
      }
      if (hasUser()) {
        hash = (37 * hash) + USER_FIELD_NUMBER;
        hash = (53 * hash) + getUser().hashCode();
      }
      if (hasKeyring()) {
        hash = (37 * hash) + KEYRING_FIELD_NUMBER;
        hash = (53 * hash) + getKeyring().hashCode();
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.RBDVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.RBDVolumeSource 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.V1.RBDVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.RBDVolumeSource 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.V1.RBDVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.RBDVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.RBDVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.RBDVolumeSource 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.V1.RBDVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.RBDVolumeSource 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.V1.RBDVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.RBDVolumeSource 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.V1.RBDVolumeSource 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>
     * Represents a Rados Block Device mount that lasts the lifetime of a pod.
     * RBD volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.RBDVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.RBDVolumeSource)
        io.kubernetes.client.proto.V1.RBDVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RBDVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RBDVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.RBDVolumeSource.class, io.kubernetes.client.proto.V1.RBDVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.RBDVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        monitors_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        image_ = "";
        fsType_ = "";
        pool_ = "";
        user_ = "";
        keyring_ = "";
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        readOnly_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RBDVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.RBDVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.RBDVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.RBDVolumeSource build() {
        io.kubernetes.client.proto.V1.RBDVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.RBDVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.RBDVolumeSource result = new io.kubernetes.client.proto.V1.RBDVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.RBDVolumeSource result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          monitors_.makeImmutable();
          result.monitors_ = monitors_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.image_ = image_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.pool_ = pool_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.user_ = user_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.keyring_ = keyring_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.readOnly_ = readOnly_;
          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.V1.RBDVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.RBDVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.RBDVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.RBDVolumeSource.getDefaultInstance()) return this;
        if (!other.monitors_.isEmpty()) {
          if (monitors_.isEmpty()) {
            monitors_ = other.monitors_;
            bitField0_ |= 0x00000001;
          } else {
            ensureMonitorsIsMutable();
            monitors_.addAll(other.monitors_);
          }
          onChanged();
        }
        if (other.hasImage()) {
          image_ = other.image_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasPool()) {
          pool_ = other.pool_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasUser()) {
          user_ = other.user_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasKeyring()) {
          keyring_ = other.keyring_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureMonitorsIsMutable();
                monitors_.add(bs);
                break;
              } // case 10
              case 18: {
                image_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                pool_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                user_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                keyring_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 64: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringArrayList monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureMonitorsIsMutable() {
        if (!monitors_.isModifiable()) {
          monitors_ = new com.google.protobuf.LazyStringArrayList(monitors_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return A list containing the monitors.
       */
      public com.google.protobuf.ProtocolStringList
          getMonitorsList() {
        monitors_.makeImmutable();
        return monitors_;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return The count of monitors.
       */
      public int getMonitorsCount() {
        return monitors_.size();
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index of the element to return.
       * @return The monitors at the given index.
       */
      public java.lang.String getMonitors(int index) {
        return monitors_.get(index);
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the monitors at the given index.
       */
      public com.google.protobuf.ByteString
          getMonitorsBytes(int index) {
        return monitors_.getByteString(index);
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param index The index to set the value at.
       * @param value The monitors to set.
       * @return This builder for chaining.
       */
      public Builder setMonitors(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param value The monitors to add.
       * @return This builder for chaining.
       */
      public Builder addMonitors(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param values The monitors to add.
       * @return This builder for chaining.
       */
      public Builder addAllMonitors(
          java.lang.Iterable<java.lang.String> values) {
        ensureMonitorsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, monitors_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMonitors() {
        monitors_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * monitors is a collection of Ceph monitors.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string monitors = 1;</code>
       * @param value The bytes of the monitors to add.
       * @return This builder for chaining.
       */
      public Builder addMonitorsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMonitorsIsMutable();
        monitors_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object image_ = "";
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return Whether the image field is set.
       */
      public boolean hasImage() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return The image.
       */
      public java.lang.String getImage() {
        java.lang.Object ref = image_;
        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()) {
            image_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return The bytes for image.
       */
      public com.google.protobuf.ByteString
          getImageBytes() {
        java.lang.Object ref = image_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          image_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @param value The image to set.
       * @return This builder for chaining.
       */
      public Builder setImage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        image_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearImage() {
        image_ = getDefaultInstance().getImage();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * image is the rados image name.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * </pre>
       *
       * <code>optional string image = 2;</code>
       * @param value The bytes for image to set.
       * @return This builder for chaining.
       */
      public Builder setImageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        image_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type of the volume that you want to mount.
       * Tip: Ensure that the filesystem type is supported by the host operating system.
       * Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
       * TODO: how do we prevent errors in the filesystem from compromising the machine
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object pool_ = "";
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @return Whether the pool field is set.
       */
      public boolean hasPool() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @return The pool.
       */
      public java.lang.String getPool() {
        java.lang.Object ref = pool_;
        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()) {
            pool_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @return The bytes for pool.
       */
      public com.google.protobuf.ByteString
          getPoolBytes() {
        java.lang.Object ref = pool_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pool_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @param value The pool to set.
       * @return This builder for chaining.
       */
      public Builder setPool(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        pool_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPool() {
        pool_ = getDefaultInstance().getPool();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pool is the rados pool name.
       * Default is rbd.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string pool = 4;</code>
       * @param value The bytes for pool to set.
       * @return This builder for chaining.
       */
      public Builder setPoolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        pool_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object user_ = "";
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @return Whether the user field is set.
       */
      public boolean hasUser() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @return The user.
       */
      public java.lang.String getUser() {
        java.lang.Object ref = user_;
        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()) {
            user_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @return The bytes for user.
       */
      public com.google.protobuf.ByteString
          getUserBytes() {
        java.lang.Object ref = user_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          user_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @param value The user to set.
       * @return This builder for chaining.
       */
      public Builder setUser(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearUser() {
        user_ = getDefaultInstance().getUser();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * user is the rados user name.
       * Default is admin.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string user = 5;</code>
       * @param value The bytes for user to set.
       * @return This builder for chaining.
       */
      public Builder setUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object keyring_ = "";
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @return Whether the keyring field is set.
       */
      public boolean hasKeyring() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @return The keyring.
       */
      public java.lang.String getKeyring() {
        java.lang.Object ref = keyring_;
        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()) {
            keyring_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @return The bytes for keyring.
       */
      public com.google.protobuf.ByteString
          getKeyringBytes() {
        java.lang.Object ref = keyring_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          keyring_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @param value The keyring to set.
       * @return This builder for chaining.
       */
      public Builder setKeyring(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        keyring_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearKeyring() {
        keyring_ = getDefaultInstance().getKeyring();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * keyring is the path to key ring for RBDUser.
       * Default is /etc/ceph/keyring.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional string keyring = 6;</code>
       * @param value The bytes for keyring to set.
       * @return This builder for chaining.
       */
      public Builder setKeyringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        keyring_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000040);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef is name of the authentication secret for RBDUser. If provided
       * overrides keyring.
       * Default is nil.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 8;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 8;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 8;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly here will force the ReadOnly setting in VolumeMounts.
       * Defaults to false.
       * More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000080);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.RBDVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.RBDVolumeSource)
    private static final io.kubernetes.client.proto.V1.RBDVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.RBDVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.RBDVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RBDVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<RBDVolumeSource>() {
      @java.lang.Override
      public RBDVolumeSource 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<RBDVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<RBDVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.RBDVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RangeAllocationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.RangeAllocation)
      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>
     * Range is string that identifies the range represented by 'data'.
     * </pre>
     *
     * <code>optional string range = 2;</code>
     * @return Whether the range field is set.
     */
    boolean hasRange();
    /**
     * <pre>
     * Range is string that identifies the range represented by 'data'.
     * </pre>
     *
     * <code>optional string range = 2;</code>
     * @return The range.
     */
    java.lang.String getRange();
    /**
     * <pre>
     * Range is string that identifies the range represented by 'data'.
     * </pre>
     *
     * <code>optional string range = 2;</code>
     * @return The bytes for range.
     */
    com.google.protobuf.ByteString
        getRangeBytes();

    /**
     * <pre>
     * Data is a bit array containing all allocated addresses in the previous segment.
     * </pre>
     *
     * <code>optional bytes data = 3;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Data is a bit array containing all allocated addresses in the previous segment.
     * </pre>
     *
     * <code>optional bytes data = 3;</code>
     * @return The data.
     */
    com.google.protobuf.ByteString getData();
  }
  /**
   * <pre>
   * RangeAllocation is not a public type.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.RangeAllocation}
   */
  public static final class RangeAllocation extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.RangeAllocation)
      RangeAllocationOrBuilder {
  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= */ "",
        RangeAllocation.class.getName());
    }
    // Use RangeAllocation.newBuilder() to construct.
    private RangeAllocation(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private RangeAllocation() {
      range_ = "";
      data_ = com.google.protobuf.ByteString.EMPTY;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RangeAllocation_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RangeAllocation_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.RangeAllocation.class, io.kubernetes.client.proto.V1.RangeAllocation.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 RANGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object range_ = "";
    /**
     * <pre>
     * Range is string that identifies the range represented by 'data'.
     * </pre>
     *
     * <code>optional string range = 2;</code>
     * @return Whether the range field is set.
     */
    @java.lang.Override
    public boolean hasRange() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Range is string that identifies the range represented by 'data'.
     * </pre>
     *
     * <code>optional string range = 2;</code>
     * @return The range.
     */
    @java.lang.Override
    public java.lang.String getRange() {
      java.lang.Object ref = range_;
      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()) {
          range_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Range is string that identifies the range represented by 'data'.
     * </pre>
     *
     * <code>optional string range = 2;</code>
     * @return The bytes for range.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRangeBytes() {
      java.lang.Object ref = range_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        range_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATA_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Data is a bit array containing all allocated addresses in the previous segment.
     * </pre>
     *
     * <code>optional bytes data = 3;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Data is a bit array containing all allocated addresses in the previous segment.
     * </pre>
     *
     * <code>optional bytes data = 3;</code>
     * @return The data.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getData() {
      return data_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getMetadata());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, range_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBytes(3, data_);
      }
      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.GeneratedMessage.computeStringSize(2, range_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, data_);
      }
      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.V1.RangeAllocation)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.RangeAllocation other = (io.kubernetes.client.proto.V1.RangeAllocation) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (hasRange() != other.hasRange()) return false;
      if (hasRange()) {
        if (!getRange()
            .equals(other.getRange())) return false;
      }
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      if (hasRange()) {
        hash = (37 * hash) + RANGE_FIELD_NUMBER;
        hash = (53 * hash) + getRange().hashCode();
      }
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.RangeAllocation parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.RangeAllocation 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.V1.RangeAllocation parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.RangeAllocation 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.V1.RangeAllocation parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.RangeAllocation parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.RangeAllocation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.RangeAllocation 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.V1.RangeAllocation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.RangeAllocation 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.V1.RangeAllocation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.RangeAllocation 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.V1.RangeAllocation 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>
     * RangeAllocation is not a public type.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.RangeAllocation}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.RangeAllocation)
        io.kubernetes.client.proto.V1.RangeAllocationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RangeAllocation_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RangeAllocation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.RangeAllocation.class, io.kubernetes.client.proto.V1.RangeAllocation.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.RangeAllocation.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();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        range_ = "";
        data_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_RangeAllocation_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.RangeAllocation getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.RangeAllocation.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.RangeAllocation build() {
        io.kubernetes.client.proto.V1.RangeAllocation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.RangeAllocation buildPartial() {
        io.kubernetes.client.proto.V1.RangeAllocation result = new io.kubernetes.client.proto.V1.RangeAllocation(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.RangeAllocation 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.range_ = range_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.data_ = data_;
          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.V1.RangeAllocation) {
          return mergeFrom((io.kubernetes.client.proto.V1.RangeAllocation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.RangeAllocation other) {
        if (other == io.kubernetes.client.proto.V1.RangeAllocation.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasRange()) {
          range_ = other.range_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasData()) {
          setData(other.getData());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getMetadataFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                range_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                data_ = 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 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 java.lang.Object range_ = "";
      /**
       * <pre>
       * Range is string that identifies the range represented by 'data'.
       * </pre>
       *
       * <code>optional string range = 2;</code>
       * @return Whether the range field is set.
       */
      public boolean hasRange() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Range is string that identifies the range represented by 'data'.
       * </pre>
       *
       * <code>optional string range = 2;</code>
       * @return The range.
       */
      public java.lang.String getRange() {
        java.lang.Object ref = range_;
        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()) {
            range_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Range is string that identifies the range represented by 'data'.
       * </pre>
       *
       * <code>optional string range = 2;</code>
       * @return The bytes for range.
       */
      public com.google.protobuf.ByteString
          getRangeBytes() {
        java.lang.Object ref = range_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          range_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Range is string that identifies the range represented by 'data'.
       * </pre>
       *
       * <code>optional string range = 2;</code>
       * @param value The range to set.
       * @return This builder for chaining.
       */
      public Builder setRange(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        range_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Range is string that identifies the range represented by 'data'.
       * </pre>
       *
       * <code>optional string range = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRange() {
        range_ = getDefaultInstance().getRange();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Range is string that identifies the range represented by 'data'.
       * </pre>
       *
       * <code>optional string range = 2;</code>
       * @param value The bytes for range to set.
       * @return This builder for chaining.
       */
      public Builder setRangeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        range_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Data is a bit array containing all allocated addresses in the previous segment.
       * </pre>
       *
       * <code>optional bytes data = 3;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Data is a bit array containing all allocated addresses in the previous segment.
       * </pre>
       *
       * <code>optional bytes data = 3;</code>
       * @return The data.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getData() {
        return data_;
      }
      /**
       * <pre>
       * Data is a bit array containing all allocated addresses in the previous segment.
       * </pre>
       *
       * <code>optional bytes data = 3;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        data_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Data is a bit array containing all allocated addresses in the previous segment.
       * </pre>
       *
       * <code>optional bytes data = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000004);
        data_ = getDefaultInstance().getData();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.RangeAllocation)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.RangeAllocation)
    private static final io.kubernetes.client.proto.V1.RangeAllocation DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.RangeAllocation();
    }

    public static io.kubernetes.client.proto.V1.RangeAllocation getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RangeAllocation>
        PARSER = new com.google.protobuf.AbstractParser<RangeAllocation>() {
      @java.lang.Override
      public RangeAllocation 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<RangeAllocation> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<RangeAllocation> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.RangeAllocation getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ReplicationControllerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ReplicationController)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * If the Labels of a ReplicationController are empty, they are defaulted to
     * be the same as the Pod(s) that the replication controller manages.
     * 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>
     * If the Labels of a ReplicationController are empty, they are defaulted to
     * be the same as the Pod(s) that the replication controller manages.
     * 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>
     * If the Labels of a ReplicationController are empty, they are defaulted to
     * be the same as the Pod(s) that the replication controller manages.
     * 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 defines the specification of the desired behavior of the replication controller.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * Spec defines the specification of the desired behavior of the replication controller.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.ReplicationControllerSpec getSpec();
    /**
     * <pre>
     * Spec defines the specification of the desired behavior of the replication controller.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.ReplicationControllerSpecOrBuilder getSpecOrBuilder();

    /**
     * <pre>
     * Status is the most recently observed status of the replication controller.
     * This data may be out of date by some window of time.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Status is the most recently observed status of the replication controller.
     * This data may be out of date by some window of time.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1.ReplicationControllerStatus getStatus();
    /**
     * <pre>
     * Status is the most recently observed status of the replication controller.
     * This data may be out of date by some window of time.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V1.ReplicationControllerStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * ReplicationController represents the configuration of a replication controller.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ReplicationController}
   */
  public static final class ReplicationController extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ReplicationController)
      ReplicationControllerOrBuilder {
  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= */ "",
        ReplicationController.class.getName());
    }
    // Use ReplicationController.newBuilder() to construct.
    private ReplicationController(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ReplicationController() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationController_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationController_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ReplicationController.class, io.kubernetes.client.proto.V1.ReplicationController.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ObjectMeta metadata_;
    /**
     * <pre>
     * If the Labels of a ReplicationController are empty, they are defaulted to
     * be the same as the Pod(s) that the replication controller manages.
     * 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>
     * If the Labels of a ReplicationController are empty, they are defaulted to
     * be the same as the Pod(s) that the replication controller manages.
     * 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>
     * If the Labels of a ReplicationController are empty, they are defaulted to
     * be the same as the Pod(s) that the replication controller manages.
     * 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.V1.ReplicationControllerSpec spec_;
    /**
     * <pre>
     * Spec defines the specification of the desired behavior of the replication controller.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Spec defines the specification of the desired behavior of the replication controller.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.ReplicationControllerSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * Spec defines the specification of the desired behavior of the replication controller.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.ReplicationControllerSpec.getDefaultInstance() : spec_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.ReplicationControllerStatus status_;
    /**
     * <pre>
     * Status is the most recently observed status of the replication controller.
     * This data may be out of date by some window of time.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Status is the most recently observed status of the replication controller.
     * This data may be out of date by some window of time.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1.ReplicationControllerStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * Status is the most recently observed status of the replication controller.
     * This data may be out of date by some window of time.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1.ReplicationControllerStatus.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.V1.ReplicationController)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ReplicationController other = (io.kubernetes.client.proto.V1.ReplicationController) 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.V1.ReplicationController parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationController 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.V1.ReplicationController parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationController 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.V1.ReplicationController parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationController parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ReplicationController parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ReplicationController 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.V1.ReplicationController parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ReplicationController 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.V1.ReplicationController parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ReplicationController 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.V1.ReplicationController 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>
     * ReplicationController represents the configuration of a replication controller.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ReplicationController}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ReplicationController)
        io.kubernetes.client.proto.V1.ReplicationControllerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationController_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationController_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ReplicationController.class, io.kubernetes.client.proto.V1.ReplicationController.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ReplicationController.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.V1.internal_static_k8s_io_api_core_v1_ReplicationController_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationController getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ReplicationController.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationController build() {
        io.kubernetes.client.proto.V1.ReplicationController result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationController buildPartial() {
        io.kubernetes.client.proto.V1.ReplicationController result = new io.kubernetes.client.proto.V1.ReplicationController(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ReplicationController 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.V1.ReplicationController) {
          return mergeFrom((io.kubernetes.client.proto.V1.ReplicationController)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ReplicationController other) {
        if (other == io.kubernetes.client.proto.V1.ReplicationController.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>
       * If the Labels of a ReplicationController are empty, they are defaulted to
       * be the same as the Pod(s) that the replication controller manages.
       * 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>
       * If the Labels of a ReplicationController are empty, they are defaulted to
       * be the same as the Pod(s) that the replication controller manages.
       * 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>
       * If the Labels of a ReplicationController are empty, they are defaulted to
       * be the same as the Pod(s) that the replication controller manages.
       * 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>
       * If the Labels of a ReplicationController are empty, they are defaulted to
       * be the same as the Pod(s) that the replication controller manages.
       * 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>
       * If the Labels of a ReplicationController are empty, they are defaulted to
       * be the same as the Pod(s) that the replication controller manages.
       * 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>
       * If the Labels of a ReplicationController are empty, they are defaulted to
       * be the same as the Pod(s) that the replication controller manages.
       * 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>
       * If the Labels of a ReplicationController are empty, they are defaulted to
       * be the same as the Pod(s) that the replication controller manages.
       * 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>
       * If the Labels of a ReplicationController are empty, they are defaulted to
       * be the same as the Pod(s) that the replication controller manages.
       * 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>
       * If the Labels of a ReplicationController are empty, they are defaulted to
       * be the same as the Pod(s) that the replication controller manages.
       * 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.V1.ReplicationControllerSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ReplicationControllerSpec, io.kubernetes.client.proto.V1.ReplicationControllerSpec.Builder, io.kubernetes.client.proto.V1.ReplicationControllerSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * Spec defines the specification of the desired behavior of the replication controller.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Spec defines the specification of the desired behavior of the replication controller.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.ReplicationControllerSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Spec defines the specification of the desired behavior of the replication controller.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.ReplicationControllerSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the specification of the desired behavior of the replication controller.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.ReplicationControllerSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the specification of the desired behavior of the replication controller.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.ReplicationControllerSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.ReplicationControllerSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Spec defines the specification of the desired behavior of the replication controller.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the specification of the desired behavior of the replication controller.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Spec defines the specification of the desired behavior of the replication controller.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.ReplicationControllerSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * Spec defines the specification of the desired behavior of the replication controller.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ReplicationControllerSpec, io.kubernetes.client.proto.V1.ReplicationControllerSpec.Builder, io.kubernetes.client.proto.V1.ReplicationControllerSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ReplicationControllerSpec, io.kubernetes.client.proto.V1.ReplicationControllerSpec.Builder, io.kubernetes.client.proto.V1.ReplicationControllerSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      private io.kubernetes.client.proto.V1.ReplicationControllerStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ReplicationControllerStatus, io.kubernetes.client.proto.V1.ReplicationControllerStatus.Builder, io.kubernetes.client.proto.V1.ReplicationControllerStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * Status is the most recently observed status of the replication controller.
       * This data may be out of date by some window of time.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Status is the most recently observed status of the replication controller.
       * This data may be out of date by some window of time.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1.ReplicationControllerStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Status is the most recently observed status of the replication controller.
       * This data may be out of date by some window of time.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1.ReplicationControllerStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status is the most recently observed status of the replication controller.
       * This data may be out of date by some window of time.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1.ReplicationControllerStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status is the most recently observed status of the replication controller.
       * This data may be out of date by some window of time.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1.ReplicationControllerStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1.ReplicationControllerStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Status is the most recently observed status of the replication controller.
       * This data may be out of date by some window of time.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status is the most recently observed status of the replication controller.
       * This data may be out of date by some window of time.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Status is the most recently observed status of the replication controller.
       * This data may be out of date by some window of time.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1.ReplicationControllerStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * Status is the most recently observed status of the replication controller.
       * This data may be out of date by some window of time.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ReplicationControllerStatus status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ReplicationControllerStatus, io.kubernetes.client.proto.V1.ReplicationControllerStatus.Builder, io.kubernetes.client.proto.V1.ReplicationControllerStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ReplicationControllerStatus, io.kubernetes.client.proto.V1.ReplicationControllerStatus.Builder, io.kubernetes.client.proto.V1.ReplicationControllerStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ReplicationController)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ReplicationController)
    private static final io.kubernetes.client.proto.V1.ReplicationController DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ReplicationController();
    }

    public static io.kubernetes.client.proto.V1.ReplicationController getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ReplicationController>
        PARSER = new com.google.protobuf.AbstractParser<ReplicationController>() {
      @java.lang.Override
      public ReplicationController 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<ReplicationController> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ReplicationController> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationController getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ReplicationControllerConditionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ReplicationControllerCondition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Type of replication controller condition.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * Type of replication controller condition.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * Type of replication controller condition.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * Status of the condition, one of True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Status of the condition, one of True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The status.
     */
    java.lang.String getStatus();
    /**
     * <pre>
     * Status of the condition, one of True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The bytes for status.
     */
    com.google.protobuf.ByteString
        getStatusBytes();

    /**
     * <pre>
     * The 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>
     * The 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>
     * The 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>
     * The 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>
     * The reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * The 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>
     * A human readable message indicating details about the transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 5;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * A human readable message indicating details about the transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 5;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * A human readable message indicating details about the transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 5;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * <pre>
   * ReplicationControllerCondition describes the state of a replication controller at a certain point.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ReplicationControllerCondition}
   */
  public static final class ReplicationControllerCondition extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ReplicationControllerCondition)
      ReplicationControllerConditionOrBuilder {
  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= */ "",
        ReplicationControllerCondition.class.getName());
    }
    // Use ReplicationControllerCondition.newBuilder() to construct.
    private ReplicationControllerCondition(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ReplicationControllerCondition() {
      type_ = "";
      status_ = "";
      reason_ = "";
      message_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerCondition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerCondition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ReplicationControllerCondition.class, io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * Type of replication controller condition.
     * </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 of replication controller condition.
     * </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 of replication controller condition.
     * </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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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>
     * The 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>
     * The 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>
     * The 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>
     * The 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>
     * The 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>
     * The 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>
     * A human readable message indicating details about the 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>
     * A human readable message indicating details about the 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>
     * A human readable message indicating details about the 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.V1.ReplicationControllerCondition)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ReplicationControllerCondition other = (io.kubernetes.client.proto.V1.ReplicationControllerCondition) 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.V1.ReplicationControllerCondition parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerCondition 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.V1.ReplicationControllerCondition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerCondition 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.V1.ReplicationControllerCondition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerCondition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerCondition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerCondition 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.V1.ReplicationControllerCondition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ReplicationControllerCondition 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.V1.ReplicationControllerCondition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerCondition 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.V1.ReplicationControllerCondition 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>
     * ReplicationControllerCondition describes the state of a replication controller at a certain point.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ReplicationControllerCondition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ReplicationControllerCondition)
        io.kubernetes.client.proto.V1.ReplicationControllerConditionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerCondition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerCondition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ReplicationControllerCondition.class, io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ReplicationControllerCondition.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.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerCondition_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerCondition getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ReplicationControllerCondition.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerCondition build() {
        io.kubernetes.client.proto.V1.ReplicationControllerCondition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerCondition buildPartial() {
        io.kubernetes.client.proto.V1.ReplicationControllerCondition result = new io.kubernetes.client.proto.V1.ReplicationControllerCondition(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ReplicationControllerCondition 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.V1.ReplicationControllerCondition) {
          return mergeFrom((io.kubernetes.client.proto.V1.ReplicationControllerCondition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ReplicationControllerCondition other) {
        if (other == io.kubernetes.client.proto.V1.ReplicationControllerCondition.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 of replication controller condition.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Type of replication controller condition.
       * </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 of replication controller condition.
       * </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 of replication controller condition.
       * </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 of replication controller condition.
       * </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 of replication controller condition.
       * </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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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 of the condition, one of 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * The 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>
       * A human readable message indicating details about the transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 5;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * A human readable message indicating details about the 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>
       * A human readable message indicating details about the 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>
       * A human readable message indicating details about the 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>
       * A human readable message indicating details about the 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>
       * A human readable message indicating details about the 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.api.core.v1.ReplicationControllerCondition)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ReplicationControllerCondition)
    private static final io.kubernetes.client.proto.V1.ReplicationControllerCondition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ReplicationControllerCondition();
    }

    public static io.kubernetes.client.proto.V1.ReplicationControllerCondition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ReplicationControllerCondition>
        PARSER = new com.google.protobuf.AbstractParser<ReplicationControllerCondition>() {
      @java.lang.Override
      public ReplicationControllerCondition 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<ReplicationControllerCondition> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ReplicationControllerCondition> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerCondition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ReplicationControllerListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ReplicationControllerList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * List of replication controllers.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ReplicationController> 
        getItemsList();
    /**
     * <pre>
     * List of replication controllers.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ReplicationController getItems(int index);
    /**
     * <pre>
     * List of replication controllers.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * List of replication controllers.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ReplicationControllerOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * List of replication controllers.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ReplicationControllerOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ReplicationControllerList is a collection of replication controllers.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ReplicationControllerList}
   */
  public static final class ReplicationControllerList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ReplicationControllerList)
      ReplicationControllerListOrBuilder {
  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= */ "",
        ReplicationControllerList.class.getName());
    }
    // Use ReplicationControllerList.newBuilder() to construct.
    private ReplicationControllerList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ReplicationControllerList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ReplicationControllerList.class, io.kubernetes.client.proto.V1.ReplicationControllerList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.ReplicationController> items_;
    /**
     * <pre>
     * List of replication controllers.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ReplicationController> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * List of replication controllers.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ReplicationControllerOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * List of replication controllers.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * List of replication controllers.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationController getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * List of replication controllers.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerOrBuilder 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.V1.ReplicationControllerList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ReplicationControllerList other = (io.kubernetes.client.proto.V1.ReplicationControllerList) 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.V1.ReplicationControllerList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerList 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.V1.ReplicationControllerList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerList 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.V1.ReplicationControllerList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerList 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.V1.ReplicationControllerList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ReplicationControllerList 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.V1.ReplicationControllerList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerList 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.V1.ReplicationControllerList 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>
     * ReplicationControllerList is a collection of replication controllers.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ReplicationControllerList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ReplicationControllerList)
        io.kubernetes.client.proto.V1.ReplicationControllerListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ReplicationControllerList.class, io.kubernetes.client.proto.V1.ReplicationControllerList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ReplicationControllerList.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.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ReplicationControllerList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerList build() {
        io.kubernetes.client.proto.V1.ReplicationControllerList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerList buildPartial() {
        io.kubernetes.client.proto.V1.ReplicationControllerList result = new io.kubernetes.client.proto.V1.ReplicationControllerList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ReplicationControllerList 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.V1.ReplicationControllerList 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.V1.ReplicationControllerList) {
          return mergeFrom((io.kubernetes.client.proto.V1.ReplicationControllerList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ReplicationControllerList other) {
        if (other == io.kubernetes.client.proto.V1.ReplicationControllerList.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.V1.ReplicationController m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ReplicationController.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.ReplicationController> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ReplicationController>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ReplicationController, io.kubernetes.client.proto.V1.ReplicationController.Builder, io.kubernetes.client.proto.V1.ReplicationControllerOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ReplicationController> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationController getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.ReplicationController value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.ReplicationController.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.ReplicationController value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.ReplicationController value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.ReplicationController.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.ReplicationController.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ReplicationController> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationController.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ReplicationControllerOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationController.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ReplicationController.getDefaultInstance());
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationController.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ReplicationController.getDefaultInstance());
      }
      /**
       * <pre>
       * List of replication controllers.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationController items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ReplicationController.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ReplicationController, io.kubernetes.client.proto.V1.ReplicationController.Builder, io.kubernetes.client.proto.V1.ReplicationControllerOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ReplicationController, io.kubernetes.client.proto.V1.ReplicationController.Builder, io.kubernetes.client.proto.V1.ReplicationControllerOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ReplicationControllerList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ReplicationControllerList)
    private static final io.kubernetes.client.proto.V1.ReplicationControllerList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ReplicationControllerList();
    }

    public static io.kubernetes.client.proto.V1.ReplicationControllerList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ReplicationControllerList>
        PARSER = new com.google.protobuf.AbstractParser<ReplicationControllerList>() {
      @java.lang.Override
      public ReplicationControllerList 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<ReplicationControllerList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ReplicationControllerList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ReplicationControllerSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ReplicationControllerSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Replicas is the number of desired replicas.
     * This is a pointer to distinguish between explicit zero and unspecified.
     * Defaults to 1.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
     * +optional
     * </pre>
     *
     * <code>optional int32 replicas = 1;</code>
     * @return Whether the replicas field is set.
     */
    boolean hasReplicas();
    /**
     * <pre>
     * Replicas is the number of desired replicas.
     * This is a pointer to distinguish between explicit zero and unspecified.
     * Defaults to 1.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
     * +optional
     * </pre>
     *
     * <code>optional int32 replicas = 1;</code>
     * @return The replicas.
     */
    int getReplicas();

    /**
     * <pre>
     * Minimum number of seconds for which a newly created pod should be ready
     * without any of its container crashing, for it to be considered available.
     * Defaults to 0 (pod will be considered available as soon as it is ready)
     * +optional
     * </pre>
     *
     * <code>optional int32 minReadySeconds = 4;</code>
     * @return Whether the minReadySeconds field is set.
     */
    boolean hasMinReadySeconds();
    /**
     * <pre>
     * Minimum number of seconds for which a newly created pod should be ready
     * without any of its container crashing, for it to be considered available.
     * Defaults to 0 (pod will be considered available as soon as it is ready)
     * +optional
     * </pre>
     *
     * <code>optional int32 minReadySeconds = 4;</code>
     * @return The minReadySeconds.
     */
    int getMinReadySeconds();

    /**
     * <pre>
     * Selector is a label query over pods that should match the Replicas count.
     * If Selector is empty, it is defaulted to the labels present on the Pod template.
     * Label keys and values that must match in order to be controlled by this replication
     * controller, if empty defaulted to labels on Pod template.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    int getSelectorCount();
    /**
     * <pre>
     * Selector is a label query over pods that should match the Replicas count.
     * If Selector is empty, it is defaulted to the labels present on the Pod template.
     * Label keys and values that must match in order to be controlled by this replication
     * controller, if empty defaulted to labels on Pod template.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    boolean containsSelector(
        java.lang.String key);
    /**
     * Use {@link #getSelectorMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getSelector();
    /**
     * <pre>
     * Selector is a label query over pods that should match the Replicas count.
     * If Selector is empty, it is defaulted to the labels present on the Pod template.
     * Label keys and values that must match in order to be controlled by this replication
     * controller, if empty defaulted to labels on Pod template.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getSelectorMap();
    /**
     * <pre>
     * Selector is a label query over pods that should match the Replicas count.
     * If Selector is empty, it is defaulted to the labels present on the Pod template.
     * Label keys and values that must match in order to be controlled by this replication
     * controller, if empty defaulted to labels on Pod template.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    /* nullable */
java.lang.String getSelectorOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * Selector is a label query over pods that should match the Replicas count.
     * If Selector is empty, it is defaulted to the labels present on the Pod template.
     * Label keys and values that must match in order to be controlled by this replication
     * controller, if empty defaulted to labels on Pod template.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    java.lang.String getSelectorOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Template is the object that describes the pod that will be created if
     * insufficient replicas are detected. This takes precedence over a TemplateRef.
     * The only allowed template.spec.restartPolicy value is "Always".
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
     * @return Whether the template field is set.
     */
    boolean hasTemplate();
    /**
     * <pre>
     * Template is the object that describes the pod that will be created if
     * insufficient replicas are detected. This takes precedence over a TemplateRef.
     * The only allowed template.spec.restartPolicy value is "Always".
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
     * @return The template.
     */
    io.kubernetes.client.proto.V1.PodTemplateSpec getTemplate();
    /**
     * <pre>
     * Template is the object that describes the pod that will be created if
     * insufficient replicas are detected. This takes precedence over a TemplateRef.
     * The only allowed template.spec.restartPolicy value is "Always".
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
     */
    io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder getTemplateOrBuilder();
  }
  /**
   * <pre>
   * ReplicationControllerSpec is the specification of a replication controller.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ReplicationControllerSpec}
   */
  public static final class ReplicationControllerSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ReplicationControllerSpec)
      ReplicationControllerSpecOrBuilder {
  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= */ "",
        ReplicationControllerSpec.class.getName());
    }
    // Use ReplicationControllerSpec.newBuilder() to construct.
    private ReplicationControllerSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ReplicationControllerSpec() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 2:
          return internalGetSelector();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ReplicationControllerSpec.class, io.kubernetes.client.proto.V1.ReplicationControllerSpec.Builder.class);
    }

    private int bitField0_;
    public static final int REPLICAS_FIELD_NUMBER = 1;
    private int replicas_ = 0;
    /**
     * <pre>
     * Replicas is the number of desired replicas.
     * This is a pointer to distinguish between explicit zero and unspecified.
     * Defaults to 1.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
     * +optional
     * </pre>
     *
     * <code>optional int32 replicas = 1;</code>
     * @return Whether the replicas field is set.
     */
    @java.lang.Override
    public boolean hasReplicas() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Replicas is the number of desired replicas.
     * This is a pointer to distinguish between explicit zero and unspecified.
     * Defaults to 1.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
     * +optional
     * </pre>
     *
     * <code>optional int32 replicas = 1;</code>
     * @return The replicas.
     */
    @java.lang.Override
    public int getReplicas() {
      return replicas_;
    }

    public static final int MINREADYSECONDS_FIELD_NUMBER = 4;
    private int minReadySeconds_ = 0;
    /**
     * <pre>
     * Minimum number of seconds for which a newly created pod should be ready
     * without any of its container crashing, for it to be considered available.
     * Defaults to 0 (pod will be considered available as soon as it is ready)
     * +optional
     * </pre>
     *
     * <code>optional int32 minReadySeconds = 4;</code>
     * @return Whether the minReadySeconds field is set.
     */
    @java.lang.Override
    public boolean hasMinReadySeconds() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Minimum number of seconds for which a newly created pod should be ready
     * without any of its container crashing, for it to be considered available.
     * Defaults to 0 (pod will be considered available as soon as it is ready)
     * +optional
     * </pre>
     *
     * <code>optional int32 minReadySeconds = 4;</code>
     * @return The minReadySeconds.
     */
    @java.lang.Override
    public int getMinReadySeconds() {
      return minReadySeconds_;
    }

    public static final int SELECTOR_FIELD_NUMBER = 2;
    private static final class SelectorDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_SelectorEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> selector_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetSelector() {
      if (selector_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            SelectorDefaultEntryHolder.defaultEntry);
      }
      return selector_;
    }
    public int getSelectorCount() {
      return internalGetSelector().getMap().size();
    }
    /**
     * <pre>
     * Selector is a label query over pods that should match the Replicas count.
     * If Selector is empty, it is defaulted to the labels present on the Pod template.
     * Label keys and values that must match in order to be controlled by this replication
     * controller, if empty defaulted to labels on Pod template.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    @java.lang.Override
    public boolean containsSelector(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetSelector().getMap().containsKey(key);
    }
    /**
     * Use {@link #getSelectorMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getSelector() {
      return getSelectorMap();
    }
    /**
     * <pre>
     * Selector is a label query over pods that should match the Replicas count.
     * If Selector is empty, it is defaulted to the labels present on the Pod template.
     * Label keys and values that must match in order to be controlled by this replication
     * controller, if empty defaulted to labels on Pod template.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getSelectorMap() {
      return internalGetSelector().getMap();
    }
    /**
     * <pre>
     * Selector is a label query over pods that should match the Replicas count.
     * If Selector is empty, it is defaulted to the labels present on the Pod template.
     * Label keys and values that must match in order to be controlled by this replication
     * controller, if empty defaulted to labels on Pod template.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getSelectorOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetSelector().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Selector is a label query over pods that should match the Replicas count.
     * If Selector is empty, it is defaulted to the labels present on the Pod template.
     * Label keys and values that must match in order to be controlled by this replication
     * controller, if empty defaulted to labels on Pod template.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    @java.lang.Override
    public java.lang.String getSelectorOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetSelector().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int TEMPLATE_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.PodTemplateSpec template_;
    /**
     * <pre>
     * Template is the object that describes the pod that will be created if
     * insufficient replicas are detected. This takes precedence over a TemplateRef.
     * The only allowed template.spec.restartPolicy value is "Always".
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
     * @return Whether the template field is set.
     */
    @java.lang.Override
    public boolean hasTemplate() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Template is the object that describes the pod that will be created if
     * insufficient replicas are detected. This takes precedence over a TemplateRef.
     * The only allowed template.spec.restartPolicy value is "Always".
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
     * @return The template.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodTemplateSpec getTemplate() {
      return template_ == null ? io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance() : template_;
    }
    /**
     * <pre>
     * Template is the object that describes the pod that will be created if
     * insufficient replicas are detected. This takes precedence over a TemplateRef.
     * The only allowed template.spec.restartPolicy value is "Always".
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder getTemplateOrBuilder() {
      return template_ == null ? io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance() : template_;
    }

    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.writeInt32(1, replicas_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetSelector(),
          SelectorDefaultEntryHolder.defaultEntry,
          2);
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getTemplate());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(4, minReadySeconds_);
      }
      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
          .computeInt32Size(1, replicas_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetSelector().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        selector__ = SelectorDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, selector__);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getTemplate());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, minReadySeconds_);
      }
      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.V1.ReplicationControllerSpec)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ReplicationControllerSpec other = (io.kubernetes.client.proto.V1.ReplicationControllerSpec) obj;

      if (hasReplicas() != other.hasReplicas()) return false;
      if (hasReplicas()) {
        if (getReplicas()
            != other.getReplicas()) return false;
      }
      if (hasMinReadySeconds() != other.hasMinReadySeconds()) return false;
      if (hasMinReadySeconds()) {
        if (getMinReadySeconds()
            != other.getMinReadySeconds()) return false;
      }
      if (!internalGetSelector().equals(
          other.internalGetSelector())) return false;
      if (hasTemplate() != other.hasTemplate()) return false;
      if (hasTemplate()) {
        if (!getTemplate()
            .equals(other.getTemplate())) 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 (hasReplicas()) {
        hash = (37 * hash) + REPLICAS_FIELD_NUMBER;
        hash = (53 * hash) + getReplicas();
      }
      if (hasMinReadySeconds()) {
        hash = (37 * hash) + MINREADYSECONDS_FIELD_NUMBER;
        hash = (53 * hash) + getMinReadySeconds();
      }
      if (!internalGetSelector().getMap().isEmpty()) {
        hash = (37 * hash) + SELECTOR_FIELD_NUMBER;
        hash = (53 * hash) + internalGetSelector().hashCode();
      }
      if (hasTemplate()) {
        hash = (37 * hash) + TEMPLATE_FIELD_NUMBER;
        hash = (53 * hash) + getTemplate().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ReplicationControllerSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerSpec 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.V1.ReplicationControllerSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerSpec 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.V1.ReplicationControllerSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerSpec 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.V1.ReplicationControllerSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ReplicationControllerSpec 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.V1.ReplicationControllerSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerSpec 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.V1.ReplicationControllerSpec 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>
     * ReplicationControllerSpec is the specification of a replication controller.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ReplicationControllerSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ReplicationControllerSpec)
        io.kubernetes.client.proto.V1.ReplicationControllerSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetSelector();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableSelector();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ReplicationControllerSpec.class, io.kubernetes.client.proto.V1.ReplicationControllerSpec.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ReplicationControllerSpec.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getTemplateFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        replicas_ = 0;
        minReadySeconds_ = 0;
        internalGetMutableSelector().clear();
        template_ = null;
        if (templateBuilder_ != null) {
          templateBuilder_.dispose();
          templateBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ReplicationControllerSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerSpec build() {
        io.kubernetes.client.proto.V1.ReplicationControllerSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerSpec buildPartial() {
        io.kubernetes.client.proto.V1.ReplicationControllerSpec result = new io.kubernetes.client.proto.V1.ReplicationControllerSpec(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ReplicationControllerSpec result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.replicas_ = replicas_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.minReadySeconds_ = minReadySeconds_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.selector_ = internalGetSelector();
          result.selector_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.template_ = templateBuilder_ == null
              ? template_
              : templateBuilder_.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.V1.ReplicationControllerSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1.ReplicationControllerSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ReplicationControllerSpec other) {
        if (other == io.kubernetes.client.proto.V1.ReplicationControllerSpec.getDefaultInstance()) return this;
        if (other.hasReplicas()) {
          setReplicas(other.getReplicas());
        }
        if (other.hasMinReadySeconds()) {
          setMinReadySeconds(other.getMinReadySeconds());
        }
        internalGetMutableSelector().mergeFrom(
            other.internalGetSelector());
        bitField0_ |= 0x00000004;
        if (other.hasTemplate()) {
          mergeTemplate(other.getTemplate());
        }
        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: {
                replicas_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                selector__ = input.readMessage(
                    SelectorDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableSelector().getMutableMap().put(
                    selector__.getKey(), selector__.getValue());
                bitField0_ |= 0x00000004;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getTemplateFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 26
              case 32: {
                minReadySeconds_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int replicas_ ;
      /**
       * <pre>
       * Replicas is the number of desired replicas.
       * This is a pointer to distinguish between explicit zero and unspecified.
       * Defaults to 1.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
       * +optional
       * </pre>
       *
       * <code>optional int32 replicas = 1;</code>
       * @return Whether the replicas field is set.
       */
      @java.lang.Override
      public boolean hasReplicas() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Replicas is the number of desired replicas.
       * This is a pointer to distinguish between explicit zero and unspecified.
       * Defaults to 1.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
       * +optional
       * </pre>
       *
       * <code>optional int32 replicas = 1;</code>
       * @return The replicas.
       */
      @java.lang.Override
      public int getReplicas() {
        return replicas_;
      }
      /**
       * <pre>
       * Replicas is the number of desired replicas.
       * This is a pointer to distinguish between explicit zero and unspecified.
       * Defaults to 1.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
       * +optional
       * </pre>
       *
       * <code>optional int32 replicas = 1;</code>
       * @param value The replicas to set.
       * @return This builder for chaining.
       */
      public Builder setReplicas(int value) {

        replicas_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Replicas is the number of desired replicas.
       * This is a pointer to distinguish between explicit zero and unspecified.
       * Defaults to 1.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
       * +optional
       * </pre>
       *
       * <code>optional int32 replicas = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearReplicas() {
        bitField0_ = (bitField0_ & ~0x00000001);
        replicas_ = 0;
        onChanged();
        return this;
      }

      private int minReadySeconds_ ;
      /**
       * <pre>
       * Minimum number of seconds for which a newly created pod should be ready
       * without any of its container crashing, for it to be considered available.
       * Defaults to 0 (pod will be considered available as soon as it is ready)
       * +optional
       * </pre>
       *
       * <code>optional int32 minReadySeconds = 4;</code>
       * @return Whether the minReadySeconds field is set.
       */
      @java.lang.Override
      public boolean hasMinReadySeconds() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Minimum number of seconds for which a newly created pod should be ready
       * without any of its container crashing, for it to be considered available.
       * Defaults to 0 (pod will be considered available as soon as it is ready)
       * +optional
       * </pre>
       *
       * <code>optional int32 minReadySeconds = 4;</code>
       * @return The minReadySeconds.
       */
      @java.lang.Override
      public int getMinReadySeconds() {
        return minReadySeconds_;
      }
      /**
       * <pre>
       * Minimum number of seconds for which a newly created pod should be ready
       * without any of its container crashing, for it to be considered available.
       * Defaults to 0 (pod will be considered available as soon as it is ready)
       * +optional
       * </pre>
       *
       * <code>optional int32 minReadySeconds = 4;</code>
       * @param value The minReadySeconds to set.
       * @return This builder for chaining.
       */
      public Builder setMinReadySeconds(int value) {

        minReadySeconds_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Minimum number of seconds for which a newly created pod should be ready
       * without any of its container crashing, for it to be considered available.
       * Defaults to 0 (pod will be considered available as soon as it is ready)
       * +optional
       * </pre>
       *
       * <code>optional int32 minReadySeconds = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMinReadySeconds() {
        bitField0_ = (bitField0_ & ~0x00000002);
        minReadySeconds_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> selector_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetSelector() {
        if (selector_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              SelectorDefaultEntryHolder.defaultEntry);
        }
        return selector_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableSelector() {
        if (selector_ == null) {
          selector_ = com.google.protobuf.MapField.newMapField(
              SelectorDefaultEntryHolder.defaultEntry);
        }
        if (!selector_.isMutable()) {
          selector_ = selector_.copy();
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return selector_;
      }
      public int getSelectorCount() {
        return internalGetSelector().getMap().size();
      }
      /**
       * <pre>
       * Selector is a label query over pods that should match the Replicas count.
       * If Selector is empty, it is defaulted to the labels present on the Pod template.
       * Label keys and values that must match in order to be controlled by this replication
       * controller, if empty defaulted to labels on Pod template.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      @java.lang.Override
      public boolean containsSelector(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetSelector().getMap().containsKey(key);
      }
      /**
       * Use {@link #getSelectorMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getSelector() {
        return getSelectorMap();
      }
      /**
       * <pre>
       * Selector is a label query over pods that should match the Replicas count.
       * If Selector is empty, it is defaulted to the labels present on the Pod template.
       * Label keys and values that must match in order to be controlled by this replication
       * controller, if empty defaulted to labels on Pod template.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getSelectorMap() {
        return internalGetSelector().getMap();
      }
      /**
       * <pre>
       * Selector is a label query over pods that should match the Replicas count.
       * If Selector is empty, it is defaulted to the labels present on the Pod template.
       * Label keys and values that must match in order to be controlled by this replication
       * controller, if empty defaulted to labels on Pod template.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getSelectorOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetSelector().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Selector is a label query over pods that should match the Replicas count.
       * If Selector is empty, it is defaulted to the labels present on the Pod template.
       * Label keys and values that must match in order to be controlled by this replication
       * controller, if empty defaulted to labels on Pod template.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      @java.lang.Override
      public java.lang.String getSelectorOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetSelector().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearSelector() {
        bitField0_ = (bitField0_ & ~0x00000004);
        internalGetMutableSelector().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Selector is a label query over pods that should match the Replicas count.
       * If Selector is empty, it is defaulted to the labels present on the Pod template.
       * Label keys and values that must match in order to be controlled by this replication
       * controller, if empty defaulted to labels on Pod template.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      public Builder removeSelector(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableSelector().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableSelector() {
        bitField0_ |= 0x00000004;
        return internalGetMutableSelector().getMutableMap();
      }
      /**
       * <pre>
       * Selector is a label query over pods that should match the Replicas count.
       * If Selector is empty, it is defaulted to the labels present on the Pod template.
       * Label keys and values that must match in order to be controlled by this replication
       * controller, if empty defaulted to labels on Pod template.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      public Builder putSelector(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableSelector().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Selector is a label query over pods that should match the Replicas count.
       * If Selector is empty, it is defaulted to the labels present on the Pod template.
       * Label keys and values that must match in order to be controlled by this replication
       * controller, if empty defaulted to labels on Pod template.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      public Builder putAllSelector(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableSelector().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000004;
        return this;
      }

      private io.kubernetes.client.proto.V1.PodTemplateSpec template_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodTemplateSpec, io.kubernetes.client.proto.V1.PodTemplateSpec.Builder, io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder> templateBuilder_;
      /**
       * <pre>
       * Template is the object that describes the pod that will be created if
       * insufficient replicas are detected. This takes precedence over a TemplateRef.
       * The only allowed template.spec.restartPolicy value is "Always".
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
       * @return Whether the template field is set.
       */
      public boolean hasTemplate() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Template is the object that describes the pod that will be created if
       * insufficient replicas are detected. This takes precedence over a TemplateRef.
       * The only allowed template.spec.restartPolicy value is "Always".
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
       * @return The template.
       */
      public io.kubernetes.client.proto.V1.PodTemplateSpec getTemplate() {
        if (templateBuilder_ == null) {
          return template_ == null ? io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance() : template_;
        } else {
          return templateBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Template is the object that describes the pod that will be created if
       * insufficient replicas are detected. This takes precedence over a TemplateRef.
       * The only allowed template.spec.restartPolicy value is "Always".
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
       */
      public Builder setTemplate(io.kubernetes.client.proto.V1.PodTemplateSpec value) {
        if (templateBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          template_ = value;
        } else {
          templateBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Template is the object that describes the pod that will be created if
       * insufficient replicas are detected. This takes precedence over a TemplateRef.
       * The only allowed template.spec.restartPolicy value is "Always".
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
       */
      public Builder setTemplate(
          io.kubernetes.client.proto.V1.PodTemplateSpec.Builder builderForValue) {
        if (templateBuilder_ == null) {
          template_ = builderForValue.build();
        } else {
          templateBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Template is the object that describes the pod that will be created if
       * insufficient replicas are detected. This takes precedence over a TemplateRef.
       * The only allowed template.spec.restartPolicy value is "Always".
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
       */
      public Builder mergeTemplate(io.kubernetes.client.proto.V1.PodTemplateSpec value) {
        if (templateBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            template_ != null &&
            template_ != io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance()) {
            getTemplateBuilder().mergeFrom(value);
          } else {
            template_ = value;
          }
        } else {
          templateBuilder_.mergeFrom(value);
        }
        if (template_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Template is the object that describes the pod that will be created if
       * insufficient replicas are detected. This takes precedence over a TemplateRef.
       * The only allowed template.spec.restartPolicy value is "Always".
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
       */
      public Builder clearTemplate() {
        bitField0_ = (bitField0_ & ~0x00000008);
        template_ = null;
        if (templateBuilder_ != null) {
          templateBuilder_.dispose();
          templateBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Template is the object that describes the pod that will be created if
       * insufficient replicas are detected. This takes precedence over a TemplateRef.
       * The only allowed template.spec.restartPolicy value is "Always".
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodTemplateSpec.Builder getTemplateBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getTemplateFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Template is the object that describes the pod that will be created if
       * insufficient replicas are detected. This takes precedence over a TemplateRef.
       * The only allowed template.spec.restartPolicy value is "Always".
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
       */
      public io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder getTemplateOrBuilder() {
        if (templateBuilder_ != null) {
          return templateBuilder_.getMessageOrBuilder();
        } else {
          return template_ == null ?
              io.kubernetes.client.proto.V1.PodTemplateSpec.getDefaultInstance() : template_;
        }
      }
      /**
       * <pre>
       * Template is the object that describes the pod that will be created if
       * insufficient replicas are detected. This takes precedence over a TemplateRef.
       * The only allowed template.spec.restartPolicy value is "Always".
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodTemplateSpec template = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodTemplateSpec, io.kubernetes.client.proto.V1.PodTemplateSpec.Builder, io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder> 
          getTemplateFieldBuilder() {
        if (templateBuilder_ == null) {
          templateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodTemplateSpec, io.kubernetes.client.proto.V1.PodTemplateSpec.Builder, io.kubernetes.client.proto.V1.PodTemplateSpecOrBuilder>(
                  getTemplate(),
                  getParentForChildren(),
                  isClean());
          template_ = null;
        }
        return templateBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ReplicationControllerSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ReplicationControllerSpec)
    private static final io.kubernetes.client.proto.V1.ReplicationControllerSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ReplicationControllerSpec();
    }

    public static io.kubernetes.client.proto.V1.ReplicationControllerSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ReplicationControllerSpec>
        PARSER = new com.google.protobuf.AbstractParser<ReplicationControllerSpec>() {
      @java.lang.Override
      public ReplicationControllerSpec 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<ReplicationControllerSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ReplicationControllerSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ReplicationControllerStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ReplicationControllerStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Replicas is the most recently observed number of replicas.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
     * </pre>
     *
     * <code>optional int32 replicas = 1;</code>
     * @return Whether the replicas field is set.
     */
    boolean hasReplicas();
    /**
     * <pre>
     * Replicas is the most recently observed number of replicas.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
     * </pre>
     *
     * <code>optional int32 replicas = 1;</code>
     * @return The replicas.
     */
    int getReplicas();

    /**
     * <pre>
     * The number of pods that have labels matching the labels of the pod template of the replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 fullyLabeledReplicas = 2;</code>
     * @return Whether the fullyLabeledReplicas field is set.
     */
    boolean hasFullyLabeledReplicas();
    /**
     * <pre>
     * The number of pods that have labels matching the labels of the pod template of the replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 fullyLabeledReplicas = 2;</code>
     * @return The fullyLabeledReplicas.
     */
    int getFullyLabeledReplicas();

    /**
     * <pre>
     * The number of ready replicas for this replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 readyReplicas = 4;</code>
     * @return Whether the readyReplicas field is set.
     */
    boolean hasReadyReplicas();
    /**
     * <pre>
     * The number of ready replicas for this replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 readyReplicas = 4;</code>
     * @return The readyReplicas.
     */
    int getReadyReplicas();

    /**
     * <pre>
     * The number of available replicas (ready for at least minReadySeconds) for this replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 availableReplicas = 5;</code>
     * @return Whether the availableReplicas field is set.
     */
    boolean hasAvailableReplicas();
    /**
     * <pre>
     * The number of available replicas (ready for at least minReadySeconds) for this replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 availableReplicas = 5;</code>
     * @return The availableReplicas.
     */
    int getAvailableReplicas();

    /**
     * <pre>
     * ObservedGeneration reflects the generation of the most recently observed replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int64 observedGeneration = 3;</code>
     * @return Whether the observedGeneration field is set.
     */
    boolean hasObservedGeneration();
    /**
     * <pre>
     * ObservedGeneration reflects the generation of the most recently observed replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int64 observedGeneration = 3;</code>
     * @return The observedGeneration.
     */
    long getObservedGeneration();

    /**
     * <pre>
     * Represents the latest available observations of a replication controller's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ReplicationControllerCondition> 
        getConditionsList();
    /**
     * <pre>
     * Represents the latest available observations of a replication controller's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
     */
    io.kubernetes.client.proto.V1.ReplicationControllerCondition getConditions(int index);
    /**
     * <pre>
     * Represents the latest available observations of a replication controller's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
     */
    int getConditionsCount();
    /**
     * <pre>
     * Represents the latest available observations of a replication controller's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ReplicationControllerConditionOrBuilder> 
        getConditionsOrBuilderList();
    /**
     * <pre>
     * Represents the latest available observations of a replication controller's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
     */
    io.kubernetes.client.proto.V1.ReplicationControllerConditionOrBuilder getConditionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ReplicationControllerStatus represents the current status of a replication
   * controller.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ReplicationControllerStatus}
   */
  public static final class ReplicationControllerStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ReplicationControllerStatus)
      ReplicationControllerStatusOrBuilder {
  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= */ "",
        ReplicationControllerStatus.class.getName());
    }
    // Use ReplicationControllerStatus.newBuilder() to construct.
    private ReplicationControllerStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ReplicationControllerStatus() {
      conditions_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ReplicationControllerStatus.class, io.kubernetes.client.proto.V1.ReplicationControllerStatus.Builder.class);
    }

    private int bitField0_;
    public static final int REPLICAS_FIELD_NUMBER = 1;
    private int replicas_ = 0;
    /**
     * <pre>
     * Replicas is the most recently observed number of replicas.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
     * </pre>
     *
     * <code>optional int32 replicas = 1;</code>
     * @return Whether the replicas field is set.
     */
    @java.lang.Override
    public boolean hasReplicas() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Replicas is the most recently observed number of replicas.
     * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
     * </pre>
     *
     * <code>optional int32 replicas = 1;</code>
     * @return The replicas.
     */
    @java.lang.Override
    public int getReplicas() {
      return replicas_;
    }

    public static final int FULLYLABELEDREPLICAS_FIELD_NUMBER = 2;
    private int fullyLabeledReplicas_ = 0;
    /**
     * <pre>
     * The number of pods that have labels matching the labels of the pod template of the replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 fullyLabeledReplicas = 2;</code>
     * @return Whether the fullyLabeledReplicas field is set.
     */
    @java.lang.Override
    public boolean hasFullyLabeledReplicas() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The number of pods that have labels matching the labels of the pod template of the replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 fullyLabeledReplicas = 2;</code>
     * @return The fullyLabeledReplicas.
     */
    @java.lang.Override
    public int getFullyLabeledReplicas() {
      return fullyLabeledReplicas_;
    }

    public static final int READYREPLICAS_FIELD_NUMBER = 4;
    private int readyReplicas_ = 0;
    /**
     * <pre>
     * The number of ready replicas for this replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 readyReplicas = 4;</code>
     * @return Whether the readyReplicas field is set.
     */
    @java.lang.Override
    public boolean hasReadyReplicas() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The number of ready replicas for this replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 readyReplicas = 4;</code>
     * @return The readyReplicas.
     */
    @java.lang.Override
    public int getReadyReplicas() {
      return readyReplicas_;
    }

    public static final int AVAILABLEREPLICAS_FIELD_NUMBER = 5;
    private int availableReplicas_ = 0;
    /**
     * <pre>
     * The number of available replicas (ready for at least minReadySeconds) for this replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 availableReplicas = 5;</code>
     * @return Whether the availableReplicas field is set.
     */
    @java.lang.Override
    public boolean hasAvailableReplicas() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * The number of available replicas (ready for at least minReadySeconds) for this replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int32 availableReplicas = 5;</code>
     * @return The availableReplicas.
     */
    @java.lang.Override
    public int getAvailableReplicas() {
      return availableReplicas_;
    }

    public static final int OBSERVEDGENERATION_FIELD_NUMBER = 3;
    private long observedGeneration_ = 0L;
    /**
     * <pre>
     * ObservedGeneration reflects the generation of the most recently observed replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int64 observedGeneration = 3;</code>
     * @return Whether the observedGeneration field is set.
     */
    @java.lang.Override
    public boolean hasObservedGeneration() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * ObservedGeneration reflects the generation of the most recently observed replication controller.
     * +optional
     * </pre>
     *
     * <code>optional int64 observedGeneration = 3;</code>
     * @return The observedGeneration.
     */
    @java.lang.Override
    public long getObservedGeneration() {
      return observedGeneration_;
    }

    public static final int CONDITIONS_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ReplicationControllerCondition> conditions_;
    /**
     * <pre>
     * Represents the latest available observations of a replication controller's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ReplicationControllerCondition> getConditionsList() {
      return conditions_;
    }
    /**
     * <pre>
     * Represents the latest available observations of a replication controller's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ReplicationControllerConditionOrBuilder> 
        getConditionsOrBuilderList() {
      return conditions_;
    }
    /**
     * <pre>
     * Represents the latest available observations of a replication controller's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
     */
    @java.lang.Override
    public int getConditionsCount() {
      return conditions_.size();
    }
    /**
     * <pre>
     * Represents the latest available observations of a replication controller's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerCondition getConditions(int index) {
      return conditions_.get(index);
    }
    /**
     * <pre>
     * Represents the latest available observations of a replication controller's current state.
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerConditionOrBuilder getConditionsOrBuilder(
        int index) {
      return conditions_.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.writeInt32(1, replicas_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, fullyLabeledReplicas_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt64(3, observedGeneration_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(4, readyReplicas_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt32(5, availableReplicas_);
      }
      for (int i = 0; i < conditions_.size(); i++) {
        output.writeMessage(6, conditions_.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
          .computeInt32Size(1, replicas_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, fullyLabeledReplicas_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, observedGeneration_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, readyReplicas_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, availableReplicas_);
      }
      for (int i = 0; i < conditions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, conditions_.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.V1.ReplicationControllerStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ReplicationControllerStatus other = (io.kubernetes.client.proto.V1.ReplicationControllerStatus) obj;

      if (hasReplicas() != other.hasReplicas()) return false;
      if (hasReplicas()) {
        if (getReplicas()
            != other.getReplicas()) return false;
      }
      if (hasFullyLabeledReplicas() != other.hasFullyLabeledReplicas()) return false;
      if (hasFullyLabeledReplicas()) {
        if (getFullyLabeledReplicas()
            != other.getFullyLabeledReplicas()) return false;
      }
      if (hasReadyReplicas() != other.hasReadyReplicas()) return false;
      if (hasReadyReplicas()) {
        if (getReadyReplicas()
            != other.getReadyReplicas()) return false;
      }
      if (hasAvailableReplicas() != other.hasAvailableReplicas()) return false;
      if (hasAvailableReplicas()) {
        if (getAvailableReplicas()
            != other.getAvailableReplicas()) return false;
      }
      if (hasObservedGeneration() != other.hasObservedGeneration()) return false;
      if (hasObservedGeneration()) {
        if (getObservedGeneration()
            != other.getObservedGeneration()) return false;
      }
      if (!getConditionsList()
          .equals(other.getConditionsList())) 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 (hasReplicas()) {
        hash = (37 * hash) + REPLICAS_FIELD_NUMBER;
        hash = (53 * hash) + getReplicas();
      }
      if (hasFullyLabeledReplicas()) {
        hash = (37 * hash) + FULLYLABELEDREPLICAS_FIELD_NUMBER;
        hash = (53 * hash) + getFullyLabeledReplicas();
      }
      if (hasReadyReplicas()) {
        hash = (37 * hash) + READYREPLICAS_FIELD_NUMBER;
        hash = (53 * hash) + getReadyReplicas();
      }
      if (hasAvailableReplicas()) {
        hash = (37 * hash) + AVAILABLEREPLICAS_FIELD_NUMBER;
        hash = (53 * hash) + getAvailableReplicas();
      }
      if (hasObservedGeneration()) {
        hash = (37 * hash) + OBSERVEDGENERATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getObservedGeneration());
      }
      if (getConditionsCount() > 0) {
        hash = (37 * hash) + CONDITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConditionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ReplicationControllerStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerStatus 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.V1.ReplicationControllerStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerStatus 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.V1.ReplicationControllerStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerStatus 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.V1.ReplicationControllerStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ReplicationControllerStatus 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.V1.ReplicationControllerStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ReplicationControllerStatus 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.V1.ReplicationControllerStatus 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>
     * ReplicationControllerStatus represents the current status of a replication
     * controller.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ReplicationControllerStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ReplicationControllerStatus)
        io.kubernetes.client.proto.V1.ReplicationControllerStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ReplicationControllerStatus.class, io.kubernetes.client.proto.V1.ReplicationControllerStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ReplicationControllerStatus.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        replicas_ = 0;
        fullyLabeledReplicas_ = 0;
        readyReplicas_ = 0;
        availableReplicas_ = 0;
        observedGeneration_ = 0L;
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
        } else {
          conditions_ = null;
          conditionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ReplicationControllerStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ReplicationControllerStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerStatus build() {
        io.kubernetes.client.proto.V1.ReplicationControllerStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ReplicationControllerStatus buildPartial() {
        io.kubernetes.client.proto.V1.ReplicationControllerStatus result = new io.kubernetes.client.proto.V1.ReplicationControllerStatus(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ReplicationControllerStatus result) {
        if (conditionsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            conditions_ = java.util.Collections.unmodifiableList(conditions_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.conditions_ = conditions_;
        } else {
          result.conditions_ = conditionsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ReplicationControllerStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.replicas_ = replicas_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fullyLabeledReplicas_ = fullyLabeledReplicas_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readyReplicas_ = readyReplicas_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.availableReplicas_ = availableReplicas_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.observedGeneration_ = observedGeneration_;
          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.V1.ReplicationControllerStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.ReplicationControllerStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ReplicationControllerStatus other) {
        if (other == io.kubernetes.client.proto.V1.ReplicationControllerStatus.getDefaultInstance()) return this;
        if (other.hasReplicas()) {
          setReplicas(other.getReplicas());
        }
        if (other.hasFullyLabeledReplicas()) {
          setFullyLabeledReplicas(other.getFullyLabeledReplicas());
        }
        if (other.hasReadyReplicas()) {
          setReadyReplicas(other.getReadyReplicas());
        }
        if (other.hasAvailableReplicas()) {
          setAvailableReplicas(other.getAvailableReplicas());
        }
        if (other.hasObservedGeneration()) {
          setObservedGeneration(other.getObservedGeneration());
        }
        if (conditionsBuilder_ == null) {
          if (!other.conditions_.isEmpty()) {
            if (conditions_.isEmpty()) {
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureConditionsIsMutable();
              conditions_.addAll(other.conditions_);
            }
            onChanged();
          }
        } else {
          if (!other.conditions_.isEmpty()) {
            if (conditionsBuilder_.isEmpty()) {
              conditionsBuilder_.dispose();
              conditionsBuilder_ = null;
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000020);
              conditionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getConditionsFieldBuilder() : null;
            } else {
              conditionsBuilder_.addAllMessages(other.conditions_);
            }
          }
        }
        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: {
                replicas_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                fullyLabeledReplicas_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                observedGeneration_ = input.readInt64();
                bitField0_ |= 0x00000010;
                break;
              } // case 24
              case 32: {
                readyReplicas_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 32
              case 40: {
                availableReplicas_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 40
              case 50: {
                io.kubernetes.client.proto.V1.ReplicationControllerCondition m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ReplicationControllerCondition.parser(),
                        extensionRegistry);
                if (conditionsBuilder_ == null) {
                  ensureConditionsIsMutable();
                  conditions_.add(m);
                } else {
                  conditionsBuilder_.addMessage(m);
                }
                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 int replicas_ ;
      /**
       * <pre>
       * Replicas is the most recently observed number of replicas.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
       * </pre>
       *
       * <code>optional int32 replicas = 1;</code>
       * @return Whether the replicas field is set.
       */
      @java.lang.Override
      public boolean hasReplicas() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Replicas is the most recently observed number of replicas.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
       * </pre>
       *
       * <code>optional int32 replicas = 1;</code>
       * @return The replicas.
       */
      @java.lang.Override
      public int getReplicas() {
        return replicas_;
      }
      /**
       * <pre>
       * Replicas is the most recently observed number of replicas.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
       * </pre>
       *
       * <code>optional int32 replicas = 1;</code>
       * @param value The replicas to set.
       * @return This builder for chaining.
       */
      public Builder setReplicas(int value) {

        replicas_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Replicas is the most recently observed number of replicas.
       * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
       * </pre>
       *
       * <code>optional int32 replicas = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearReplicas() {
        bitField0_ = (bitField0_ & ~0x00000001);
        replicas_ = 0;
        onChanged();
        return this;
      }

      private int fullyLabeledReplicas_ ;
      /**
       * <pre>
       * The number of pods that have labels matching the labels of the pod template of the replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 fullyLabeledReplicas = 2;</code>
       * @return Whether the fullyLabeledReplicas field is set.
       */
      @java.lang.Override
      public boolean hasFullyLabeledReplicas() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The number of pods that have labels matching the labels of the pod template of the replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 fullyLabeledReplicas = 2;</code>
       * @return The fullyLabeledReplicas.
       */
      @java.lang.Override
      public int getFullyLabeledReplicas() {
        return fullyLabeledReplicas_;
      }
      /**
       * <pre>
       * The number of pods that have labels matching the labels of the pod template of the replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 fullyLabeledReplicas = 2;</code>
       * @param value The fullyLabeledReplicas to set.
       * @return This builder for chaining.
       */
      public Builder setFullyLabeledReplicas(int value) {

        fullyLabeledReplicas_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The number of pods that have labels matching the labels of the pod template of the replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 fullyLabeledReplicas = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFullyLabeledReplicas() {
        bitField0_ = (bitField0_ & ~0x00000002);
        fullyLabeledReplicas_ = 0;
        onChanged();
        return this;
      }

      private int readyReplicas_ ;
      /**
       * <pre>
       * The number of ready replicas for this replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 readyReplicas = 4;</code>
       * @return Whether the readyReplicas field is set.
       */
      @java.lang.Override
      public boolean hasReadyReplicas() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The number of ready replicas for this replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 readyReplicas = 4;</code>
       * @return The readyReplicas.
       */
      @java.lang.Override
      public int getReadyReplicas() {
        return readyReplicas_;
      }
      /**
       * <pre>
       * The number of ready replicas for this replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 readyReplicas = 4;</code>
       * @param value The readyReplicas to set.
       * @return This builder for chaining.
       */
      public Builder setReadyReplicas(int value) {

        readyReplicas_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The number of ready replicas for this replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 readyReplicas = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadyReplicas() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readyReplicas_ = 0;
        onChanged();
        return this;
      }

      private int availableReplicas_ ;
      /**
       * <pre>
       * The number of available replicas (ready for at least minReadySeconds) for this replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 availableReplicas = 5;</code>
       * @return Whether the availableReplicas field is set.
       */
      @java.lang.Override
      public boolean hasAvailableReplicas() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The number of available replicas (ready for at least minReadySeconds) for this replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 availableReplicas = 5;</code>
       * @return The availableReplicas.
       */
      @java.lang.Override
      public int getAvailableReplicas() {
        return availableReplicas_;
      }
      /**
       * <pre>
       * The number of available replicas (ready for at least minReadySeconds) for this replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 availableReplicas = 5;</code>
       * @param value The availableReplicas to set.
       * @return This builder for chaining.
       */
      public Builder setAvailableReplicas(int value) {

        availableReplicas_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The number of available replicas (ready for at least minReadySeconds) for this replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int32 availableReplicas = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearAvailableReplicas() {
        bitField0_ = (bitField0_ & ~0x00000008);
        availableReplicas_ = 0;
        onChanged();
        return this;
      }

      private long observedGeneration_ ;
      /**
       * <pre>
       * ObservedGeneration reflects the generation of the most recently observed replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int64 observedGeneration = 3;</code>
       * @return Whether the observedGeneration field is set.
       */
      @java.lang.Override
      public boolean hasObservedGeneration() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * ObservedGeneration reflects the generation of the most recently observed replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int64 observedGeneration = 3;</code>
       * @return The observedGeneration.
       */
      @java.lang.Override
      public long getObservedGeneration() {
        return observedGeneration_;
      }
      /**
       * <pre>
       * ObservedGeneration reflects the generation of the most recently observed replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int64 observedGeneration = 3;</code>
       * @param value The observedGeneration to set.
       * @return This builder for chaining.
       */
      public Builder setObservedGeneration(long value) {

        observedGeneration_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ObservedGeneration reflects the generation of the most recently observed replication controller.
       * +optional
       * </pre>
       *
       * <code>optional int64 observedGeneration = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearObservedGeneration() {
        bitField0_ = (bitField0_ & ~0x00000010);
        observedGeneration_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.ReplicationControllerCondition> conditions_ =
        java.util.Collections.emptyList();
      private void ensureConditionsIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          conditions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ReplicationControllerCondition>(conditions_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ReplicationControllerCondition, io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder, io.kubernetes.client.proto.V1.ReplicationControllerConditionOrBuilder> conditionsBuilder_;

      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ReplicationControllerCondition> getConditionsList() {
        if (conditionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(conditions_);
        } else {
          return conditionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public int getConditionsCount() {
        if (conditionsBuilder_ == null) {
          return conditions_.size();
        } else {
          return conditionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerCondition getConditions(int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);
        } else {
          return conditionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.ReplicationControllerCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.set(index, value);
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.set(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public Builder addConditions(io.kubernetes.client.proto.V1.ReplicationControllerCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.ReplicationControllerCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(index, value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public Builder addConditions(
          io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public Builder addAllConditions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ReplicationControllerCondition> values) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, conditions_);
          onChanged();
        } else {
          conditionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public Builder clearConditions() {
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          conditionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public Builder removeConditions(int index) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.remove(index);
          onChanged();
        } else {
          conditionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder getConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerConditionOrBuilder getConditionsOrBuilder(
          int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);  } else {
          return conditionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ReplicationControllerConditionOrBuilder> 
           getConditionsOrBuilderList() {
        if (conditionsBuilder_ != null) {
          return conditionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(conditions_);
        }
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder addConditionsBuilder() {
        return getConditionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ReplicationControllerCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder addConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ReplicationControllerCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * Represents the latest available observations of a replication controller's current state.
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ReplicationControllerCondition conditions = 6;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder> 
           getConditionsBuilderList() {
        return getConditionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ReplicationControllerCondition, io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder, io.kubernetes.client.proto.V1.ReplicationControllerConditionOrBuilder> 
          getConditionsFieldBuilder() {
        if (conditionsBuilder_ == null) {
          conditionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ReplicationControllerCondition, io.kubernetes.client.proto.V1.ReplicationControllerCondition.Builder, io.kubernetes.client.proto.V1.ReplicationControllerConditionOrBuilder>(
                  conditions_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          conditions_ = null;
        }
        return conditionsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ReplicationControllerStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ReplicationControllerStatus)
    private static final io.kubernetes.client.proto.V1.ReplicationControllerStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ReplicationControllerStatus();
    }

    public static io.kubernetes.client.proto.V1.ReplicationControllerStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ReplicationControllerStatus>
        PARSER = new com.google.protobuf.AbstractParser<ReplicationControllerStatus>() {
      @java.lang.Override
      public ReplicationControllerStatus 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<ReplicationControllerStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ReplicationControllerStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ReplicationControllerStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResourceClaimOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ResourceClaim)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name must match the name of one entry in pod.spec.resourceClaims of
     * the Pod where this field is used. It makes that resource available
     * inside a container.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name must match the name of one entry in pod.spec.resourceClaims of
     * the Pod where this field is used. It makes that resource available
     * inside a container.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name must match the name of one entry in pod.spec.resourceClaims of
     * the Pod where this field is used. It makes that resource available
     * inside a container.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   * ResourceClaim references one entry in PodSpec.ResourceClaims.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ResourceClaim}
   */
  public static final class ResourceClaim extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ResourceClaim)
      ResourceClaimOrBuilder {
  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= */ "",
        ResourceClaim.class.getName());
    }
    // Use ResourceClaim.newBuilder() to construct.
    private ResourceClaim(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ResourceClaim() {
      name_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceClaim_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceClaim_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ResourceClaim.class, io.kubernetes.client.proto.V1.ResourceClaim.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name must match the name of one entry in pod.spec.resourceClaims of
     * the Pod where this field is used. It makes that resource available
     * inside a container.
     * </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 must match the name of one entry in pod.spec.resourceClaims of
     * the Pod where this field is used. It makes that resource available
     * inside a container.
     * </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 must match the name of one entry in pod.spec.resourceClaims of
     * the Pod where this field is used. It makes that resource available
     * inside a container.
     * </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;
      }
    }

    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_);
      }
      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_);
      }
      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.V1.ResourceClaim)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ResourceClaim other = (io.kubernetes.client.proto.V1.ResourceClaim) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) 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();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ResourceClaim parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceClaim 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.V1.ResourceClaim parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceClaim 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.V1.ResourceClaim parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceClaim parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ResourceClaim parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceClaim 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.V1.ResourceClaim parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ResourceClaim 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.V1.ResourceClaim parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceClaim 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.V1.ResourceClaim 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>
     * ResourceClaim references one entry in PodSpec.ResourceClaims.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ResourceClaim}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ResourceClaim)
        io.kubernetes.client.proto.V1.ResourceClaimOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceClaim_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceClaim_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ResourceClaim.class, io.kubernetes.client.proto.V1.ResourceClaim.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ResourceClaim.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceClaim_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceClaim getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ResourceClaim.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceClaim build() {
        io.kubernetes.client.proto.V1.ResourceClaim result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceClaim buildPartial() {
        io.kubernetes.client.proto.V1.ResourceClaim result = new io.kubernetes.client.proto.V1.ResourceClaim(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ResourceClaim result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          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.V1.ResourceClaim) {
          return mergeFrom((io.kubernetes.client.proto.V1.ResourceClaim)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ResourceClaim other) {
        if (other == io.kubernetes.client.proto.V1.ResourceClaim.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          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: {
                name_ = 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 name_ = "";
      /**
       * <pre>
       * Name must match the name of one entry in pod.spec.resourceClaims of
       * the Pod where this field is used. It makes that resource available
       * inside a container.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name must match the name of one entry in pod.spec.resourceClaims of
       * the Pod where this field is used. It makes that resource available
       * inside a container.
       * </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 must match the name of one entry in pod.spec.resourceClaims of
       * the Pod where this field is used. It makes that resource available
       * inside a container.
       * </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 must match the name of one entry in pod.spec.resourceClaims of
       * the Pod where this field is used. It makes that resource available
       * inside a container.
       * </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 must match the name of one entry in pod.spec.resourceClaims of
       * the Pod where this field is used. It makes that resource available
       * inside a container.
       * </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 must match the name of one entry in pod.spec.resourceClaims of
       * the Pod where this field is used. It makes that resource available
       * inside a container.
       * </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;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ResourceClaim)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ResourceClaim)
    private static final io.kubernetes.client.proto.V1.ResourceClaim DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ResourceClaim();
    }

    public static io.kubernetes.client.proto.V1.ResourceClaim getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResourceClaim>
        PARSER = new com.google.protobuf.AbstractParser<ResourceClaim>() {
      @java.lang.Override
      public ResourceClaim 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<ResourceClaim> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResourceClaim> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceClaim getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResourceFieldSelectorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ResourceFieldSelector)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Container name: required for volumes, optional for env vars
     * +optional
     * </pre>
     *
     * <code>optional string containerName = 1;</code>
     * @return Whether the containerName field is set.
     */
    boolean hasContainerName();
    /**
     * <pre>
     * Container name: required for volumes, optional for env vars
     * +optional
     * </pre>
     *
     * <code>optional string containerName = 1;</code>
     * @return The containerName.
     */
    java.lang.String getContainerName();
    /**
     * <pre>
     * Container name: required for volumes, optional for env vars
     * +optional
     * </pre>
     *
     * <code>optional string containerName = 1;</code>
     * @return The bytes for containerName.
     */
    com.google.protobuf.ByteString
        getContainerNameBytes();

    /**
     * <pre>
     * Required: resource to select
     * </pre>
     *
     * <code>optional string resource = 2;</code>
     * @return Whether the resource field is set.
     */
    boolean hasResource();
    /**
     * <pre>
     * Required: resource to select
     * </pre>
     *
     * <code>optional string resource = 2;</code>
     * @return The resource.
     */
    java.lang.String getResource();
    /**
     * <pre>
     * Required: resource to select
     * </pre>
     *
     * <code>optional string resource = 2;</code>
     * @return The bytes for resource.
     */
    com.google.protobuf.ByteString
        getResourceBytes();

    /**
     * <pre>
     * Specifies the output format of the exposed resources, defaults to "1"
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
     * @return Whether the divisor field is set.
     */
    boolean hasDivisor();
    /**
     * <pre>
     * Specifies the output format of the exposed resources, defaults to "1"
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
     * @return The divisor.
     */
    io.kubernetes.client.proto.Resource.Quantity getDivisor();
    /**
     * <pre>
     * Specifies the output format of the exposed resources, defaults to "1"
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
     */
    io.kubernetes.client.proto.Resource.QuantityOrBuilder getDivisorOrBuilder();
  }
  /**
   * <pre>
   * ResourceFieldSelector represents container resources (cpu, memory) and their output format
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ResourceFieldSelector}
   */
  public static final class ResourceFieldSelector extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ResourceFieldSelector)
      ResourceFieldSelectorOrBuilder {
  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= */ "",
        ResourceFieldSelector.class.getName());
    }
    // Use ResourceFieldSelector.newBuilder() to construct.
    private ResourceFieldSelector(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ResourceFieldSelector() {
      containerName_ = "";
      resource_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceFieldSelector_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceFieldSelector_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ResourceFieldSelector.class, io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder.class);
    }

    private int bitField0_;
    public static final int CONTAINERNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object containerName_ = "";
    /**
     * <pre>
     * Container name: required for volumes, optional for env vars
     * +optional
     * </pre>
     *
     * <code>optional string containerName = 1;</code>
     * @return Whether the containerName field is set.
     */
    @java.lang.Override
    public boolean hasContainerName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Container name: required for volumes, optional for env vars
     * +optional
     * </pre>
     *
     * <code>optional string containerName = 1;</code>
     * @return The containerName.
     */
    @java.lang.Override
    public java.lang.String getContainerName() {
      java.lang.Object ref = containerName_;
      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()) {
          containerName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Container name: required for volumes, optional for env vars
     * +optional
     * </pre>
     *
     * <code>optional string containerName = 1;</code>
     * @return The bytes for containerName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getContainerNameBytes() {
      java.lang.Object ref = containerName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        containerName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESOURCE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object resource_ = "";
    /**
     * <pre>
     * Required: resource to select
     * </pre>
     *
     * <code>optional string resource = 2;</code>
     * @return Whether the resource field is set.
     */
    @java.lang.Override
    public boolean hasResource() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Required: resource to select
     * </pre>
     *
     * <code>optional string resource = 2;</code>
     * @return The resource.
     */
    @java.lang.Override
    public java.lang.String getResource() {
      java.lang.Object ref = resource_;
      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()) {
          resource_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Required: resource to select
     * </pre>
     *
     * <code>optional string resource = 2;</code>
     * @return The bytes for resource.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResourceBytes() {
      java.lang.Object ref = resource_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resource_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DIVISOR_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.Resource.Quantity divisor_;
    /**
     * <pre>
     * Specifies the output format of the exposed resources, defaults to "1"
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
     * @return Whether the divisor field is set.
     */
    @java.lang.Override
    public boolean hasDivisor() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Specifies the output format of the exposed resources, defaults to "1"
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
     * @return The divisor.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getDivisor() {
      return divisor_ == null ? io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance() : divisor_;
    }
    /**
     * <pre>
     * Specifies the output format of the exposed resources, defaults to "1"
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.QuantityOrBuilder getDivisorOrBuilder() {
      return divisor_ == null ? io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance() : divisor_;
    }

    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, containerName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, resource_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getDivisor());
      }
      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, containerName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, resource_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getDivisor());
      }
      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.V1.ResourceFieldSelector)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ResourceFieldSelector other = (io.kubernetes.client.proto.V1.ResourceFieldSelector) obj;

      if (hasContainerName() != other.hasContainerName()) return false;
      if (hasContainerName()) {
        if (!getContainerName()
            .equals(other.getContainerName())) return false;
      }
      if (hasResource() != other.hasResource()) return false;
      if (hasResource()) {
        if (!getResource()
            .equals(other.getResource())) return false;
      }
      if (hasDivisor() != other.hasDivisor()) return false;
      if (hasDivisor()) {
        if (!getDivisor()
            .equals(other.getDivisor())) 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 (hasContainerName()) {
        hash = (37 * hash) + CONTAINERNAME_FIELD_NUMBER;
        hash = (53 * hash) + getContainerName().hashCode();
      }
      if (hasResource()) {
        hash = (37 * hash) + RESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getResource().hashCode();
      }
      if (hasDivisor()) {
        hash = (37 * hash) + DIVISOR_FIELD_NUMBER;
        hash = (53 * hash) + getDivisor().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ResourceFieldSelector parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceFieldSelector 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.V1.ResourceFieldSelector parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceFieldSelector 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.V1.ResourceFieldSelector parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceFieldSelector parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ResourceFieldSelector parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceFieldSelector 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.V1.ResourceFieldSelector parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ResourceFieldSelector 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.V1.ResourceFieldSelector parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceFieldSelector 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.V1.ResourceFieldSelector 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>
     * ResourceFieldSelector represents container resources (cpu, memory) and their output format
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ResourceFieldSelector}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ResourceFieldSelector)
        io.kubernetes.client.proto.V1.ResourceFieldSelectorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceFieldSelector_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceFieldSelector_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ResourceFieldSelector.class, io.kubernetes.client.proto.V1.ResourceFieldSelector.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ResourceFieldSelector.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getDivisorFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        containerName_ = "";
        resource_ = "";
        divisor_ = null;
        if (divisorBuilder_ != null) {
          divisorBuilder_.dispose();
          divisorBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceFieldSelector_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceFieldSelector getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceFieldSelector build() {
        io.kubernetes.client.proto.V1.ResourceFieldSelector result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceFieldSelector buildPartial() {
        io.kubernetes.client.proto.V1.ResourceFieldSelector result = new io.kubernetes.client.proto.V1.ResourceFieldSelector(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ResourceFieldSelector result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.containerName_ = containerName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.resource_ = resource_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.divisor_ = divisorBuilder_ == null
              ? divisor_
              : divisorBuilder_.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.V1.ResourceFieldSelector) {
          return mergeFrom((io.kubernetes.client.proto.V1.ResourceFieldSelector)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ResourceFieldSelector other) {
        if (other == io.kubernetes.client.proto.V1.ResourceFieldSelector.getDefaultInstance()) return this;
        if (other.hasContainerName()) {
          containerName_ = other.containerName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasResource()) {
          resource_ = other.resource_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasDivisor()) {
          mergeDivisor(other.getDivisor());
        }
        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: {
                containerName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                resource_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getDivisorFieldBuilder().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 containerName_ = "";
      /**
       * <pre>
       * Container name: required for volumes, optional for env vars
       * +optional
       * </pre>
       *
       * <code>optional string containerName = 1;</code>
       * @return Whether the containerName field is set.
       */
      public boolean hasContainerName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Container name: required for volumes, optional for env vars
       * +optional
       * </pre>
       *
       * <code>optional string containerName = 1;</code>
       * @return The containerName.
       */
      public java.lang.String getContainerName() {
        java.lang.Object ref = containerName_;
        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()) {
            containerName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Container name: required for volumes, optional for env vars
       * +optional
       * </pre>
       *
       * <code>optional string containerName = 1;</code>
       * @return The bytes for containerName.
       */
      public com.google.protobuf.ByteString
          getContainerNameBytes() {
        java.lang.Object ref = containerName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          containerName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Container name: required for volumes, optional for env vars
       * +optional
       * </pre>
       *
       * <code>optional string containerName = 1;</code>
       * @param value The containerName to set.
       * @return This builder for chaining.
       */
      public Builder setContainerName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        containerName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container name: required for volumes, optional for env vars
       * +optional
       * </pre>
       *
       * <code>optional string containerName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearContainerName() {
        containerName_ = getDefaultInstance().getContainerName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Container name: required for volumes, optional for env vars
       * +optional
       * </pre>
       *
       * <code>optional string containerName = 1;</code>
       * @param value The bytes for containerName to set.
       * @return This builder for chaining.
       */
      public Builder setContainerNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        containerName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object resource_ = "";
      /**
       * <pre>
       * Required: resource to select
       * </pre>
       *
       * <code>optional string resource = 2;</code>
       * @return Whether the resource field is set.
       */
      public boolean hasResource() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Required: resource to select
       * </pre>
       *
       * <code>optional string resource = 2;</code>
       * @return The resource.
       */
      public java.lang.String getResource() {
        java.lang.Object ref = resource_;
        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()) {
            resource_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Required: resource to select
       * </pre>
       *
       * <code>optional string resource = 2;</code>
       * @return The bytes for resource.
       */
      public com.google.protobuf.ByteString
          getResourceBytes() {
        java.lang.Object ref = resource_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resource_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Required: resource to select
       * </pre>
       *
       * <code>optional string resource = 2;</code>
       * @param value The resource to set.
       * @return This builder for chaining.
       */
      public Builder setResource(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        resource_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required: resource to select
       * </pre>
       *
       * <code>optional string resource = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResource() {
        resource_ = getDefaultInstance().getResource();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required: resource to select
       * </pre>
       *
       * <code>optional string resource = 2;</code>
       * @param value The bytes for resource to set.
       * @return This builder for chaining.
       */
      public Builder setResourceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        resource_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Resource.Quantity divisor_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder, io.kubernetes.client.proto.Resource.QuantityOrBuilder> divisorBuilder_;
      /**
       * <pre>
       * Specifies the output format of the exposed resources, defaults to "1"
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
       * @return Whether the divisor field is set.
       */
      public boolean hasDivisor() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Specifies the output format of the exposed resources, defaults to "1"
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
       * @return The divisor.
       */
      public io.kubernetes.client.proto.Resource.Quantity getDivisor() {
        if (divisorBuilder_ == null) {
          return divisor_ == null ? io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance() : divisor_;
        } else {
          return divisorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Specifies the output format of the exposed resources, defaults to "1"
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
       */
      public Builder setDivisor(io.kubernetes.client.proto.Resource.Quantity value) {
        if (divisorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          divisor_ = value;
        } else {
          divisorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the output format of the exposed resources, defaults to "1"
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
       */
      public Builder setDivisor(
          io.kubernetes.client.proto.Resource.Quantity.Builder builderForValue) {
        if (divisorBuilder_ == null) {
          divisor_ = builderForValue.build();
        } else {
          divisorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the output format of the exposed resources, defaults to "1"
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
       */
      public Builder mergeDivisor(io.kubernetes.client.proto.Resource.Quantity value) {
        if (divisorBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            divisor_ != null &&
            divisor_ != io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance()) {
            getDivisorBuilder().mergeFrom(value);
          } else {
            divisor_ = value;
          }
        } else {
          divisorBuilder_.mergeFrom(value);
        }
        if (divisor_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Specifies the output format of the exposed resources, defaults to "1"
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
       */
      public Builder clearDivisor() {
        bitField0_ = (bitField0_ & ~0x00000004);
        divisor_ = null;
        if (divisorBuilder_ != null) {
          divisorBuilder_.dispose();
          divisorBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the output format of the exposed resources, defaults to "1"
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder getDivisorBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getDivisorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Specifies the output format of the exposed resources, defaults to "1"
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
       */
      public io.kubernetes.client.proto.Resource.QuantityOrBuilder getDivisorOrBuilder() {
        if (divisorBuilder_ != null) {
          return divisorBuilder_.getMessageOrBuilder();
        } else {
          return divisor_ == null ?
              io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance() : divisor_;
        }
      }
      /**
       * <pre>
       * Specifies the output format of the exposed resources, defaults to "1"
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder, io.kubernetes.client.proto.Resource.QuantityOrBuilder> 
          getDivisorFieldBuilder() {
        if (divisorBuilder_ == null) {
          divisorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder, io.kubernetes.client.proto.Resource.QuantityOrBuilder>(
                  getDivisor(),
                  getParentForChildren(),
                  isClean());
          divisor_ = null;
        }
        return divisorBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ResourceFieldSelector)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ResourceFieldSelector)
    private static final io.kubernetes.client.proto.V1.ResourceFieldSelector DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ResourceFieldSelector();
    }

    public static io.kubernetes.client.proto.V1.ResourceFieldSelector getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResourceFieldSelector>
        PARSER = new com.google.protobuf.AbstractParser<ResourceFieldSelector>() {
      @java.lang.Override
      public ResourceFieldSelector 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<ResourceFieldSelector> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResourceFieldSelector> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceFieldSelector getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResourceQuotaOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ResourceQuota)
      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 defines the desired quota.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * Spec defines the desired quota.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.ResourceQuotaSpec getSpec();
    /**
     * <pre>
     * Spec defines the desired quota.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.ResourceQuotaSpecOrBuilder getSpecOrBuilder();

    /**
     * <pre>
     * Status defines the actual enforced quota and its current usage.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Status defines the actual enforced quota and its current usage.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1.ResourceQuotaStatus getStatus();
    /**
     * <pre>
     * Status defines the actual enforced quota and its current usage.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V1.ResourceQuotaStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * ResourceQuota sets aggregate quota restrictions enforced per namespace
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ResourceQuota}
   */
  public static final class ResourceQuota extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ResourceQuota)
      ResourceQuotaOrBuilder {
  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= */ "",
        ResourceQuota.class.getName());
    }
    // Use ResourceQuota.newBuilder() to construct.
    private ResourceQuota(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ResourceQuota() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuota_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuota_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ResourceQuota.class, io.kubernetes.client.proto.V1.ResourceQuota.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.V1.ResourceQuotaSpec spec_;
    /**
     * <pre>
     * Spec defines the desired quota.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Spec defines the desired quota.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceQuotaSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.ResourceQuotaSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * Spec defines the desired quota.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceQuotaSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.ResourceQuotaSpec.getDefaultInstance() : spec_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.ResourceQuotaStatus status_;
    /**
     * <pre>
     * Status defines the actual enforced quota and its current usage.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Status defines the actual enforced quota and its current usage.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceQuotaStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1.ResourceQuotaStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * Status defines the actual enforced quota and its current usage.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceQuotaStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1.ResourceQuotaStatus.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.V1.ResourceQuota)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ResourceQuota other = (io.kubernetes.client.proto.V1.ResourceQuota) 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.V1.ResourceQuota parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuota 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.V1.ResourceQuota parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuota 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.V1.ResourceQuota parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuota parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuota parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuota 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.V1.ResourceQuota parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ResourceQuota 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.V1.ResourceQuota parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuota 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.V1.ResourceQuota 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>
     * ResourceQuota sets aggregate quota restrictions enforced per namespace
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ResourceQuota}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ResourceQuota)
        io.kubernetes.client.proto.V1.ResourceQuotaOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuota_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuota_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ResourceQuota.class, io.kubernetes.client.proto.V1.ResourceQuota.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ResourceQuota.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.V1.internal_static_k8s_io_api_core_v1_ResourceQuota_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuota getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ResourceQuota.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuota build() {
        io.kubernetes.client.proto.V1.ResourceQuota result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuota buildPartial() {
        io.kubernetes.client.proto.V1.ResourceQuota result = new io.kubernetes.client.proto.V1.ResourceQuota(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ResourceQuota 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.V1.ResourceQuota) {
          return mergeFrom((io.kubernetes.client.proto.V1.ResourceQuota)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ResourceQuota other) {
        if (other == io.kubernetes.client.proto.V1.ResourceQuota.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.V1.ResourceQuotaSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceQuotaSpec, io.kubernetes.client.proto.V1.ResourceQuotaSpec.Builder, io.kubernetes.client.proto.V1.ResourceQuotaSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * Spec defines the desired quota.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Spec defines the desired quota.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.ResourceQuotaSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.ResourceQuotaSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Spec defines the desired quota.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.ResourceQuotaSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the desired quota.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.ResourceQuotaSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the desired quota.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.ResourceQuotaSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.ResourceQuotaSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Spec defines the desired quota.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the desired quota.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceQuotaSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Spec defines the desired quota.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceQuotaSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.ResourceQuotaSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * Spec defines the desired quota.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceQuotaSpec, io.kubernetes.client.proto.V1.ResourceQuotaSpec.Builder, io.kubernetes.client.proto.V1.ResourceQuotaSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ResourceQuotaSpec, io.kubernetes.client.proto.V1.ResourceQuotaSpec.Builder, io.kubernetes.client.proto.V1.ResourceQuotaSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      private io.kubernetes.client.proto.V1.ResourceQuotaStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceQuotaStatus, io.kubernetes.client.proto.V1.ResourceQuotaStatus.Builder, io.kubernetes.client.proto.V1.ResourceQuotaStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * Status defines the actual enforced quota and its current usage.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Status defines the actual enforced quota and its current usage.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1.ResourceQuotaStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1.ResourceQuotaStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Status defines the actual enforced quota and its current usage.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1.ResourceQuotaStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status defines the actual enforced quota and its current usage.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1.ResourceQuotaStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status defines the actual enforced quota and its current usage.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1.ResourceQuotaStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1.ResourceQuotaStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Status defines the actual enforced quota and its current usage.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status defines the actual enforced quota and its current usage.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceQuotaStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Status defines the actual enforced quota and its current usage.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceQuotaStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1.ResourceQuotaStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * Status defines the actual enforced quota and its current usage.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ResourceQuotaStatus status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceQuotaStatus, io.kubernetes.client.proto.V1.ResourceQuotaStatus.Builder, io.kubernetes.client.proto.V1.ResourceQuotaStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ResourceQuotaStatus, io.kubernetes.client.proto.V1.ResourceQuotaStatus.Builder, io.kubernetes.client.proto.V1.ResourceQuotaStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ResourceQuota)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ResourceQuota)
    private static final io.kubernetes.client.proto.V1.ResourceQuota DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ResourceQuota();
    }

    public static io.kubernetes.client.proto.V1.ResourceQuota getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResourceQuota>
        PARSER = new com.google.protobuf.AbstractParser<ResourceQuota>() {
      @java.lang.Override
      public ResourceQuota 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<ResourceQuota> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResourceQuota> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceQuota getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResourceQuotaListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ResourceQuotaList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Items is a list of ResourceQuota objects.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ResourceQuota> 
        getItemsList();
    /**
     * <pre>
     * Items is a list of ResourceQuota objects.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ResourceQuota getItems(int index);
    /**
     * <pre>
     * Items is a list of ResourceQuota objects.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is a list of ResourceQuota objects.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ResourceQuotaOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is a list of ResourceQuota objects.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ResourceQuotaOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ResourceQuotaList is a list of ResourceQuota items.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ResourceQuotaList}
   */
  public static final class ResourceQuotaList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ResourceQuotaList)
      ResourceQuotaListOrBuilder {
  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= */ "",
        ResourceQuotaList.class.getName());
    }
    // Use ResourceQuotaList.newBuilder() to construct.
    private ResourceQuotaList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ResourceQuotaList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ResourceQuotaList.class, io.kubernetes.client.proto.V1.ResourceQuotaList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.ResourceQuota> items_;
    /**
     * <pre>
     * Items is a list of ResourceQuota objects.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ResourceQuota> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of ResourceQuota objects.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ResourceQuotaOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of ResourceQuota objects.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is a list of ResourceQuota objects.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceQuota getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is a list of ResourceQuota objects.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceQuotaOrBuilder 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.V1.ResourceQuotaList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ResourceQuotaList other = (io.kubernetes.client.proto.V1.ResourceQuotaList) 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.V1.ResourceQuotaList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaList 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.V1.ResourceQuotaList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaList 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.V1.ResourceQuotaList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaList 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.V1.ResourceQuotaList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ResourceQuotaList 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.V1.ResourceQuotaList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaList 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.V1.ResourceQuotaList 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>
     * ResourceQuotaList is a list of ResourceQuota items.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ResourceQuotaList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ResourceQuotaList)
        io.kubernetes.client.proto.V1.ResourceQuotaListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ResourceQuotaList.class, io.kubernetes.client.proto.V1.ResourceQuotaList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ResourceQuotaList.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.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuotaList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ResourceQuotaList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuotaList build() {
        io.kubernetes.client.proto.V1.ResourceQuotaList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuotaList buildPartial() {
        io.kubernetes.client.proto.V1.ResourceQuotaList result = new io.kubernetes.client.proto.V1.ResourceQuotaList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ResourceQuotaList 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.V1.ResourceQuotaList 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.V1.ResourceQuotaList) {
          return mergeFrom((io.kubernetes.client.proto.V1.ResourceQuotaList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ResourceQuotaList other) {
        if (other == io.kubernetes.client.proto.V1.ResourceQuotaList.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.V1.ResourceQuota m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ResourceQuota.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.ResourceQuota> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ResourceQuota>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceQuota, io.kubernetes.client.proto.V1.ResourceQuota.Builder, io.kubernetes.client.proto.V1.ResourceQuotaOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ResourceQuota> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceQuota getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.ResourceQuota value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.ResourceQuota.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.ResourceQuota value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.ResourceQuota value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.ResourceQuota.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.ResourceQuota.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ResourceQuota> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceQuota.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceQuotaOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ResourceQuotaOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceQuota.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ResourceQuota.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceQuota.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ResourceQuota.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of ResourceQuota objects.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceQuota items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ResourceQuota.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceQuota, io.kubernetes.client.proto.V1.ResourceQuota.Builder, io.kubernetes.client.proto.V1.ResourceQuotaOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ResourceQuota, io.kubernetes.client.proto.V1.ResourceQuota.Builder, io.kubernetes.client.proto.V1.ResourceQuotaOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ResourceQuotaList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ResourceQuotaList)
    private static final io.kubernetes.client.proto.V1.ResourceQuotaList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ResourceQuotaList();
    }

    public static io.kubernetes.client.proto.V1.ResourceQuotaList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResourceQuotaList>
        PARSER = new com.google.protobuf.AbstractParser<ResourceQuotaList>() {
      @java.lang.Override
      public ResourceQuotaList 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<ResourceQuotaList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResourceQuotaList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceQuotaList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResourceQuotaSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ResourceQuotaSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * hard is the set of desired hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    int getHardCount();
    /**
     * <pre>
     * hard is the set of desired hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    boolean containsHard(
        java.lang.String key);
    /**
     * Use {@link #getHardMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getHard();
    /**
     * <pre>
     * hard is the set of desired hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getHardMap();
    /**
     * <pre>
     * hard is the set of desired hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getHardOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * hard is the set of desired hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getHardOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * A collection of filters that must match each object tracked by a quota.
     * If not specified, the quota matches all objects.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string scopes = 2;</code>
     * @return A list containing the scopes.
     */
    java.util.List<java.lang.String>
        getScopesList();
    /**
     * <pre>
     * A collection of filters that must match each object tracked by a quota.
     * If not specified, the quota matches all objects.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string scopes = 2;</code>
     * @return The count of scopes.
     */
    int getScopesCount();
    /**
     * <pre>
     * A collection of filters that must match each object tracked by a quota.
     * If not specified, the quota matches all objects.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string scopes = 2;</code>
     * @param index The index of the element to return.
     * @return The scopes at the given index.
     */
    java.lang.String getScopes(int index);
    /**
     * <pre>
     * A collection of filters that must match each object tracked by a quota.
     * If not specified, the quota matches all objects.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string scopes = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the scopes at the given index.
     */
    com.google.protobuf.ByteString
        getScopesBytes(int index);

    /**
     * <pre>
     * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
     * but expressed using ScopeSelectorOperator in combination with possible values.
     * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
     * @return Whether the scopeSelector field is set.
     */
    boolean hasScopeSelector();
    /**
     * <pre>
     * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
     * but expressed using ScopeSelectorOperator in combination with possible values.
     * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
     * @return The scopeSelector.
     */
    io.kubernetes.client.proto.V1.ScopeSelector getScopeSelector();
    /**
     * <pre>
     * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
     * but expressed using ScopeSelectorOperator in combination with possible values.
     * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
     */
    io.kubernetes.client.proto.V1.ScopeSelectorOrBuilder getScopeSelectorOrBuilder();
  }
  /**
   * <pre>
   * ResourceQuotaSpec defines the desired hard limits to enforce for Quota.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ResourceQuotaSpec}
   */
  public static final class ResourceQuotaSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ResourceQuotaSpec)
      ResourceQuotaSpecOrBuilder {
  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= */ "",
        ResourceQuotaSpec.class.getName());
    }
    // Use ResourceQuotaSpec.newBuilder() to construct.
    private ResourceQuotaSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ResourceQuotaSpec() {
      scopes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 1:
          return internalGetHard();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ResourceQuotaSpec.class, io.kubernetes.client.proto.V1.ResourceQuotaSpec.Builder.class);
    }

    private int bitField0_;
    public static final int HARD_FIELD_NUMBER = 1;
    private static final class HardDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_HardEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> hard_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetHard() {
      if (hard_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            HardDefaultEntryHolder.defaultEntry);
      }
      return hard_;
    }
    public int getHardCount() {
      return internalGetHard().getMap().size();
    }
    /**
     * <pre>
     * hard is the set of desired hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    @java.lang.Override
    public boolean containsHard(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetHard().getMap().containsKey(key);
    }
    /**
     * Use {@link #getHardMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getHard() {
      return getHardMap();
    }
    /**
     * <pre>
     * hard is the set of desired hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getHardMap() {
      return internalGetHard().getMap();
    }
    /**
     * <pre>
     * hard is the set of desired hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getHardOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetHard().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * hard is the set of desired hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getHardOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetHard().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int SCOPES_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList scopes_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * A collection of filters that must match each object tracked by a quota.
     * If not specified, the quota matches all objects.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string scopes = 2;</code>
     * @return A list containing the scopes.
     */
    public com.google.protobuf.ProtocolStringList
        getScopesList() {
      return scopes_;
    }
    /**
     * <pre>
     * A collection of filters that must match each object tracked by a quota.
     * If not specified, the quota matches all objects.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string scopes = 2;</code>
     * @return The count of scopes.
     */
    public int getScopesCount() {
      return scopes_.size();
    }
    /**
     * <pre>
     * A collection of filters that must match each object tracked by a quota.
     * If not specified, the quota matches all objects.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string scopes = 2;</code>
     * @param index The index of the element to return.
     * @return The scopes at the given index.
     */
    public java.lang.String getScopes(int index) {
      return scopes_.get(index);
    }
    /**
     * <pre>
     * A collection of filters that must match each object tracked by a quota.
     * If not specified, the quota matches all objects.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string scopes = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the scopes at the given index.
     */
    public com.google.protobuf.ByteString
        getScopesBytes(int index) {
      return scopes_.getByteString(index);
    }

    public static final int SCOPESELECTOR_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.ScopeSelector scopeSelector_;
    /**
     * <pre>
     * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
     * but expressed using ScopeSelectorOperator in combination with possible values.
     * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
     * @return Whether the scopeSelector field is set.
     */
    @java.lang.Override
    public boolean hasScopeSelector() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
     * but expressed using ScopeSelectorOperator in combination with possible values.
     * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
     * @return The scopeSelector.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScopeSelector getScopeSelector() {
      return scopeSelector_ == null ? io.kubernetes.client.proto.V1.ScopeSelector.getDefaultInstance() : scopeSelector_;
    }
    /**
     * <pre>
     * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
     * but expressed using ScopeSelectorOperator in combination with possible values.
     * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScopeSelectorOrBuilder getScopeSelectorOrBuilder() {
      return scopeSelector_ == null ? io.kubernetes.client.proto.V1.ScopeSelector.getDefaultInstance() : scopeSelector_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetHard(),
          HardDefaultEntryHolder.defaultEntry,
          1);
      for (int i = 0; i < scopes_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, scopes_.getRaw(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(3, getScopeSelector());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetHard().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        hard__ = HardDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, hard__);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < scopes_.size(); i++) {
          dataSize += computeStringSizeNoTag(scopes_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getScopesList().size();
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getScopeSelector());
      }
      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.V1.ResourceQuotaSpec)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ResourceQuotaSpec other = (io.kubernetes.client.proto.V1.ResourceQuotaSpec) obj;

      if (!internalGetHard().equals(
          other.internalGetHard())) return false;
      if (!getScopesList()
          .equals(other.getScopesList())) return false;
      if (hasScopeSelector() != other.hasScopeSelector()) return false;
      if (hasScopeSelector()) {
        if (!getScopeSelector()
            .equals(other.getScopeSelector())) 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 (!internalGetHard().getMap().isEmpty()) {
        hash = (37 * hash) + HARD_FIELD_NUMBER;
        hash = (53 * hash) + internalGetHard().hashCode();
      }
      if (getScopesCount() > 0) {
        hash = (37 * hash) + SCOPES_FIELD_NUMBER;
        hash = (53 * hash) + getScopesList().hashCode();
      }
      if (hasScopeSelector()) {
        hash = (37 * hash) + SCOPESELECTOR_FIELD_NUMBER;
        hash = (53 * hash) + getScopeSelector().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ResourceQuotaSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaSpec 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.V1.ResourceQuotaSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaSpec 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.V1.ResourceQuotaSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaSpec 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.V1.ResourceQuotaSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ResourceQuotaSpec 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.V1.ResourceQuotaSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaSpec 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.V1.ResourceQuotaSpec 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>
     * ResourceQuotaSpec defines the desired hard limits to enforce for Quota.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ResourceQuotaSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ResourceQuotaSpec)
        io.kubernetes.client.proto.V1.ResourceQuotaSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetHard();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableHard();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ResourceQuotaSpec.class, io.kubernetes.client.proto.V1.ResourceQuotaSpec.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ResourceQuotaSpec.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getScopeSelectorFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableHard().clear();
        scopes_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        scopeSelector_ = null;
        if (scopeSelectorBuilder_ != null) {
          scopeSelectorBuilder_.dispose();
          scopeSelectorBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuotaSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ResourceQuotaSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuotaSpec build() {
        io.kubernetes.client.proto.V1.ResourceQuotaSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuotaSpec buildPartial() {
        io.kubernetes.client.proto.V1.ResourceQuotaSpec result = new io.kubernetes.client.proto.V1.ResourceQuotaSpec(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ResourceQuotaSpec result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.hard_ = internalGetHard().build(HardDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          scopes_.makeImmutable();
          result.scopes_ = scopes_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.scopeSelector_ = scopeSelectorBuilder_ == null
              ? scopeSelector_
              : scopeSelectorBuilder_.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.V1.ResourceQuotaSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1.ResourceQuotaSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ResourceQuotaSpec other) {
        if (other == io.kubernetes.client.proto.V1.ResourceQuotaSpec.getDefaultInstance()) return this;
        internalGetMutableHard().mergeFrom(
            other.internalGetHard());
        bitField0_ |= 0x00000001;
        if (!other.scopes_.isEmpty()) {
          if (scopes_.isEmpty()) {
            scopes_ = other.scopes_;
            bitField0_ |= 0x00000002;
          } else {
            ensureScopesIsMutable();
            scopes_.addAll(other.scopes_);
          }
          onChanged();
        }
        if (other.hasScopeSelector()) {
          mergeScopeSelector(other.getScopeSelector());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                hard__ = input.readMessage(
                    HardDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableHard().ensureBuilderMap().put(
                    hard__.getKey(), hard__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureScopesIsMutable();
                scopes_.add(bs);
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getScopeSelectorFieldBuilder().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 static final class HardConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return HardDefaultEntryHolder.defaultEntry;
        }
      };
      private static final HardConverter hardConverter = new HardConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> hard_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetHard() {
        if (hard_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(hardConverter);
        }
        return hard_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableHard() {
        if (hard_ == null) {
          hard_ = new com.google.protobuf.MapFieldBuilder<>(hardConverter);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return hard_;
      }
      public int getHardCount() {
        return internalGetHard().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * hard is the set of desired hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      @java.lang.Override
      public boolean containsHard(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetHard().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getHardMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getHard() {
        return getHardMap();
      }
      /**
       * <pre>
       * hard is the set of desired hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getHardMap() {
        return internalGetHard().getImmutableMap();
      }
      /**
       * <pre>
       * hard is the set of desired hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getHardOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableHard().ensureBuilderMap();
        return map.containsKey(key) ? hardConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * hard is the set of desired hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getHardOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableHard().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return hardConverter.build(map.get(key));
      }
      public Builder clearHard() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableHard().clear();
        return this;
      }
      /**
       * <pre>
       * hard is the set of desired hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      public Builder removeHard(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableHard().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableHard() {
        bitField0_ |= 0x00000001;
        return internalGetMutableHard().ensureMessageMap();
      }
      /**
       * <pre>
       * hard is the set of desired hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      public Builder putHard(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableHard().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * hard is the set of desired hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      public Builder putAllHard(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableHard().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * hard is the set of desired hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putHardBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableHard().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private com.google.protobuf.LazyStringArrayList scopes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureScopesIsMutable() {
        if (!scopes_.isModifiable()) {
          scopes_ = new com.google.protobuf.LazyStringArrayList(scopes_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * A collection of filters that must match each object tracked by a quota.
       * If not specified, the quota matches all objects.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string scopes = 2;</code>
       * @return A list containing the scopes.
       */
      public com.google.protobuf.ProtocolStringList
          getScopesList() {
        scopes_.makeImmutable();
        return scopes_;
      }
      /**
       * <pre>
       * A collection of filters that must match each object tracked by a quota.
       * If not specified, the quota matches all objects.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string scopes = 2;</code>
       * @return The count of scopes.
       */
      public int getScopesCount() {
        return scopes_.size();
      }
      /**
       * <pre>
       * A collection of filters that must match each object tracked by a quota.
       * If not specified, the quota matches all objects.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string scopes = 2;</code>
       * @param index The index of the element to return.
       * @return The scopes at the given index.
       */
      public java.lang.String getScopes(int index) {
        return scopes_.get(index);
      }
      /**
       * <pre>
       * A collection of filters that must match each object tracked by a quota.
       * If not specified, the quota matches all objects.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string scopes = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the scopes at the given index.
       */
      public com.google.protobuf.ByteString
          getScopesBytes(int index) {
        return scopes_.getByteString(index);
      }
      /**
       * <pre>
       * A collection of filters that must match each object tracked by a quota.
       * If not specified, the quota matches all objects.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string scopes = 2;</code>
       * @param index The index to set the value at.
       * @param value The scopes to set.
       * @return This builder for chaining.
       */
      public Builder setScopes(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureScopesIsMutable();
        scopes_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A collection of filters that must match each object tracked by a quota.
       * If not specified, the quota matches all objects.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string scopes = 2;</code>
       * @param value The scopes to add.
       * @return This builder for chaining.
       */
      public Builder addScopes(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureScopesIsMutable();
        scopes_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A collection of filters that must match each object tracked by a quota.
       * If not specified, the quota matches all objects.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string scopes = 2;</code>
       * @param values The scopes to add.
       * @return This builder for chaining.
       */
      public Builder addAllScopes(
          java.lang.Iterable<java.lang.String> values) {
        ensureScopesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, scopes_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A collection of filters that must match each object tracked by a quota.
       * If not specified, the quota matches all objects.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string scopes = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearScopes() {
        scopes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A collection of filters that must match each object tracked by a quota.
       * If not specified, the quota matches all objects.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string scopes = 2;</code>
       * @param value The bytes of the scopes to add.
       * @return This builder for chaining.
       */
      public Builder addScopesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureScopesIsMutable();
        scopes_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.ScopeSelector scopeSelector_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ScopeSelector, io.kubernetes.client.proto.V1.ScopeSelector.Builder, io.kubernetes.client.proto.V1.ScopeSelectorOrBuilder> scopeSelectorBuilder_;
      /**
       * <pre>
       * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
       * but expressed using ScopeSelectorOperator in combination with possible values.
       * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
       * @return Whether the scopeSelector field is set.
       */
      public boolean hasScopeSelector() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
       * but expressed using ScopeSelectorOperator in combination with possible values.
       * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
       * @return The scopeSelector.
       */
      public io.kubernetes.client.proto.V1.ScopeSelector getScopeSelector() {
        if (scopeSelectorBuilder_ == null) {
          return scopeSelector_ == null ? io.kubernetes.client.proto.V1.ScopeSelector.getDefaultInstance() : scopeSelector_;
        } else {
          return scopeSelectorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
       * but expressed using ScopeSelectorOperator in combination with possible values.
       * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
       */
      public Builder setScopeSelector(io.kubernetes.client.proto.V1.ScopeSelector value) {
        if (scopeSelectorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          scopeSelector_ = value;
        } else {
          scopeSelectorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
       * but expressed using ScopeSelectorOperator in combination with possible values.
       * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
       */
      public Builder setScopeSelector(
          io.kubernetes.client.proto.V1.ScopeSelector.Builder builderForValue) {
        if (scopeSelectorBuilder_ == null) {
          scopeSelector_ = builderForValue.build();
        } else {
          scopeSelectorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
       * but expressed using ScopeSelectorOperator in combination with possible values.
       * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
       */
      public Builder mergeScopeSelector(io.kubernetes.client.proto.V1.ScopeSelector value) {
        if (scopeSelectorBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            scopeSelector_ != null &&
            scopeSelector_ != io.kubernetes.client.proto.V1.ScopeSelector.getDefaultInstance()) {
            getScopeSelectorBuilder().mergeFrom(value);
          } else {
            scopeSelector_ = value;
          }
        } else {
          scopeSelectorBuilder_.mergeFrom(value);
        }
        if (scopeSelector_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
       * but expressed using ScopeSelectorOperator in combination with possible values.
       * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
       */
      public Builder clearScopeSelector() {
        bitField0_ = (bitField0_ & ~0x00000004);
        scopeSelector_ = null;
        if (scopeSelectorBuilder_ != null) {
          scopeSelectorBuilder_.dispose();
          scopeSelectorBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
       * but expressed using ScopeSelectorOperator in combination with possible values.
       * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ScopeSelector.Builder getScopeSelectorBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getScopeSelectorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
       * but expressed using ScopeSelectorOperator in combination with possible values.
       * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ScopeSelectorOrBuilder getScopeSelectorOrBuilder() {
        if (scopeSelectorBuilder_ != null) {
          return scopeSelectorBuilder_.getMessageOrBuilder();
        } else {
          return scopeSelector_ == null ?
              io.kubernetes.client.proto.V1.ScopeSelector.getDefaultInstance() : scopeSelector_;
        }
      }
      /**
       * <pre>
       * scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
       * but expressed using ScopeSelectorOperator in combination with possible values.
       * For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScopeSelector scopeSelector = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ScopeSelector, io.kubernetes.client.proto.V1.ScopeSelector.Builder, io.kubernetes.client.proto.V1.ScopeSelectorOrBuilder> 
          getScopeSelectorFieldBuilder() {
        if (scopeSelectorBuilder_ == null) {
          scopeSelectorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ScopeSelector, io.kubernetes.client.proto.V1.ScopeSelector.Builder, io.kubernetes.client.proto.V1.ScopeSelectorOrBuilder>(
                  getScopeSelector(),
                  getParentForChildren(),
                  isClean());
          scopeSelector_ = null;
        }
        return scopeSelectorBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ResourceQuotaSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ResourceQuotaSpec)
    private static final io.kubernetes.client.proto.V1.ResourceQuotaSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ResourceQuotaSpec();
    }

    public static io.kubernetes.client.proto.V1.ResourceQuotaSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResourceQuotaSpec>
        PARSER = new com.google.protobuf.AbstractParser<ResourceQuotaSpec>() {
      @java.lang.Override
      public ResourceQuotaSpec 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<ResourceQuotaSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResourceQuotaSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceQuotaSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResourceQuotaStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ResourceQuotaStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Hard is the set of enforced hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    int getHardCount();
    /**
     * <pre>
     * Hard is the set of enforced hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    boolean containsHard(
        java.lang.String key);
    /**
     * Use {@link #getHardMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getHard();
    /**
     * <pre>
     * Hard is the set of enforced hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getHardMap();
    /**
     * <pre>
     * Hard is the set of enforced hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getHardOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Hard is the set of enforced hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getHardOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Used is the current observed total usage of the resource in the namespace.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
     */
    int getUsedCount();
    /**
     * <pre>
     * Used is the current observed total usage of the resource in the namespace.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
     */
    boolean containsUsed(
        java.lang.String key);
    /**
     * Use {@link #getUsedMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getUsed();
    /**
     * <pre>
     * Used is the current observed total usage of the resource in the namespace.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getUsedMap();
    /**
     * <pre>
     * Used is the current observed total usage of the resource in the namespace.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getUsedOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Used is the current observed total usage of the resource in the namespace.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getUsedOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * ResourceQuotaStatus defines the enforced hard limits and observed use.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ResourceQuotaStatus}
   */
  public static final class ResourceQuotaStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ResourceQuotaStatus)
      ResourceQuotaStatusOrBuilder {
  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= */ "",
        ResourceQuotaStatus.class.getName());
    }
    // Use ResourceQuotaStatus.newBuilder() to construct.
    private ResourceQuotaStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ResourceQuotaStatus() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 1:
          return internalGetHard();
        case 2:
          return internalGetUsed();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ResourceQuotaStatus.class, io.kubernetes.client.proto.V1.ResourceQuotaStatus.Builder.class);
    }

    public static final int HARD_FIELD_NUMBER = 1;
    private static final class HardDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_HardEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> hard_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetHard() {
      if (hard_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            HardDefaultEntryHolder.defaultEntry);
      }
      return hard_;
    }
    public int getHardCount() {
      return internalGetHard().getMap().size();
    }
    /**
     * <pre>
     * Hard is the set of enforced hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    @java.lang.Override
    public boolean containsHard(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetHard().getMap().containsKey(key);
    }
    /**
     * Use {@link #getHardMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getHard() {
      return getHardMap();
    }
    /**
     * <pre>
     * Hard is the set of enforced hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getHardMap() {
      return internalGetHard().getMap();
    }
    /**
     * <pre>
     * Hard is the set of enforced hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getHardOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetHard().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Hard is the set of enforced hard limits for each named resource.
     * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getHardOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetHard().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int USED_FIELD_NUMBER = 2;
    private static final class UsedDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_UsedEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> used_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetUsed() {
      if (used_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            UsedDefaultEntryHolder.defaultEntry);
      }
      return used_;
    }
    public int getUsedCount() {
      return internalGetUsed().getMap().size();
    }
    /**
     * <pre>
     * Used is the current observed total usage of the resource in the namespace.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
     */
    @java.lang.Override
    public boolean containsUsed(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetUsed().getMap().containsKey(key);
    }
    /**
     * Use {@link #getUsedMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getUsed() {
      return getUsedMap();
    }
    /**
     * <pre>
     * Used is the current observed total usage of the resource in the namespace.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getUsedMap() {
      return internalGetUsed().getMap();
    }
    /**
     * <pre>
     * Used is the current observed total usage of the resource in the namespace.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getUsedOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetUsed().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Used is the current observed total usage of the resource in the namespace.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getUsedOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetUsed().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetHard(),
          HardDefaultEntryHolder.defaultEntry,
          1);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetUsed(),
          UsedDefaultEntryHolder.defaultEntry,
          2);
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetHard().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        hard__ = HardDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, hard__);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetUsed().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        used__ = UsedDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, used__);
      }
      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.V1.ResourceQuotaStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ResourceQuotaStatus other = (io.kubernetes.client.proto.V1.ResourceQuotaStatus) obj;

      if (!internalGetHard().equals(
          other.internalGetHard())) return false;
      if (!internalGetUsed().equals(
          other.internalGetUsed())) 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 (!internalGetHard().getMap().isEmpty()) {
        hash = (37 * hash) + HARD_FIELD_NUMBER;
        hash = (53 * hash) + internalGetHard().hashCode();
      }
      if (!internalGetUsed().getMap().isEmpty()) {
        hash = (37 * hash) + USED_FIELD_NUMBER;
        hash = (53 * hash) + internalGetUsed().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ResourceQuotaStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaStatus 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.V1.ResourceQuotaStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaStatus 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.V1.ResourceQuotaStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaStatus 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.V1.ResourceQuotaStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ResourceQuotaStatus 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.V1.ResourceQuotaStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceQuotaStatus 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.V1.ResourceQuotaStatus 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>
     * ResourceQuotaStatus defines the enforced hard limits and observed use.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ResourceQuotaStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ResourceQuotaStatus)
        io.kubernetes.client.proto.V1.ResourceQuotaStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetHard();
          case 2:
            return internalGetUsed();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableHard();
          case 2:
            return internalGetMutableUsed();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ResourceQuotaStatus.class, io.kubernetes.client.proto.V1.ResourceQuotaStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ResourceQuotaStatus.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableHard().clear();
        internalGetMutableUsed().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuotaStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ResourceQuotaStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuotaStatus build() {
        io.kubernetes.client.proto.V1.ResourceQuotaStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceQuotaStatus buildPartial() {
        io.kubernetes.client.proto.V1.ResourceQuotaStatus result = new io.kubernetes.client.proto.V1.ResourceQuotaStatus(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ResourceQuotaStatus result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.hard_ = internalGetHard().build(HardDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.used_ = internalGetUsed().build(UsedDefaultEntryHolder.defaultEntry);
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.ResourceQuotaStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.ResourceQuotaStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ResourceQuotaStatus other) {
        if (other == io.kubernetes.client.proto.V1.ResourceQuotaStatus.getDefaultInstance()) return this;
        internalGetMutableHard().mergeFrom(
            other.internalGetHard());
        bitField0_ |= 0x00000001;
        internalGetMutableUsed().mergeFrom(
            other.internalGetUsed());
        bitField0_ |= 0x00000002;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                hard__ = input.readMessage(
                    HardDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableHard().ensureBuilderMap().put(
                    hard__.getKey(), hard__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                used__ = input.readMessage(
                    UsedDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableUsed().ensureBuilderMap().put(
                    used__.getKey(), used__.getValue());
                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 static final class HardConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return HardDefaultEntryHolder.defaultEntry;
        }
      };
      private static final HardConverter hardConverter = new HardConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> hard_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetHard() {
        if (hard_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(hardConverter);
        }
        return hard_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableHard() {
        if (hard_ == null) {
          hard_ = new com.google.protobuf.MapFieldBuilder<>(hardConverter);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return hard_;
      }
      public int getHardCount() {
        return internalGetHard().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Hard is the set of enforced hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      @java.lang.Override
      public boolean containsHard(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetHard().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getHardMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getHard() {
        return getHardMap();
      }
      /**
       * <pre>
       * Hard is the set of enforced hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getHardMap() {
        return internalGetHard().getImmutableMap();
      }
      /**
       * <pre>
       * Hard is the set of enforced hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getHardOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableHard().ensureBuilderMap();
        return map.containsKey(key) ? hardConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Hard is the set of enforced hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getHardOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableHard().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return hardConverter.build(map.get(key));
      }
      public Builder clearHard() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableHard().clear();
        return this;
      }
      /**
       * <pre>
       * Hard is the set of enforced hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      public Builder removeHard(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableHard().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableHard() {
        bitField0_ |= 0x00000001;
        return internalGetMutableHard().ensureMessageMap();
      }
      /**
       * <pre>
       * Hard is the set of enforced hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      public Builder putHard(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableHard().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Hard is the set of enforced hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      public Builder putAllHard(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableHard().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Hard is the set of enforced hard limits for each named resource.
       * More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; hard = 1;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putHardBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableHard().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private static final class UsedConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return UsedDefaultEntryHolder.defaultEntry;
        }
      };
      private static final UsedConverter usedConverter = new UsedConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> used_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetUsed() {
        if (used_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(usedConverter);
        }
        return used_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableUsed() {
        if (used_ == null) {
          used_ = new com.google.protobuf.MapFieldBuilder<>(usedConverter);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return used_;
      }
      public int getUsedCount() {
        return internalGetUsed().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Used is the current observed total usage of the resource in the namespace.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
       */
      @java.lang.Override
      public boolean containsUsed(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetUsed().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getUsedMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getUsed() {
        return getUsedMap();
      }
      /**
       * <pre>
       * Used is the current observed total usage of the resource in the namespace.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getUsedMap() {
        return internalGetUsed().getImmutableMap();
      }
      /**
       * <pre>
       * Used is the current observed total usage of the resource in the namespace.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getUsedOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableUsed().ensureBuilderMap();
        return map.containsKey(key) ? usedConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Used is the current observed total usage of the resource in the namespace.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getUsedOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableUsed().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return usedConverter.build(map.get(key));
      }
      public Builder clearUsed() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableUsed().clear();
        return this;
      }
      /**
       * <pre>
       * Used is the current observed total usage of the resource in the namespace.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
       */
      public Builder removeUsed(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableUsed().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableUsed() {
        bitField0_ |= 0x00000002;
        return internalGetMutableUsed().ensureMessageMap();
      }
      /**
       * <pre>
       * Used is the current observed total usage of the resource in the namespace.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
       */
      public Builder putUsed(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableUsed().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Used is the current observed total usage of the resource in the namespace.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
       */
      public Builder putAllUsed(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableUsed().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Used is the current observed total usage of the resource in the namespace.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; used = 2;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putUsedBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableUsed().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ResourceQuotaStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ResourceQuotaStatus)
    private static final io.kubernetes.client.proto.V1.ResourceQuotaStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ResourceQuotaStatus();
    }

    public static io.kubernetes.client.proto.V1.ResourceQuotaStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResourceQuotaStatus>
        PARSER = new com.google.protobuf.AbstractParser<ResourceQuotaStatus>() {
      @java.lang.Override
      public ResourceQuotaStatus 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<ResourceQuotaStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResourceQuotaStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceQuotaStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResourceRequirementsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ResourceRequirements)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    int getLimitsCount();
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    boolean containsLimits(
        java.lang.String key);
    /**
     * Use {@link #getLimitsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getLimits();
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getLimitsMap();
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getLimitsOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getLimitsOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    int getRequestsCount();
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    boolean containsRequests(
        java.lang.String key);
    /**
     * Use {@link #getRequestsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getRequests();
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getRequestsMap();
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getRequestsOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getRequestsOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Claims lists the names of resources, defined in spec.resourceClaims,
     * that are used by this container.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable. It can only be set for containers.
     *
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ResourceClaim> 
        getClaimsList();
    /**
     * <pre>
     * Claims lists the names of resources, defined in spec.resourceClaims,
     * that are used by this container.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable. It can only be set for containers.
     *
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
     */
    io.kubernetes.client.proto.V1.ResourceClaim getClaims(int index);
    /**
     * <pre>
     * Claims lists the names of resources, defined in spec.resourceClaims,
     * that are used by this container.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable. It can only be set for containers.
     *
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
     */
    int getClaimsCount();
    /**
     * <pre>
     * Claims lists the names of resources, defined in spec.resourceClaims,
     * that are used by this container.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable. It can only be set for containers.
     *
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ResourceClaimOrBuilder> 
        getClaimsOrBuilderList();
    /**
     * <pre>
     * Claims lists the names of resources, defined in spec.resourceClaims,
     * that are used by this container.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable. It can only be set for containers.
     *
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
     */
    io.kubernetes.client.proto.V1.ResourceClaimOrBuilder getClaimsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ResourceRequirements describes the compute resource requirements.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ResourceRequirements}
   */
  public static final class ResourceRequirements extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ResourceRequirements)
      ResourceRequirementsOrBuilder {
  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= */ "",
        ResourceRequirements.class.getName());
    }
    // Use ResourceRequirements.newBuilder() to construct.
    private ResourceRequirements(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ResourceRequirements() {
      claims_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceRequirements_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 1:
          return internalGetLimits();
        case 2:
          return internalGetRequests();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceRequirements_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ResourceRequirements.class, io.kubernetes.client.proto.V1.ResourceRequirements.Builder.class);
    }

    public static final int LIMITS_FIELD_NUMBER = 1;
    private static final class LimitsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceRequirements_LimitsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> limits_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetLimits() {
      if (limits_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            LimitsDefaultEntryHolder.defaultEntry);
      }
      return limits_;
    }
    public int getLimitsCount() {
      return internalGetLimits().getMap().size();
    }
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    @java.lang.Override
    public boolean containsLimits(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetLimits().getMap().containsKey(key);
    }
    /**
     * Use {@link #getLimitsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getLimits() {
      return getLimitsMap();
    }
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getLimitsMap() {
      return internalGetLimits().getMap();
    }
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getLimitsOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetLimits().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getLimitsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetLimits().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int REQUESTS_FIELD_NUMBER = 2;
    private static final class RequestsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceRequirements_RequestsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> requests_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetRequests() {
      if (requests_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            RequestsDefaultEntryHolder.defaultEntry);
      }
      return requests_;
    }
    public int getRequestsCount() {
      return internalGetRequests().getMap().size();
    }
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    @java.lang.Override
    public boolean containsRequests(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetRequests().getMap().containsKey(key);
    }
    /**
     * Use {@link #getRequestsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getRequests() {
      return getRequestsMap();
    }
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getRequestsMap() {
      return internalGetRequests().getMap();
    }
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getRequestsOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetRequests().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getRequestsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetRequests().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int CLAIMS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ResourceClaim> claims_;
    /**
     * <pre>
     * Claims lists the names of resources, defined in spec.resourceClaims,
     * that are used by this container.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable. It can only be set for containers.
     *
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ResourceClaim> getClaimsList() {
      return claims_;
    }
    /**
     * <pre>
     * Claims lists the names of resources, defined in spec.resourceClaims,
     * that are used by this container.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable. It can only be set for containers.
     *
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ResourceClaimOrBuilder> 
        getClaimsOrBuilderList() {
      return claims_;
    }
    /**
     * <pre>
     * Claims lists the names of resources, defined in spec.resourceClaims,
     * that are used by this container.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable. It can only be set for containers.
     *
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
     */
    @java.lang.Override
    public int getClaimsCount() {
      return claims_.size();
    }
    /**
     * <pre>
     * Claims lists the names of resources, defined in spec.resourceClaims,
     * that are used by this container.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable. It can only be set for containers.
     *
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceClaim getClaims(int index) {
      return claims_.get(index);
    }
    /**
     * <pre>
     * Claims lists the names of resources, defined in spec.resourceClaims,
     * that are used by this container.
     *
     * This is an alpha field and requires enabling the
     * DynamicResourceAllocation feature gate.
     *
     * This field is immutable. It can only be set for containers.
     *
     * +listType=map
     * +listMapKey=name
     * +featureGate=DynamicResourceAllocation
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceClaimOrBuilder getClaimsOrBuilder(
        int index) {
      return claims_.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 {
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetLimits(),
          LimitsDefaultEntryHolder.defaultEntry,
          1);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetRequests(),
          RequestsDefaultEntryHolder.defaultEntry,
          2);
      for (int i = 0; i < claims_.size(); i++) {
        output.writeMessage(3, claims_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetLimits().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        limits__ = LimitsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, limits__);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetRequests().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        requests__ = RequestsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, requests__);
      }
      for (int i = 0; i < claims_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, claims_.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.V1.ResourceRequirements)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ResourceRequirements other = (io.kubernetes.client.proto.V1.ResourceRequirements) obj;

      if (!internalGetLimits().equals(
          other.internalGetLimits())) return false;
      if (!internalGetRequests().equals(
          other.internalGetRequests())) return false;
      if (!getClaimsList()
          .equals(other.getClaimsList())) 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 (!internalGetLimits().getMap().isEmpty()) {
        hash = (37 * hash) + LIMITS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetLimits().hashCode();
      }
      if (!internalGetRequests().getMap().isEmpty()) {
        hash = (37 * hash) + REQUESTS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetRequests().hashCode();
      }
      if (getClaimsCount() > 0) {
        hash = (37 * hash) + CLAIMS_FIELD_NUMBER;
        hash = (53 * hash) + getClaimsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ResourceRequirements parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceRequirements 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.V1.ResourceRequirements parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceRequirements 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.V1.ResourceRequirements parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ResourceRequirements parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ResourceRequirements parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceRequirements 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.V1.ResourceRequirements parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ResourceRequirements 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.V1.ResourceRequirements parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ResourceRequirements 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.V1.ResourceRequirements 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>
     * ResourceRequirements describes the compute resource requirements.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ResourceRequirements}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ResourceRequirements)
        io.kubernetes.client.proto.V1.ResourceRequirementsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceRequirements_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetLimits();
          case 2:
            return internalGetRequests();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableLimits();
          case 2:
            return internalGetMutableRequests();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceRequirements_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ResourceRequirements.class, io.kubernetes.client.proto.V1.ResourceRequirements.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ResourceRequirements.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableLimits().clear();
        internalGetMutableRequests().clear();
        if (claimsBuilder_ == null) {
          claims_ = java.util.Collections.emptyList();
        } else {
          claims_ = null;
          claimsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ResourceRequirements_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceRequirements getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceRequirements build() {
        io.kubernetes.client.proto.V1.ResourceRequirements result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ResourceRequirements buildPartial() {
        io.kubernetes.client.proto.V1.ResourceRequirements result = new io.kubernetes.client.proto.V1.ResourceRequirements(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ResourceRequirements result) {
        if (claimsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            claims_ = java.util.Collections.unmodifiableList(claims_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.claims_ = claims_;
        } else {
          result.claims_ = claimsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ResourceRequirements result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.limits_ = internalGetLimits().build(LimitsDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.requests_ = internalGetRequests().build(RequestsDefaultEntryHolder.defaultEntry);
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.ResourceRequirements) {
          return mergeFrom((io.kubernetes.client.proto.V1.ResourceRequirements)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ResourceRequirements other) {
        if (other == io.kubernetes.client.proto.V1.ResourceRequirements.getDefaultInstance()) return this;
        internalGetMutableLimits().mergeFrom(
            other.internalGetLimits());
        bitField0_ |= 0x00000001;
        internalGetMutableRequests().mergeFrom(
            other.internalGetRequests());
        bitField0_ |= 0x00000002;
        if (claimsBuilder_ == null) {
          if (!other.claims_.isEmpty()) {
            if (claims_.isEmpty()) {
              claims_ = other.claims_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureClaimsIsMutable();
              claims_.addAll(other.claims_);
            }
            onChanged();
          }
        } else {
          if (!other.claims_.isEmpty()) {
            if (claimsBuilder_.isEmpty()) {
              claimsBuilder_.dispose();
              claimsBuilder_ = null;
              claims_ = other.claims_;
              bitField0_ = (bitField0_ & ~0x00000004);
              claimsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getClaimsFieldBuilder() : null;
            } else {
              claimsBuilder_.addAllMessages(other.claims_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                limits__ = input.readMessage(
                    LimitsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableLimits().ensureBuilderMap().put(
                    limits__.getKey(), limits__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                requests__ = input.readMessage(
                    RequestsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableRequests().ensureBuilderMap().put(
                    requests__.getKey(), requests__.getValue());
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                io.kubernetes.client.proto.V1.ResourceClaim m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ResourceClaim.parser(),
                        extensionRegistry);
                if (claimsBuilder_ == null) {
                  ensureClaimsIsMutable();
                  claims_.add(m);
                } else {
                  claimsBuilder_.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 static final class LimitsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return LimitsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final LimitsConverter limitsConverter = new LimitsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> limits_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetLimits() {
        if (limits_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(limitsConverter);
        }
        return limits_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableLimits() {
        if (limits_ == null) {
          limits_ = new com.google.protobuf.MapFieldBuilder<>(limitsConverter);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return limits_;
      }
      public int getLimitsCount() {
        return internalGetLimits().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      @java.lang.Override
      public boolean containsLimits(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetLimits().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getLimitsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getLimits() {
        return getLimitsMap();
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getLimitsMap() {
        return internalGetLimits().getImmutableMap();
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getLimitsOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableLimits().ensureBuilderMap();
        return map.containsKey(key) ? limitsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getLimitsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableLimits().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return limitsConverter.build(map.get(key));
      }
      public Builder clearLimits() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableLimits().clear();
        return this;
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      public Builder removeLimits(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableLimits().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableLimits() {
        bitField0_ |= 0x00000001;
        return internalGetMutableLimits().ensureMessageMap();
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      public Builder putLimits(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableLimits().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      public Builder putAllLimits(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableLimits().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putLimitsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableLimits().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private static final class RequestsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return RequestsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final RequestsConverter requestsConverter = new RequestsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> requests_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetRequests() {
        if (requests_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(requestsConverter);
        }
        return requests_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableRequests() {
        if (requests_ == null) {
          requests_ = new com.google.protobuf.MapFieldBuilder<>(requestsConverter);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return requests_;
      }
      public int getRequestsCount() {
        return internalGetRequests().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      @java.lang.Override
      public boolean containsRequests(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetRequests().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getRequestsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getRequests() {
        return getRequestsMap();
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getRequestsMap() {
        return internalGetRequests().getImmutableMap();
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getRequestsOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableRequests().ensureBuilderMap();
        return map.containsKey(key) ? requestsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getRequestsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableRequests().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return requestsConverter.build(map.get(key));
      }
      public Builder clearRequests() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableRequests().clear();
        return this;
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      public Builder removeRequests(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableRequests().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableRequests() {
        bitField0_ |= 0x00000002;
        return internalGetMutableRequests().ensureMessageMap();
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      public Builder putRequests(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableRequests().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      public Builder putAllRequests(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableRequests().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putRequestsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableRequests().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private java.util.List<io.kubernetes.client.proto.V1.ResourceClaim> claims_ =
        java.util.Collections.emptyList();
      private void ensureClaimsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          claims_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ResourceClaim>(claims_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceClaim, io.kubernetes.client.proto.V1.ResourceClaim.Builder, io.kubernetes.client.proto.V1.ResourceClaimOrBuilder> claimsBuilder_;

      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ResourceClaim> getClaimsList() {
        if (claimsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(claims_);
        } else {
          return claimsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public int getClaimsCount() {
        if (claimsBuilder_ == null) {
          return claims_.size();
        } else {
          return claimsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceClaim getClaims(int index) {
        if (claimsBuilder_ == null) {
          return claims_.get(index);
        } else {
          return claimsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public Builder setClaims(
          int index, io.kubernetes.client.proto.V1.ResourceClaim value) {
        if (claimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClaimsIsMutable();
          claims_.set(index, value);
          onChanged();
        } else {
          claimsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public Builder setClaims(
          int index, io.kubernetes.client.proto.V1.ResourceClaim.Builder builderForValue) {
        if (claimsBuilder_ == null) {
          ensureClaimsIsMutable();
          claims_.set(index, builderForValue.build());
          onChanged();
        } else {
          claimsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public Builder addClaims(io.kubernetes.client.proto.V1.ResourceClaim value) {
        if (claimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClaimsIsMutable();
          claims_.add(value);
          onChanged();
        } else {
          claimsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public Builder addClaims(
          int index, io.kubernetes.client.proto.V1.ResourceClaim value) {
        if (claimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClaimsIsMutable();
          claims_.add(index, value);
          onChanged();
        } else {
          claimsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public Builder addClaims(
          io.kubernetes.client.proto.V1.ResourceClaim.Builder builderForValue) {
        if (claimsBuilder_ == null) {
          ensureClaimsIsMutable();
          claims_.add(builderForValue.build());
          onChanged();
        } else {
          claimsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public Builder addClaims(
          int index, io.kubernetes.client.proto.V1.ResourceClaim.Builder builderForValue) {
        if (claimsBuilder_ == null) {
          ensureClaimsIsMutable();
          claims_.add(index, builderForValue.build());
          onChanged();
        } else {
          claimsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public Builder addAllClaims(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ResourceClaim> values) {
        if (claimsBuilder_ == null) {
          ensureClaimsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, claims_);
          onChanged();
        } else {
          claimsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public Builder clearClaims() {
        if (claimsBuilder_ == null) {
          claims_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          claimsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public Builder removeClaims(int index) {
        if (claimsBuilder_ == null) {
          ensureClaimsIsMutable();
          claims_.remove(index);
          onChanged();
        } else {
          claimsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceClaim.Builder getClaimsBuilder(
          int index) {
        return getClaimsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceClaimOrBuilder getClaimsOrBuilder(
          int index) {
        if (claimsBuilder_ == null) {
          return claims_.get(index);  } else {
          return claimsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ResourceClaimOrBuilder> 
           getClaimsOrBuilderList() {
        if (claimsBuilder_ != null) {
          return claimsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(claims_);
        }
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceClaim.Builder addClaimsBuilder() {
        return getClaimsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ResourceClaim.getDefaultInstance());
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ResourceClaim.Builder addClaimsBuilder(
          int index) {
        return getClaimsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ResourceClaim.getDefaultInstance());
      }
      /**
       * <pre>
       * Claims lists the names of resources, defined in spec.resourceClaims,
       * that are used by this container.
       *
       * This is an alpha field and requires enabling the
       * DynamicResourceAllocation feature gate.
       *
       * This field is immutable. It can only be set for containers.
       *
       * +listType=map
       * +listMapKey=name
       * +featureGate=DynamicResourceAllocation
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ResourceClaim claims = 3;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ResourceClaim.Builder> 
           getClaimsBuilderList() {
        return getClaimsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ResourceClaim, io.kubernetes.client.proto.V1.ResourceClaim.Builder, io.kubernetes.client.proto.V1.ResourceClaimOrBuilder> 
          getClaimsFieldBuilder() {
        if (claimsBuilder_ == null) {
          claimsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ResourceClaim, io.kubernetes.client.proto.V1.ResourceClaim.Builder, io.kubernetes.client.proto.V1.ResourceClaimOrBuilder>(
                  claims_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          claims_ = null;
        }
        return claimsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ResourceRequirements)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ResourceRequirements)
    private static final io.kubernetes.client.proto.V1.ResourceRequirements DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ResourceRequirements();
    }

    public static io.kubernetes.client.proto.V1.ResourceRequirements getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResourceRequirements>
        PARSER = new com.google.protobuf.AbstractParser<ResourceRequirements>() {
      @java.lang.Override
      public ResourceRequirements 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<ResourceRequirements> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResourceRequirements> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ResourceRequirements getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SELinuxOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SELinuxOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * User is a SELinux user label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string user = 1;</code>
     * @return Whether the user field is set.
     */
    boolean hasUser();
    /**
     * <pre>
     * User is a SELinux user label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string user = 1;</code>
     * @return The user.
     */
    java.lang.String getUser();
    /**
     * <pre>
     * User is a SELinux user label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string user = 1;</code>
     * @return The bytes for user.
     */
    com.google.protobuf.ByteString
        getUserBytes();

    /**
     * <pre>
     * Role is a SELinux role label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string role = 2;</code>
     * @return Whether the role field is set.
     */
    boolean hasRole();
    /**
     * <pre>
     * Role is a SELinux role label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string role = 2;</code>
     * @return The role.
     */
    java.lang.String getRole();
    /**
     * <pre>
     * Role is a SELinux role label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string role = 2;</code>
     * @return The bytes for role.
     */
    com.google.protobuf.ByteString
        getRoleBytes();

    /**
     * <pre>
     * Type is a SELinux type label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * Type is a SELinux type label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * Type is a SELinux type label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * Level is SELinux level label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string level = 4;</code>
     * @return Whether the level field is set.
     */
    boolean hasLevel();
    /**
     * <pre>
     * Level is SELinux level label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string level = 4;</code>
     * @return The level.
     */
    java.lang.String getLevel();
    /**
     * <pre>
     * Level is SELinux level label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string level = 4;</code>
     * @return The bytes for level.
     */
    com.google.protobuf.ByteString
        getLevelBytes();
  }
  /**
   * <pre>
   * SELinuxOptions are the labels to be applied to the container
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SELinuxOptions}
   */
  public static final class SELinuxOptions extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SELinuxOptions)
      SELinuxOptionsOrBuilder {
  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= */ "",
        SELinuxOptions.class.getName());
    }
    // Use SELinuxOptions.newBuilder() to construct.
    private SELinuxOptions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SELinuxOptions() {
      user_ = "";
      role_ = "";
      type_ = "";
      level_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SELinuxOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SELinuxOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SELinuxOptions.class, io.kubernetes.client.proto.V1.SELinuxOptions.Builder.class);
    }

    private int bitField0_;
    public static final int USER_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object user_ = "";
    /**
     * <pre>
     * User is a SELinux user label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string user = 1;</code>
     * @return Whether the user field is set.
     */
    @java.lang.Override
    public boolean hasUser() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * User is a SELinux user label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string user = 1;</code>
     * @return The user.
     */
    @java.lang.Override
    public java.lang.String getUser() {
      java.lang.Object ref = user_;
      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()) {
          user_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * User is a SELinux user label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string user = 1;</code>
     * @return The bytes for user.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserBytes() {
      java.lang.Object ref = user_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        user_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ROLE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object role_ = "";
    /**
     * <pre>
     * Role is a SELinux role label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string role = 2;</code>
     * @return Whether the role field is set.
     */
    @java.lang.Override
    public boolean hasRole() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Role is a SELinux role label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string role = 2;</code>
     * @return The role.
     */
    @java.lang.Override
    public java.lang.String getRole() {
      java.lang.Object ref = role_;
      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()) {
          role_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Role is a SELinux role label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string role = 2;</code>
     * @return The bytes for role.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRoleBytes() {
      java.lang.Object ref = role_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        role_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * Type is a SELinux type label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Type is a SELinux type label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</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 a SELinux type label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</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 LEVEL_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object level_ = "";
    /**
     * <pre>
     * Level is SELinux level label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string level = 4;</code>
     * @return Whether the level field is set.
     */
    @java.lang.Override
    public boolean hasLevel() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Level is SELinux level label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string level = 4;</code>
     * @return The level.
     */
    @java.lang.Override
    public java.lang.String getLevel() {
      java.lang.Object ref = level_;
      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()) {
          level_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Level is SELinux level label that applies to the container.
     * +optional
     * </pre>
     *
     * <code>optional string level = 4;</code>
     * @return The bytes for level.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLevelBytes() {
      java.lang.Object ref = level_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        level_ = 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, user_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, role_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, type_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, level_);
      }
      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, user_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, role_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, type_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, level_);
      }
      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.V1.SELinuxOptions)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SELinuxOptions other = (io.kubernetes.client.proto.V1.SELinuxOptions) obj;

      if (hasUser() != other.hasUser()) return false;
      if (hasUser()) {
        if (!getUser()
            .equals(other.getUser())) return false;
      }
      if (hasRole() != other.hasRole()) return false;
      if (hasRole()) {
        if (!getRole()
            .equals(other.getRole())) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasLevel() != other.hasLevel()) return false;
      if (hasLevel()) {
        if (!getLevel()
            .equals(other.getLevel())) 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 (hasUser()) {
        hash = (37 * hash) + USER_FIELD_NUMBER;
        hash = (53 * hash) + getUser().hashCode();
      }
      if (hasRole()) {
        hash = (37 * hash) + ROLE_FIELD_NUMBER;
        hash = (53 * hash) + getRole().hashCode();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      if (hasLevel()) {
        hash = (37 * hash) + LEVEL_FIELD_NUMBER;
        hash = (53 * hash) + getLevel().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SELinuxOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SELinuxOptions 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.V1.SELinuxOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SELinuxOptions 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.V1.SELinuxOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SELinuxOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SELinuxOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SELinuxOptions 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.V1.SELinuxOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SELinuxOptions 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.V1.SELinuxOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SELinuxOptions 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.V1.SELinuxOptions 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>
     * SELinuxOptions are the labels to be applied to the container
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SELinuxOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SELinuxOptions)
        io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SELinuxOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SELinuxOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SELinuxOptions.class, io.kubernetes.client.proto.V1.SELinuxOptions.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SELinuxOptions.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        user_ = "";
        role_ = "";
        type_ = "";
        level_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SELinuxOptions_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SELinuxOptions getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SELinuxOptions build() {
        io.kubernetes.client.proto.V1.SELinuxOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SELinuxOptions buildPartial() {
        io.kubernetes.client.proto.V1.SELinuxOptions result = new io.kubernetes.client.proto.V1.SELinuxOptions(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.SELinuxOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.user_ = user_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.role_ = role_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.type_ = type_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.level_ = level_;
          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.V1.SELinuxOptions) {
          return mergeFrom((io.kubernetes.client.proto.V1.SELinuxOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SELinuxOptions other) {
        if (other == io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance()) return this;
        if (other.hasUser()) {
          user_ = other.user_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasRole()) {
          role_ = other.role_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasLevel()) {
          level_ = other.level_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                user_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                role_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                level_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object user_ = "";
      /**
       * <pre>
       * User is a SELinux user label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string user = 1;</code>
       * @return Whether the user field is set.
       */
      public boolean hasUser() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * User is a SELinux user label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string user = 1;</code>
       * @return The user.
       */
      public java.lang.String getUser() {
        java.lang.Object ref = user_;
        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()) {
            user_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * User is a SELinux user label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string user = 1;</code>
       * @return The bytes for user.
       */
      public com.google.protobuf.ByteString
          getUserBytes() {
        java.lang.Object ref = user_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          user_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * User is a SELinux user label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string user = 1;</code>
       * @param value The user to set.
       * @return This builder for chaining.
       */
      public Builder setUser(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * User is a SELinux user label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string user = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUser() {
        user_ = getDefaultInstance().getUser();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * User is a SELinux user label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string user = 1;</code>
       * @param value The bytes for user to set.
       * @return This builder for chaining.
       */
      public Builder setUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        user_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object role_ = "";
      /**
       * <pre>
       * Role is a SELinux role label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string role = 2;</code>
       * @return Whether the role field is set.
       */
      public boolean hasRole() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Role is a SELinux role label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string role = 2;</code>
       * @return The role.
       */
      public java.lang.String getRole() {
        java.lang.Object ref = role_;
        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()) {
            role_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Role is a SELinux role label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string role = 2;</code>
       * @return The bytes for role.
       */
      public com.google.protobuf.ByteString
          getRoleBytes() {
        java.lang.Object ref = role_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          role_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Role is a SELinux role label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string role = 2;</code>
       * @param value The role to set.
       * @return This builder for chaining.
       */
      public Builder setRole(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        role_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Role is a SELinux role label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string role = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRole() {
        role_ = getDefaultInstance().getRole();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Role is a SELinux role label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string role = 2;</code>
       * @param value The bytes for role to set.
       * @return This builder for chaining.
       */
      public Builder setRoleBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        role_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <pre>
       * Type is a SELinux type label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Type is a SELinux type label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</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 a SELinux type label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</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 a SELinux type label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type is a SELinux type label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type is a SELinux type label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object level_ = "";
      /**
       * <pre>
       * Level is SELinux level label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string level = 4;</code>
       * @return Whether the level field is set.
       */
      public boolean hasLevel() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Level is SELinux level label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string level = 4;</code>
       * @return The level.
       */
      public java.lang.String getLevel() {
        java.lang.Object ref = level_;
        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()) {
            level_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Level is SELinux level label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string level = 4;</code>
       * @return The bytes for level.
       */
      public com.google.protobuf.ByteString
          getLevelBytes() {
        java.lang.Object ref = level_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          level_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Level is SELinux level label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string level = 4;</code>
       * @param value The level to set.
       * @return This builder for chaining.
       */
      public Builder setLevel(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        level_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Level is SELinux level label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string level = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearLevel() {
        level_ = getDefaultInstance().getLevel();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Level is SELinux level label that applies to the container.
       * +optional
       * </pre>
       *
       * <code>optional string level = 4;</code>
       * @param value The bytes for level to set.
       * @return This builder for chaining.
       */
      public Builder setLevelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        level_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SELinuxOptions)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SELinuxOptions)
    private static final io.kubernetes.client.proto.V1.SELinuxOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SELinuxOptions();
    }

    public static io.kubernetes.client.proto.V1.SELinuxOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SELinuxOptions>
        PARSER = new com.google.protobuf.AbstractParser<SELinuxOptions>() {
      @java.lang.Override
      public SELinuxOptions 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<SELinuxOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SELinuxOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SELinuxOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ScaleIOPersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ScaleIOPersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return Whether the gateway field is set.
     */
    boolean hasGateway();
    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return The gateway.
     */
    java.lang.String getGateway();
    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return The bytes for gateway.
     */
    com.google.protobuf.ByteString
        getGatewayBytes();

    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return Whether the system field is set.
     */
    boolean hasSystem();
    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return The system.
     */
    java.lang.String getSystem();
    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return The bytes for system.
     */
    com.google.protobuf.ByteString
        getSystemBytes();

    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.SecretReference getSecretRef();
    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     */
    io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder();

    /**
     * <pre>
     * sslEnabled is the flag to enable/disable SSL communication with Gateway, default false
     * +optional
     * </pre>
     *
     * <code>optional bool sslEnabled = 4;</code>
     * @return Whether the sslEnabled field is set.
     */
    boolean hasSslEnabled();
    /**
     * <pre>
     * sslEnabled is the flag to enable/disable SSL communication with Gateway, default false
     * +optional
     * </pre>
     *
     * <code>optional bool sslEnabled = 4;</code>
     * @return The sslEnabled.
     */
    boolean getSslEnabled();

    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return Whether the protectionDomain field is set.
     */
    boolean hasProtectionDomain();
    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return The protectionDomain.
     */
    java.lang.String getProtectionDomain();
    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return The bytes for protectionDomain.
     */
    com.google.protobuf.ByteString
        getProtectionDomainBytes();

    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return Whether the storagePool field is set.
     */
    boolean hasStoragePool();
    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return The storagePool.
     */
    java.lang.String getStoragePool();
    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return The bytes for storagePool.
     */
    com.google.protobuf.ByteString
        getStoragePoolBytes();

    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return Whether the storageMode field is set.
     */
    boolean hasStorageMode();
    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return The storageMode.
     */
    java.lang.String getStorageMode();
    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return The bytes for storageMode.
     */
    com.google.protobuf.ByteString
        getStorageModeBytes();

    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return Whether the volumeName field is set.
     */
    boolean hasVolumeName();
    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return The volumeName.
     */
    java.lang.String getVolumeName();
    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return The bytes for volumeName.
     */
    com.google.protobuf.ByteString
        getVolumeNameBytes();

    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs"
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs"
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs"
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 10;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 10;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ScaleIOPersistentVolumeSource}
   */
  public static final class ScaleIOPersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ScaleIOPersistentVolumeSource)
      ScaleIOPersistentVolumeSourceOrBuilder {
  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= */ "",
        ScaleIOPersistentVolumeSource.class.getName());
    }
    // Use ScaleIOPersistentVolumeSource.newBuilder() to construct.
    private ScaleIOPersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ScaleIOPersistentVolumeSource() {
      gateway_ = "";
      system_ = "";
      protectionDomain_ = "";
      storagePool_ = "";
      storageMode_ = "";
      volumeName_ = "";
      fsType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScaleIOPersistentVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScaleIOPersistentVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.class, io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int GATEWAY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object gateway_ = "";
    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return Whether the gateway field is set.
     */
    @java.lang.Override
    public boolean hasGateway() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return The gateway.
     */
    @java.lang.Override
    public java.lang.String getGateway() {
      java.lang.Object ref = gateway_;
      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()) {
          gateway_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return The bytes for gateway.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGatewayBytes() {
      java.lang.Object ref = gateway_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gateway_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SYSTEM_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object system_ = "";
    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return Whether the system field is set.
     */
    @java.lang.Override
    public boolean hasSystem() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return The system.
     */
    @java.lang.Override
    public java.lang.String getSystem() {
      java.lang.Object ref = system_;
      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()) {
          system_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return The bytes for system.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSystemBytes() {
      java.lang.Object ref = system_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        system_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECRETREF_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.SecretReference secretRef_;
    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
    }

    public static final int SSLENABLED_FIELD_NUMBER = 4;
    private boolean sslEnabled_ = false;
    /**
     * <pre>
     * sslEnabled is the flag to enable/disable SSL communication with Gateway, default false
     * +optional
     * </pre>
     *
     * <code>optional bool sslEnabled = 4;</code>
     * @return Whether the sslEnabled field is set.
     */
    @java.lang.Override
    public boolean hasSslEnabled() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * sslEnabled is the flag to enable/disable SSL communication with Gateway, default false
     * +optional
     * </pre>
     *
     * <code>optional bool sslEnabled = 4;</code>
     * @return The sslEnabled.
     */
    @java.lang.Override
    public boolean getSslEnabled() {
      return sslEnabled_;
    }

    public static final int PROTECTIONDOMAIN_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object protectionDomain_ = "";
    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return Whether the protectionDomain field is set.
     */
    @java.lang.Override
    public boolean hasProtectionDomain() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return The protectionDomain.
     */
    @java.lang.Override
    public java.lang.String getProtectionDomain() {
      java.lang.Object ref = protectionDomain_;
      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()) {
          protectionDomain_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return The bytes for protectionDomain.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getProtectionDomainBytes() {
      java.lang.Object ref = protectionDomain_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        protectionDomain_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STORAGEPOOL_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object storagePool_ = "";
    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return Whether the storagePool field is set.
     */
    @java.lang.Override
    public boolean hasStoragePool() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return The storagePool.
     */
    @java.lang.Override
    public java.lang.String getStoragePool() {
      java.lang.Object ref = storagePool_;
      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()) {
          storagePool_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return The bytes for storagePool.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStoragePoolBytes() {
      java.lang.Object ref = storagePool_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storagePool_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STORAGEMODE_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object storageMode_ = "";
    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return Whether the storageMode field is set.
     */
    @java.lang.Override
    public boolean hasStorageMode() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return The storageMode.
     */
    @java.lang.Override
    public java.lang.String getStorageMode() {
      java.lang.Object ref = storageMode_;
      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()) {
          storageMode_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return The bytes for storageMode.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStorageModeBytes() {
      java.lang.Object ref = storageMode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storageMode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUMENAME_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeName_ = "";
    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return Whether the volumeName field is set.
     */
    @java.lang.Override
    public boolean hasVolumeName() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return The volumeName.
     */
    @java.lang.Override
    public java.lang.String getVolumeName() {
      java.lang.Object ref = volumeName_;
      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()) {
          volumeName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return The bytes for volumeName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeNameBytes() {
      java.lang.Object ref = volumeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs"
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs"
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs"
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 10;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 10;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 10;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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, gateway_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, system_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getSecretRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, sslEnabled_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, protectionDomain_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, storagePool_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, storageMode_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, volumeName_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, fsType_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeBool(10, readOnly_);
      }
      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, gateway_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, system_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSecretRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, sslEnabled_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, protectionDomain_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, storagePool_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, storageMode_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(8, volumeName_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, fsType_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, readOnly_);
      }
      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.V1.ScaleIOPersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource other = (io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource) obj;

      if (hasGateway() != other.hasGateway()) return false;
      if (hasGateway()) {
        if (!getGateway()
            .equals(other.getGateway())) return false;
      }
      if (hasSystem() != other.hasSystem()) return false;
      if (hasSystem()) {
        if (!getSystem()
            .equals(other.getSystem())) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) return false;
      }
      if (hasSslEnabled() != other.hasSslEnabled()) return false;
      if (hasSslEnabled()) {
        if (getSslEnabled()
            != other.getSslEnabled()) return false;
      }
      if (hasProtectionDomain() != other.hasProtectionDomain()) return false;
      if (hasProtectionDomain()) {
        if (!getProtectionDomain()
            .equals(other.getProtectionDomain())) return false;
      }
      if (hasStoragePool() != other.hasStoragePool()) return false;
      if (hasStoragePool()) {
        if (!getStoragePool()
            .equals(other.getStoragePool())) return false;
      }
      if (hasStorageMode() != other.hasStorageMode()) return false;
      if (hasStorageMode()) {
        if (!getStorageMode()
            .equals(other.getStorageMode())) return false;
      }
      if (hasVolumeName() != other.hasVolumeName()) return false;
      if (hasVolumeName()) {
        if (!getVolumeName()
            .equals(other.getVolumeName())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (hasGateway()) {
        hash = (37 * hash) + GATEWAY_FIELD_NUMBER;
        hash = (53 * hash) + getGateway().hashCode();
      }
      if (hasSystem()) {
        hash = (37 * hash) + SYSTEM_FIELD_NUMBER;
        hash = (53 * hash) + getSystem().hashCode();
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      if (hasSslEnabled()) {
        hash = (37 * hash) + SSLENABLED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getSslEnabled());
      }
      if (hasProtectionDomain()) {
        hash = (37 * hash) + PROTECTIONDOMAIN_FIELD_NUMBER;
        hash = (53 * hash) + getProtectionDomain().hashCode();
      }
      if (hasStoragePool()) {
        hash = (37 * hash) + STORAGEPOOL_FIELD_NUMBER;
        hash = (53 * hash) + getStoragePool().hashCode();
      }
      if (hasStorageMode()) {
        hash = (37 * hash) + STORAGEMODE_FIELD_NUMBER;
        hash = (53 * hash) + getStorageMode().hashCode();
      }
      if (hasVolumeName()) {
        hash = (37 * hash) + VOLUMENAME_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeName().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource 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.V1.ScaleIOPersistentVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource 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.V1.ScaleIOPersistentVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource 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.V1.ScaleIOPersistentVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource 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.V1.ScaleIOPersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource 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.V1.ScaleIOPersistentVolumeSource 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>
     * ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ScaleIOPersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ScaleIOPersistentVolumeSource)
        io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScaleIOPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScaleIOPersistentVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.class, io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        gateway_ = "";
        system_ = "";
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        sslEnabled_ = false;
        protectionDomain_ = "";
        storagePool_ = "";
        storageMode_ = "";
        volumeName_ = "";
        fsType_ = "";
        readOnly_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScaleIOPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource build() {
        io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource result = new io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.gateway_ = gateway_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.system_ = system_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.sslEnabled_ = sslEnabled_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.protectionDomain_ = protectionDomain_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.storagePool_ = storagePool_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.storageMode_ = storageMode_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.volumeName_ = volumeName_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000200;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource.getDefaultInstance()) return this;
        if (other.hasGateway()) {
          gateway_ = other.gateway_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasSystem()) {
          system_ = other.system_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        if (other.hasSslEnabled()) {
          setSslEnabled(other.getSslEnabled());
        }
        if (other.hasProtectionDomain()) {
          protectionDomain_ = other.protectionDomain_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasStoragePool()) {
          storagePool_ = other.storagePool_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasStorageMode()) {
          storageMode_ = other.storageMode_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasVolumeName()) {
          volumeName_ = other.volumeName_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        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: {
                gateway_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                system_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                sslEnabled_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                protectionDomain_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                storagePool_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                storageMode_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                volumeName_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 80: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000200;
                break;
              } // case 80
              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 gateway_ = "";
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @return Whether the gateway field is set.
       */
      public boolean hasGateway() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @return The gateway.
       */
      public java.lang.String getGateway() {
        java.lang.Object ref = gateway_;
        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()) {
            gateway_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @return The bytes for gateway.
       */
      public com.google.protobuf.ByteString
          getGatewayBytes() {
        java.lang.Object ref = gateway_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gateway_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @param value The gateway to set.
       * @return This builder for chaining.
       */
      public Builder setGateway(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        gateway_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearGateway() {
        gateway_ = getDefaultInstance().getGateway();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @param value The bytes for gateway to set.
       * @return This builder for chaining.
       */
      public Builder setGatewayBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        gateway_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object system_ = "";
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @return Whether the system field is set.
       */
      public boolean hasSystem() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @return The system.
       */
      public java.lang.String getSystem() {
        java.lang.Object ref = system_;
        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()) {
            system_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @return The bytes for system.
       */
      public com.google.protobuf.ByteString
          getSystemBytes() {
        java.lang.Object ref = system_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          system_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @param value The system to set.
       * @return This builder for chaining.
       */
      public Builder setSystem(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        system_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSystem() {
        system_ = getDefaultInstance().getSystem();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @param value The bytes for system to set.
       * @return This builder for chaining.
       */
      public Builder setSystemBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        system_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SecretReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.SecretReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.SecretReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.SecretReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000004);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.SecretReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretReference secretRef = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretReference, io.kubernetes.client.proto.V1.SecretReference.Builder, io.kubernetes.client.proto.V1.SecretReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      private boolean sslEnabled_ ;
      /**
       * <pre>
       * sslEnabled is the flag to enable/disable SSL communication with Gateway, default false
       * +optional
       * </pre>
       *
       * <code>optional bool sslEnabled = 4;</code>
       * @return Whether the sslEnabled field is set.
       */
      @java.lang.Override
      public boolean hasSslEnabled() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * sslEnabled is the flag to enable/disable SSL communication with Gateway, default false
       * +optional
       * </pre>
       *
       * <code>optional bool sslEnabled = 4;</code>
       * @return The sslEnabled.
       */
      @java.lang.Override
      public boolean getSslEnabled() {
        return sslEnabled_;
      }
      /**
       * <pre>
       * sslEnabled is the flag to enable/disable SSL communication with Gateway, default false
       * +optional
       * </pre>
       *
       * <code>optional bool sslEnabled = 4;</code>
       * @param value The sslEnabled to set.
       * @return This builder for chaining.
       */
      public Builder setSslEnabled(boolean value) {

        sslEnabled_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sslEnabled is the flag to enable/disable SSL communication with Gateway, default false
       * +optional
       * </pre>
       *
       * <code>optional bool sslEnabled = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSslEnabled() {
        bitField0_ = (bitField0_ & ~0x00000008);
        sslEnabled_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object protectionDomain_ = "";
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @return Whether the protectionDomain field is set.
       */
      public boolean hasProtectionDomain() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @return The protectionDomain.
       */
      public java.lang.String getProtectionDomain() {
        java.lang.Object ref = protectionDomain_;
        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()) {
            protectionDomain_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @return The bytes for protectionDomain.
       */
      public com.google.protobuf.ByteString
          getProtectionDomainBytes() {
        java.lang.Object ref = protectionDomain_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          protectionDomain_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @param value The protectionDomain to set.
       * @return This builder for chaining.
       */
      public Builder setProtectionDomain(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        protectionDomain_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearProtectionDomain() {
        protectionDomain_ = getDefaultInstance().getProtectionDomain();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @param value The bytes for protectionDomain to set.
       * @return This builder for chaining.
       */
      public Builder setProtectionDomainBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        protectionDomain_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object storagePool_ = "";
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @return Whether the storagePool field is set.
       */
      public boolean hasStoragePool() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @return The storagePool.
       */
      public java.lang.String getStoragePool() {
        java.lang.Object ref = storagePool_;
        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()) {
            storagePool_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @return The bytes for storagePool.
       */
      public com.google.protobuf.ByteString
          getStoragePoolBytes() {
        java.lang.Object ref = storagePool_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storagePool_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @param value The storagePool to set.
       * @return This builder for chaining.
       */
      public Builder setStoragePool(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        storagePool_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearStoragePool() {
        storagePool_ = getDefaultInstance().getStoragePool();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @param value The bytes for storagePool to set.
       * @return This builder for chaining.
       */
      public Builder setStoragePoolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        storagePool_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object storageMode_ = "";
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @return Whether the storageMode field is set.
       */
      public boolean hasStorageMode() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @return The storageMode.
       */
      public java.lang.String getStorageMode() {
        java.lang.Object ref = storageMode_;
        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()) {
            storageMode_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @return The bytes for storageMode.
       */
      public com.google.protobuf.ByteString
          getStorageModeBytes() {
        java.lang.Object ref = storageMode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storageMode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @param value The storageMode to set.
       * @return This builder for chaining.
       */
      public Builder setStorageMode(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        storageMode_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearStorageMode() {
        storageMode_ = getDefaultInstance().getStorageMode();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @param value The bytes for storageMode to set.
       * @return This builder for chaining.
       */
      public Builder setStorageModeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        storageMode_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object volumeName_ = "";
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @return Whether the volumeName field is set.
       */
      public boolean hasVolumeName() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @return The volumeName.
       */
      public java.lang.String getVolumeName() {
        java.lang.Object ref = volumeName_;
        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()) {
            volumeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @return The bytes for volumeName.
       */
      public com.google.protobuf.ByteString
          getVolumeNameBytes() {
        java.lang.Object ref = volumeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @param value The volumeName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeName_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeName() {
        volumeName_ = getDefaultInstance().getVolumeName();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @param value The bytes for volumeName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeName_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs"
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs"
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs"
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs"
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs"
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs"
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 10;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 10;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 10;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000200);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ScaleIOPersistentVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ScaleIOPersistentVolumeSource)
    private static final io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ScaleIOPersistentVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<ScaleIOPersistentVolumeSource>() {
      @java.lang.Override
      public ScaleIOPersistentVolumeSource 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<ScaleIOPersistentVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ScaleIOPersistentVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScaleIOPersistentVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ScaleIOVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ScaleIOVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return Whether the gateway field is set.
     */
    boolean hasGateway();
    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return The gateway.
     */
    java.lang.String getGateway();
    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return The bytes for gateway.
     */
    com.google.protobuf.ByteString
        getGatewayBytes();

    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return Whether the system field is set.
     */
    boolean hasSystem();
    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return The system.
     */
    java.lang.String getSystem();
    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return The bytes for system.
     */
    com.google.protobuf.ByteString
        getSystemBytes();

    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef();
    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder();

    /**
     * <pre>
     * sslEnabled Flag enable/disable SSL communication with Gateway, default false
     * +optional
     * </pre>
     *
     * <code>optional bool sslEnabled = 4;</code>
     * @return Whether the sslEnabled field is set.
     */
    boolean hasSslEnabled();
    /**
     * <pre>
     * sslEnabled Flag enable/disable SSL communication with Gateway, default false
     * +optional
     * </pre>
     *
     * <code>optional bool sslEnabled = 4;</code>
     * @return The sslEnabled.
     */
    boolean getSslEnabled();

    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return Whether the protectionDomain field is set.
     */
    boolean hasProtectionDomain();
    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return The protectionDomain.
     */
    java.lang.String getProtectionDomain();
    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return The bytes for protectionDomain.
     */
    com.google.protobuf.ByteString
        getProtectionDomainBytes();

    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return Whether the storagePool field is set.
     */
    boolean hasStoragePool();
    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return The storagePool.
     */
    java.lang.String getStoragePool();
    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return The bytes for storagePool.
     */
    com.google.protobuf.ByteString
        getStoragePoolBytes();

    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return Whether the storageMode field is set.
     */
    boolean hasStorageMode();
    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return The storageMode.
     */
    java.lang.String getStorageMode();
    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return The bytes for storageMode.
     */
    com.google.protobuf.ByteString
        getStorageModeBytes();

    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return Whether the volumeName field is set.
     */
    boolean hasVolumeName();
    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return The volumeName.
     */
    java.lang.String getVolumeName();
    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return The bytes for volumeName.
     */
    com.google.protobuf.ByteString
        getVolumeNameBytes();

    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 10;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 10;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();
  }
  /**
   * <pre>
   * ScaleIOVolumeSource represents a persistent ScaleIO volume
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ScaleIOVolumeSource}
   */
  public static final class ScaleIOVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ScaleIOVolumeSource)
      ScaleIOVolumeSourceOrBuilder {
  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= */ "",
        ScaleIOVolumeSource.class.getName());
    }
    // Use ScaleIOVolumeSource.newBuilder() to construct.
    private ScaleIOVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ScaleIOVolumeSource() {
      gateway_ = "";
      system_ = "";
      protectionDomain_ = "";
      storagePool_ = "";
      storageMode_ = "";
      volumeName_ = "";
      fsType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScaleIOVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScaleIOVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ScaleIOVolumeSource.class, io.kubernetes.client.proto.V1.ScaleIOVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int GATEWAY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object gateway_ = "";
    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return Whether the gateway field is set.
     */
    @java.lang.Override
    public boolean hasGateway() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return The gateway.
     */
    @java.lang.Override
    public java.lang.String getGateway() {
      java.lang.Object ref = gateway_;
      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()) {
          gateway_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * gateway is the host address of the ScaleIO API Gateway.
     * </pre>
     *
     * <code>optional string gateway = 1;</code>
     * @return The bytes for gateway.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGatewayBytes() {
      java.lang.Object ref = gateway_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gateway_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SYSTEM_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object system_ = "";
    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return Whether the system field is set.
     */
    @java.lang.Override
    public boolean hasSystem() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return The system.
     */
    @java.lang.Override
    public java.lang.String getSystem() {
      java.lang.Object ref = system_;
      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()) {
          system_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * system is the name of the storage system as configured in ScaleIO.
     * </pre>
     *
     * <code>optional string system = 2;</code>
     * @return The bytes for system.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSystemBytes() {
      java.lang.Object ref = system_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        system_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECRETREF_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef references to the secret for ScaleIO user and other
     * sensitive information. If this is not provided, Login operation will fail.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }

    public static final int SSLENABLED_FIELD_NUMBER = 4;
    private boolean sslEnabled_ = false;
    /**
     * <pre>
     * sslEnabled Flag enable/disable SSL communication with Gateway, default false
     * +optional
     * </pre>
     *
     * <code>optional bool sslEnabled = 4;</code>
     * @return Whether the sslEnabled field is set.
     */
    @java.lang.Override
    public boolean hasSslEnabled() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * sslEnabled Flag enable/disable SSL communication with Gateway, default false
     * +optional
     * </pre>
     *
     * <code>optional bool sslEnabled = 4;</code>
     * @return The sslEnabled.
     */
    @java.lang.Override
    public boolean getSslEnabled() {
      return sslEnabled_;
    }

    public static final int PROTECTIONDOMAIN_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object protectionDomain_ = "";
    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return Whether the protectionDomain field is set.
     */
    @java.lang.Override
    public boolean hasProtectionDomain() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return The protectionDomain.
     */
    @java.lang.Override
    public java.lang.String getProtectionDomain() {
      java.lang.Object ref = protectionDomain_;
      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()) {
          protectionDomain_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
     * +optional
     * </pre>
     *
     * <code>optional string protectionDomain = 5;</code>
     * @return The bytes for protectionDomain.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getProtectionDomainBytes() {
      java.lang.Object ref = protectionDomain_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        protectionDomain_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STORAGEPOOL_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object storagePool_ = "";
    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return Whether the storagePool field is set.
     */
    @java.lang.Override
    public boolean hasStoragePool() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return The storagePool.
     */
    @java.lang.Override
    public java.lang.String getStoragePool() {
      java.lang.Object ref = storagePool_;
      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()) {
          storagePool_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * storagePool is the ScaleIO Storage Pool associated with the protection domain.
     * +optional
     * </pre>
     *
     * <code>optional string storagePool = 6;</code>
     * @return The bytes for storagePool.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStoragePoolBytes() {
      java.lang.Object ref = storagePool_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storagePool_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STORAGEMODE_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object storageMode_ = "";
    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return Whether the storageMode field is set.
     */
    @java.lang.Override
    public boolean hasStorageMode() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return The storageMode.
     */
    @java.lang.Override
    public java.lang.String getStorageMode() {
      java.lang.Object ref = storageMode_;
      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()) {
          storageMode_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
     * Default is ThinProvisioned.
     * +optional
     * </pre>
     *
     * <code>optional string storageMode = 7;</code>
     * @return The bytes for storageMode.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStorageModeBytes() {
      java.lang.Object ref = storageMode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storageMode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUMENAME_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeName_ = "";
    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return Whether the volumeName field is set.
     */
    @java.lang.Override
    public boolean hasVolumeName() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return The volumeName.
     */
    @java.lang.Override
    public java.lang.String getVolumeName() {
      java.lang.Object ref = volumeName_;
      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()) {
          volumeName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeName is the name of a volume already created in the ScaleIO system
     * that is associated with this volume source.
     * </pre>
     *
     * <code>optional string volumeName = 8;</code>
     * @return The bytes for volumeName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeNameBytes() {
      java.lang.Object ref = volumeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs".
     * Default is "xfs".
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 9;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 10;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 10;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * readOnly Defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 10;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    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, gateway_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, system_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getSecretRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, sslEnabled_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, protectionDomain_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, storagePool_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, storageMode_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, volumeName_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, fsType_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeBool(10, readOnly_);
      }
      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, gateway_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, system_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSecretRef());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, sslEnabled_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, protectionDomain_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, storagePool_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, storageMode_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(8, volumeName_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, fsType_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, readOnly_);
      }
      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.V1.ScaleIOVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ScaleIOVolumeSource other = (io.kubernetes.client.proto.V1.ScaleIOVolumeSource) obj;

      if (hasGateway() != other.hasGateway()) return false;
      if (hasGateway()) {
        if (!getGateway()
            .equals(other.getGateway())) return false;
      }
      if (hasSystem() != other.hasSystem()) return false;
      if (hasSystem()) {
        if (!getSystem()
            .equals(other.getSystem())) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) return false;
      }
      if (hasSslEnabled() != other.hasSslEnabled()) return false;
      if (hasSslEnabled()) {
        if (getSslEnabled()
            != other.getSslEnabled()) return false;
      }
      if (hasProtectionDomain() != other.hasProtectionDomain()) return false;
      if (hasProtectionDomain()) {
        if (!getProtectionDomain()
            .equals(other.getProtectionDomain())) return false;
      }
      if (hasStoragePool() != other.hasStoragePool()) return false;
      if (hasStoragePool()) {
        if (!getStoragePool()
            .equals(other.getStoragePool())) return false;
      }
      if (hasStorageMode() != other.hasStorageMode()) return false;
      if (hasStorageMode()) {
        if (!getStorageMode()
            .equals(other.getStorageMode())) return false;
      }
      if (hasVolumeName() != other.hasVolumeName()) return false;
      if (hasVolumeName()) {
        if (!getVolumeName()
            .equals(other.getVolumeName())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) 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 (hasGateway()) {
        hash = (37 * hash) + GATEWAY_FIELD_NUMBER;
        hash = (53 * hash) + getGateway().hashCode();
      }
      if (hasSystem()) {
        hash = (37 * hash) + SYSTEM_FIELD_NUMBER;
        hash = (53 * hash) + getSystem().hashCode();
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      if (hasSslEnabled()) {
        hash = (37 * hash) + SSLENABLED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getSslEnabled());
      }
      if (hasProtectionDomain()) {
        hash = (37 * hash) + PROTECTIONDOMAIN_FIELD_NUMBER;
        hash = (53 * hash) + getProtectionDomain().hashCode();
      }
      if (hasStoragePool()) {
        hash = (37 * hash) + STORAGEPOOL_FIELD_NUMBER;
        hash = (53 * hash) + getStoragePool().hashCode();
      }
      if (hasStorageMode()) {
        hash = (37 * hash) + STORAGEMODE_FIELD_NUMBER;
        hash = (53 * hash) + getStorageMode().hashCode();
      }
      if (hasVolumeName()) {
        hash = (37 * hash) + VOLUMENAME_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeName().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ScaleIOVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOVolumeSource 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.V1.ScaleIOVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOVolumeSource 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.V1.ScaleIOVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOVolumeSource 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.V1.ScaleIOVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ScaleIOVolumeSource 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.V1.ScaleIOVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ScaleIOVolumeSource 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.V1.ScaleIOVolumeSource 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>
     * ScaleIOVolumeSource represents a persistent ScaleIO volume
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ScaleIOVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ScaleIOVolumeSource)
        io.kubernetes.client.proto.V1.ScaleIOVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScaleIOVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScaleIOVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ScaleIOVolumeSource.class, io.kubernetes.client.proto.V1.ScaleIOVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ScaleIOVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        gateway_ = "";
        system_ = "";
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        sslEnabled_ = false;
        protectionDomain_ = "";
        storagePool_ = "";
        storageMode_ = "";
        volumeName_ = "";
        fsType_ = "";
        readOnly_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScaleIOVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScaleIOVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ScaleIOVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScaleIOVolumeSource build() {
        io.kubernetes.client.proto.V1.ScaleIOVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScaleIOVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.ScaleIOVolumeSource result = new io.kubernetes.client.proto.V1.ScaleIOVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ScaleIOVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.gateway_ = gateway_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.system_ = system_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.sslEnabled_ = sslEnabled_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.protectionDomain_ = protectionDomain_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.storagePool_ = storagePool_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.storageMode_ = storageMode_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.volumeName_ = volumeName_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000200;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.ScaleIOVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.ScaleIOVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ScaleIOVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.ScaleIOVolumeSource.getDefaultInstance()) return this;
        if (other.hasGateway()) {
          gateway_ = other.gateway_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasSystem()) {
          system_ = other.system_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        if (other.hasSslEnabled()) {
          setSslEnabled(other.getSslEnabled());
        }
        if (other.hasProtectionDomain()) {
          protectionDomain_ = other.protectionDomain_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasStoragePool()) {
          storagePool_ = other.storagePool_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasStorageMode()) {
          storageMode_ = other.storageMode_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasVolumeName()) {
          volumeName_ = other.volumeName_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        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: {
                gateway_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                system_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                sslEnabled_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                protectionDomain_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                storagePool_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                storageMode_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                volumeName_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 80: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000200;
                break;
              } // case 80
              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 gateway_ = "";
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @return Whether the gateway field is set.
       */
      public boolean hasGateway() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @return The gateway.
       */
      public java.lang.String getGateway() {
        java.lang.Object ref = gateway_;
        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()) {
            gateway_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @return The bytes for gateway.
       */
      public com.google.protobuf.ByteString
          getGatewayBytes() {
        java.lang.Object ref = gateway_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gateway_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @param value The gateway to set.
       * @return This builder for chaining.
       */
      public Builder setGateway(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        gateway_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearGateway() {
        gateway_ = getDefaultInstance().getGateway();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gateway is the host address of the ScaleIO API Gateway.
       * </pre>
       *
       * <code>optional string gateway = 1;</code>
       * @param value The bytes for gateway to set.
       * @return This builder for chaining.
       */
      public Builder setGatewayBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        gateway_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object system_ = "";
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @return Whether the system field is set.
       */
      public boolean hasSystem() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @return The system.
       */
      public java.lang.String getSystem() {
        java.lang.Object ref = system_;
        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()) {
            system_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @return The bytes for system.
       */
      public com.google.protobuf.ByteString
          getSystemBytes() {
        java.lang.Object ref = system_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          system_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @param value The system to set.
       * @return This builder for chaining.
       */
      public Builder setSystem(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        system_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSystem() {
        system_ = getDefaultInstance().getSystem();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * system is the name of the storage system as configured in ScaleIO.
       * </pre>
       *
       * <code>optional string system = 2;</code>
       * @param value The bytes for system to set.
       * @return This builder for chaining.
       */
      public Builder setSystemBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        system_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000004);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef references to the secret for ScaleIO user and other
       * sensitive information. If this is not provided, Login operation will fail.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      private boolean sslEnabled_ ;
      /**
       * <pre>
       * sslEnabled Flag enable/disable SSL communication with Gateway, default false
       * +optional
       * </pre>
       *
       * <code>optional bool sslEnabled = 4;</code>
       * @return Whether the sslEnabled field is set.
       */
      @java.lang.Override
      public boolean hasSslEnabled() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * sslEnabled Flag enable/disable SSL communication with Gateway, default false
       * +optional
       * </pre>
       *
       * <code>optional bool sslEnabled = 4;</code>
       * @return The sslEnabled.
       */
      @java.lang.Override
      public boolean getSslEnabled() {
        return sslEnabled_;
      }
      /**
       * <pre>
       * sslEnabled Flag enable/disable SSL communication with Gateway, default false
       * +optional
       * </pre>
       *
       * <code>optional bool sslEnabled = 4;</code>
       * @param value The sslEnabled to set.
       * @return This builder for chaining.
       */
      public Builder setSslEnabled(boolean value) {

        sslEnabled_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sslEnabled Flag enable/disable SSL communication with Gateway, default false
       * +optional
       * </pre>
       *
       * <code>optional bool sslEnabled = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSslEnabled() {
        bitField0_ = (bitField0_ & ~0x00000008);
        sslEnabled_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object protectionDomain_ = "";
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @return Whether the protectionDomain field is set.
       */
      public boolean hasProtectionDomain() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @return The protectionDomain.
       */
      public java.lang.String getProtectionDomain() {
        java.lang.Object ref = protectionDomain_;
        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()) {
            protectionDomain_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @return The bytes for protectionDomain.
       */
      public com.google.protobuf.ByteString
          getProtectionDomainBytes() {
        java.lang.Object ref = protectionDomain_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          protectionDomain_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @param value The protectionDomain to set.
       * @return This builder for chaining.
       */
      public Builder setProtectionDomain(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        protectionDomain_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearProtectionDomain() {
        protectionDomain_ = getDefaultInstance().getProtectionDomain();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.
       * +optional
       * </pre>
       *
       * <code>optional string protectionDomain = 5;</code>
       * @param value The bytes for protectionDomain to set.
       * @return This builder for chaining.
       */
      public Builder setProtectionDomainBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        protectionDomain_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object storagePool_ = "";
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @return Whether the storagePool field is set.
       */
      public boolean hasStoragePool() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @return The storagePool.
       */
      public java.lang.String getStoragePool() {
        java.lang.Object ref = storagePool_;
        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()) {
            storagePool_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @return The bytes for storagePool.
       */
      public com.google.protobuf.ByteString
          getStoragePoolBytes() {
        java.lang.Object ref = storagePool_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storagePool_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @param value The storagePool to set.
       * @return This builder for chaining.
       */
      public Builder setStoragePool(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        storagePool_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearStoragePool() {
        storagePool_ = getDefaultInstance().getStoragePool();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storagePool is the ScaleIO Storage Pool associated with the protection domain.
       * +optional
       * </pre>
       *
       * <code>optional string storagePool = 6;</code>
       * @param value The bytes for storagePool to set.
       * @return This builder for chaining.
       */
      public Builder setStoragePoolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        storagePool_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object storageMode_ = "";
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @return Whether the storageMode field is set.
       */
      public boolean hasStorageMode() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @return The storageMode.
       */
      public java.lang.String getStorageMode() {
        java.lang.Object ref = storageMode_;
        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()) {
            storageMode_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @return The bytes for storageMode.
       */
      public com.google.protobuf.ByteString
          getStorageModeBytes() {
        java.lang.Object ref = storageMode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storageMode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @param value The storageMode to set.
       * @return This builder for chaining.
       */
      public Builder setStorageMode(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        storageMode_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearStorageMode() {
        storageMode_ = getDefaultInstance().getStorageMode();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
       * Default is ThinProvisioned.
       * +optional
       * </pre>
       *
       * <code>optional string storageMode = 7;</code>
       * @param value The bytes for storageMode to set.
       * @return This builder for chaining.
       */
      public Builder setStorageModeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        storageMode_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object volumeName_ = "";
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @return Whether the volumeName field is set.
       */
      public boolean hasVolumeName() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @return The volumeName.
       */
      public java.lang.String getVolumeName() {
        java.lang.Object ref = volumeName_;
        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()) {
            volumeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @return The bytes for volumeName.
       */
      public com.google.protobuf.ByteString
          getVolumeNameBytes() {
        java.lang.Object ref = volumeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @param value The volumeName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeName_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeName() {
        volumeName_ = getDefaultInstance().getVolumeName();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeName is the name of a volume already created in the ScaleIO system
       * that is associated with this volume source.
       * </pre>
       *
       * <code>optional string volumeName = 8;</code>
       * @param value The bytes for volumeName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeName_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs".
       * Default is "xfs".
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 9;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 10;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * readOnly Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 10;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 10;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly Defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000200);
        readOnly_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ScaleIOVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ScaleIOVolumeSource)
    private static final io.kubernetes.client.proto.V1.ScaleIOVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ScaleIOVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.ScaleIOVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ScaleIOVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<ScaleIOVolumeSource>() {
      @java.lang.Override
      public ScaleIOVolumeSource 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<ScaleIOVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ScaleIOVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScaleIOVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ScopeSelectorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ScopeSelector)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A list of scope selector requirements by scope of the resources.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement> 
        getMatchExpressionsList();
    /**
     * <pre>
     * A list of scope selector requirements by scope of the resources.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
     */
    io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement getMatchExpressions(int index);
    /**
     * <pre>
     * A list of scope selector requirements by scope of the resources.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
     */
    int getMatchExpressionsCount();
    /**
     * <pre>
     * A list of scope selector requirements by scope of the resources.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirementOrBuilder> 
        getMatchExpressionsOrBuilderList();
    /**
     * <pre>
     * A list of scope selector requirements by scope of the resources.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
     */
    io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirementOrBuilder getMatchExpressionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A scope selector represents the AND of the selectors represented
   * by the scoped-resource selector requirements.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ScopeSelector}
   */
  public static final class ScopeSelector extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ScopeSelector)
      ScopeSelectorOrBuilder {
  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= */ "",
        ScopeSelector.class.getName());
    }
    // Use ScopeSelector.newBuilder() to construct.
    private ScopeSelector(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ScopeSelector() {
      matchExpressions_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScopeSelector_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScopeSelector_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ScopeSelector.class, io.kubernetes.client.proto.V1.ScopeSelector.Builder.class);
    }

    public static final int MATCHEXPRESSIONS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement> matchExpressions_;
    /**
     * <pre>
     * A list of scope selector requirements by scope of the resources.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement> getMatchExpressionsList() {
      return matchExpressions_;
    }
    /**
     * <pre>
     * A list of scope selector requirements by scope of the resources.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirementOrBuilder> 
        getMatchExpressionsOrBuilderList() {
      return matchExpressions_;
    }
    /**
     * <pre>
     * A list of scope selector requirements by scope of the resources.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
     */
    @java.lang.Override
    public int getMatchExpressionsCount() {
      return matchExpressions_.size();
    }
    /**
     * <pre>
     * A list of scope selector requirements by scope of the resources.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement getMatchExpressions(int index) {
      return matchExpressions_.get(index);
    }
    /**
     * <pre>
     * A list of scope selector requirements by scope of the resources.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirementOrBuilder getMatchExpressionsOrBuilder(
        int index) {
      return matchExpressions_.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 {
      for (int i = 0; i < matchExpressions_.size(); i++) {
        output.writeMessage(1, matchExpressions_.get(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 < matchExpressions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, matchExpressions_.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.V1.ScopeSelector)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ScopeSelector other = (io.kubernetes.client.proto.V1.ScopeSelector) obj;

      if (!getMatchExpressionsList()
          .equals(other.getMatchExpressionsList())) 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 (getMatchExpressionsCount() > 0) {
        hash = (37 * hash) + MATCHEXPRESSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getMatchExpressionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ScopeSelector parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScopeSelector 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.V1.ScopeSelector parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScopeSelector 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.V1.ScopeSelector parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScopeSelector parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ScopeSelector parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ScopeSelector 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.V1.ScopeSelector parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ScopeSelector 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.V1.ScopeSelector parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ScopeSelector 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.V1.ScopeSelector 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>
     * A scope selector represents the AND of the selectors represented
     * by the scoped-resource selector requirements.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ScopeSelector}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ScopeSelector)
        io.kubernetes.client.proto.V1.ScopeSelectorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScopeSelector_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScopeSelector_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ScopeSelector.class, io.kubernetes.client.proto.V1.ScopeSelector.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ScopeSelector.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (matchExpressionsBuilder_ == null) {
          matchExpressions_ = java.util.Collections.emptyList();
        } else {
          matchExpressions_ = null;
          matchExpressionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScopeSelector_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScopeSelector getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ScopeSelector.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScopeSelector build() {
        io.kubernetes.client.proto.V1.ScopeSelector result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScopeSelector buildPartial() {
        io.kubernetes.client.proto.V1.ScopeSelector result = new io.kubernetes.client.proto.V1.ScopeSelector(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ScopeSelector result) {
        if (matchExpressionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            matchExpressions_ = java.util.Collections.unmodifiableList(matchExpressions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.matchExpressions_ = matchExpressions_;
        } else {
          result.matchExpressions_ = matchExpressionsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ScopeSelector result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.ScopeSelector) {
          return mergeFrom((io.kubernetes.client.proto.V1.ScopeSelector)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ScopeSelector other) {
        if (other == io.kubernetes.client.proto.V1.ScopeSelector.getDefaultInstance()) return this;
        if (matchExpressionsBuilder_ == null) {
          if (!other.matchExpressions_.isEmpty()) {
            if (matchExpressions_.isEmpty()) {
              matchExpressions_ = other.matchExpressions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMatchExpressionsIsMutable();
              matchExpressions_.addAll(other.matchExpressions_);
            }
            onChanged();
          }
        } else {
          if (!other.matchExpressions_.isEmpty()) {
            if (matchExpressionsBuilder_.isEmpty()) {
              matchExpressionsBuilder_.dispose();
              matchExpressionsBuilder_ = null;
              matchExpressions_ = other.matchExpressions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              matchExpressionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMatchExpressionsFieldBuilder() : null;
            } else {
              matchExpressionsBuilder_.addAllMessages(other.matchExpressions_);
            }
          }
        }
        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.V1.ScopedResourceSelectorRequirement m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.parser(),
                        extensionRegistry);
                if (matchExpressionsBuilder_ == null) {
                  ensureMatchExpressionsIsMutable();
                  matchExpressions_.add(m);
                } else {
                  matchExpressionsBuilder_.addMessage(m);
                }
                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.util.List<io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement> matchExpressions_ =
        java.util.Collections.emptyList();
      private void ensureMatchExpressionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          matchExpressions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement>(matchExpressions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirementOrBuilder> matchExpressionsBuilder_;

      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement> getMatchExpressionsList() {
        if (matchExpressionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(matchExpressions_);
        } else {
          return matchExpressionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public int getMatchExpressionsCount() {
        if (matchExpressionsBuilder_ == null) {
          return matchExpressions_.size();
        } else {
          return matchExpressionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement getMatchExpressions(int index) {
        if (matchExpressionsBuilder_ == null) {
          return matchExpressions_.get(index);
        } else {
          return matchExpressionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder setMatchExpressions(
          int index, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement value) {
        if (matchExpressionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchExpressionsIsMutable();
          matchExpressions_.set(index, value);
          onChanged();
        } else {
          matchExpressionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder setMatchExpressions(
          int index, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder builderForValue) {
        if (matchExpressionsBuilder_ == null) {
          ensureMatchExpressionsIsMutable();
          matchExpressions_.set(index, builderForValue.build());
          onChanged();
        } else {
          matchExpressionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder addMatchExpressions(io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement value) {
        if (matchExpressionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchExpressionsIsMutable();
          matchExpressions_.add(value);
          onChanged();
        } else {
          matchExpressionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder addMatchExpressions(
          int index, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement value) {
        if (matchExpressionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchExpressionsIsMutable();
          matchExpressions_.add(index, value);
          onChanged();
        } else {
          matchExpressionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder addMatchExpressions(
          io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder builderForValue) {
        if (matchExpressionsBuilder_ == null) {
          ensureMatchExpressionsIsMutable();
          matchExpressions_.add(builderForValue.build());
          onChanged();
        } else {
          matchExpressionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder addMatchExpressions(
          int index, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder builderForValue) {
        if (matchExpressionsBuilder_ == null) {
          ensureMatchExpressionsIsMutable();
          matchExpressions_.add(index, builderForValue.build());
          onChanged();
        } else {
          matchExpressionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder addAllMatchExpressions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement> values) {
        if (matchExpressionsBuilder_ == null) {
          ensureMatchExpressionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, matchExpressions_);
          onChanged();
        } else {
          matchExpressionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder clearMatchExpressions() {
        if (matchExpressionsBuilder_ == null) {
          matchExpressions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          matchExpressionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public Builder removeMatchExpressions(int index) {
        if (matchExpressionsBuilder_ == null) {
          ensureMatchExpressionsIsMutable();
          matchExpressions_.remove(index);
          onChanged();
        } else {
          matchExpressionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder getMatchExpressionsBuilder(
          int index) {
        return getMatchExpressionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirementOrBuilder getMatchExpressionsOrBuilder(
          int index) {
        if (matchExpressionsBuilder_ == null) {
          return matchExpressions_.get(index);  } else {
          return matchExpressionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirementOrBuilder> 
           getMatchExpressionsOrBuilderList() {
        if (matchExpressionsBuilder_ != null) {
          return matchExpressionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(matchExpressions_);
        }
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder addMatchExpressionsBuilder() {
        return getMatchExpressionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder addMatchExpressionsBuilder(
          int index) {
        return getMatchExpressionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of scope selector requirements by scope of the resources.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ScopedResourceSelectorRequirement matchExpressions = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder> 
           getMatchExpressionsBuilderList() {
        return getMatchExpressionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirementOrBuilder> 
          getMatchExpressionsFieldBuilder() {
        if (matchExpressionsBuilder_ == null) {
          matchExpressionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirementOrBuilder>(
                  matchExpressions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          matchExpressions_ = null;
        }
        return matchExpressionsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ScopeSelector)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ScopeSelector)
    private static final io.kubernetes.client.proto.V1.ScopeSelector DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ScopeSelector();
    }

    public static io.kubernetes.client.proto.V1.ScopeSelector getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ScopeSelector>
        PARSER = new com.google.protobuf.AbstractParser<ScopeSelector>() {
      @java.lang.Override
      public ScopeSelector 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<ScopeSelector> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ScopeSelector> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScopeSelector getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ScopedResourceSelectorRequirementOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ScopedResourceSelectorRequirement)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The name of the scope that the selector applies to.
     * </pre>
     *
     * <code>optional string scopeName = 1;</code>
     * @return Whether the scopeName field is set.
     */
    boolean hasScopeName();
    /**
     * <pre>
     * The name of the scope that the selector applies to.
     * </pre>
     *
     * <code>optional string scopeName = 1;</code>
     * @return The scopeName.
     */
    java.lang.String getScopeName();
    /**
     * <pre>
     * The name of the scope that the selector applies to.
     * </pre>
     *
     * <code>optional string scopeName = 1;</code>
     * @return The bytes for scopeName.
     */
    com.google.protobuf.ByteString
        getScopeNameBytes();

    /**
     * <pre>
     * Represents a scope's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return Whether the operator field is set.
     */
    boolean hasOperator();
    /**
     * <pre>
     * Represents a scope's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The operator.
     */
    java.lang.String getOperator();
    /**
     * <pre>
     * Represents a scope's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The bytes for operator.
     */
    com.google.protobuf.ByteString
        getOperatorBytes();

    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @return A list containing the values.
     */
    java.util.List<java.lang.String>
        getValuesList();
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @return The count of values.
     */
    int getValuesCount();
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    java.lang.String getValues(int index);
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the values at the given index.
     */
    com.google.protobuf.ByteString
        getValuesBytes(int index);
  }
  /**
   * <pre>
   * A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator
   * that relates the scope name and values.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ScopedResourceSelectorRequirement}
   */
  public static final class ScopedResourceSelectorRequirement extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ScopedResourceSelectorRequirement)
      ScopedResourceSelectorRequirementOrBuilder {
  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= */ "",
        ScopedResourceSelectorRequirement.class.getName());
    }
    // Use ScopedResourceSelectorRequirement.newBuilder() to construct.
    private ScopedResourceSelectorRequirement(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ScopedResourceSelectorRequirement() {
      scopeName_ = "";
      operator_ = "";
      values_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScopedResourceSelectorRequirement_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScopedResourceSelectorRequirement_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.class, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder.class);
    }

    private int bitField0_;
    public static final int SCOPENAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object scopeName_ = "";
    /**
     * <pre>
     * The name of the scope that the selector applies to.
     * </pre>
     *
     * <code>optional string scopeName = 1;</code>
     * @return Whether the scopeName field is set.
     */
    @java.lang.Override
    public boolean hasScopeName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The name of the scope that the selector applies to.
     * </pre>
     *
     * <code>optional string scopeName = 1;</code>
     * @return The scopeName.
     */
    @java.lang.Override
    public java.lang.String getScopeName() {
      java.lang.Object ref = scopeName_;
      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()) {
          scopeName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The name of the scope that the selector applies to.
     * </pre>
     *
     * <code>optional string scopeName = 1;</code>
     * @return The bytes for scopeName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getScopeNameBytes() {
      java.lang.Object ref = scopeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        scopeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPERATOR_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object operator_ = "";
    /**
     * <pre>
     * Represents a scope's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return Whether the operator field is set.
     */
    @java.lang.Override
    public boolean hasOperator() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Represents a scope's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The operator.
     */
    @java.lang.Override
    public java.lang.String getOperator() {
      java.lang.Object ref = operator_;
      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()) {
          operator_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Represents a scope's relationship to a set of values.
     * Valid operators are In, NotIn, Exists, DoesNotExist.
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The bytes for operator.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOperatorBytes() {
      java.lang.Object ref = operator_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        operator_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUES_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList values_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @return A list containing the values.
     */
    public com.google.protobuf.ProtocolStringList
        getValuesList() {
      return values_;
    }
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @return The count of values.
     */
    public int getValuesCount() {
      return values_.size();
    }
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    public java.lang.String getValues(int index) {
      return values_.get(index);
    }
    /**
     * <pre>
     * An array of string values. If the operator is In or NotIn,
     * the values array must be non-empty. If the operator is Exists or DoesNotExist,
     * the values array must be empty.
     * This array is replaced during a strategic merge patch.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the values at the given index.
     */
    public com.google.protobuf.ByteString
        getValuesBytes(int index) {
      return values_.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, scopeName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, operator_);
      }
      for (int i = 0; i < values_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, values_.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, scopeName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, operator_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < values_.size(); i++) {
          dataSize += computeStringSizeNoTag(values_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getValuesList().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.V1.ScopedResourceSelectorRequirement)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement other = (io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement) obj;

      if (hasScopeName() != other.hasScopeName()) return false;
      if (hasScopeName()) {
        if (!getScopeName()
            .equals(other.getScopeName())) return false;
      }
      if (hasOperator() != other.hasOperator()) return false;
      if (hasOperator()) {
        if (!getOperator()
            .equals(other.getOperator())) return false;
      }
      if (!getValuesList()
          .equals(other.getValuesList())) 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 (hasScopeName()) {
        hash = (37 * hash) + SCOPENAME_FIELD_NUMBER;
        hash = (53 * hash) + getScopeName().hashCode();
      }
      if (hasOperator()) {
        hash = (37 * hash) + OPERATOR_FIELD_NUMBER;
        hash = (53 * hash) + getOperator().hashCode();
      }
      if (getValuesCount() > 0) {
        hash = (37 * hash) + VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getValuesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement 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.V1.ScopedResourceSelectorRequirement parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement 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.V1.ScopedResourceSelectorRequirement parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement 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.V1.ScopedResourceSelectorRequirement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement 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.V1.ScopedResourceSelectorRequirement parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement 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.V1.ScopedResourceSelectorRequirement 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>
     * A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator
     * that relates the scope name and values.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ScopedResourceSelectorRequirement}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ScopedResourceSelectorRequirement)
        io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirementOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScopedResourceSelectorRequirement_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScopedResourceSelectorRequirement_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.class, io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        scopeName_ = "";
        operator_ = "";
        values_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ScopedResourceSelectorRequirement_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement build() {
        io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement buildPartial() {
        io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement result = new io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.scopeName_ = scopeName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.operator_ = operator_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          values_.makeImmutable();
          result.values_ = values_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement) {
          return mergeFrom((io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement other) {
        if (other == io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement.getDefaultInstance()) return this;
        if (other.hasScopeName()) {
          scopeName_ = other.scopeName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasOperator()) {
          operator_ = other.operator_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.values_.isEmpty()) {
          if (values_.isEmpty()) {
            values_ = other.values_;
            bitField0_ |= 0x00000004;
          } else {
            ensureValuesIsMutable();
            values_.addAll(other.values_);
          }
          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: {
                scopeName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                operator_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureValuesIsMutable();
                values_.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 scopeName_ = "";
      /**
       * <pre>
       * The name of the scope that the selector applies to.
       * </pre>
       *
       * <code>optional string scopeName = 1;</code>
       * @return Whether the scopeName field is set.
       */
      public boolean hasScopeName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The name of the scope that the selector applies to.
       * </pre>
       *
       * <code>optional string scopeName = 1;</code>
       * @return The scopeName.
       */
      public java.lang.String getScopeName() {
        java.lang.Object ref = scopeName_;
        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()) {
            scopeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the scope that the selector applies to.
       * </pre>
       *
       * <code>optional string scopeName = 1;</code>
       * @return The bytes for scopeName.
       */
      public com.google.protobuf.ByteString
          getScopeNameBytes() {
        java.lang.Object ref = scopeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          scopeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the scope that the selector applies to.
       * </pre>
       *
       * <code>optional string scopeName = 1;</code>
       * @param value The scopeName to set.
       * @return This builder for chaining.
       */
      public Builder setScopeName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        scopeName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the scope that the selector applies to.
       * </pre>
       *
       * <code>optional string scopeName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearScopeName() {
        scopeName_ = getDefaultInstance().getScopeName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the scope that the selector applies to.
       * </pre>
       *
       * <code>optional string scopeName = 1;</code>
       * @param value The bytes for scopeName to set.
       * @return This builder for chaining.
       */
      public Builder setScopeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        scopeName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object operator_ = "";
      /**
       * <pre>
       * Represents a scope's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return Whether the operator field is set.
       */
      public boolean hasOperator() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Represents a scope's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return The operator.
       */
      public java.lang.String getOperator() {
        java.lang.Object ref = operator_;
        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()) {
            operator_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Represents a scope's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return The bytes for operator.
       */
      public com.google.protobuf.ByteString
          getOperatorBytes() {
        java.lang.Object ref = operator_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          operator_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Represents a scope's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @param value The operator to set.
       * @return This builder for chaining.
       */
      public Builder setOperator(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        operator_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Represents a scope's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOperator() {
        operator_ = getDefaultInstance().getOperator();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Represents a scope's relationship to a set of values.
       * Valid operators are In, NotIn, Exists, DoesNotExist.
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @param value The bytes for operator to set.
       * @return This builder for chaining.
       */
      public Builder setOperatorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        operator_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList values_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureValuesIsMutable() {
        if (!values_.isModifiable()) {
          values_ = new com.google.protobuf.LazyStringArrayList(values_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @return A list containing the values.
       */
      public com.google.protobuf.ProtocolStringList
          getValuesList() {
        values_.makeImmutable();
        return values_;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @return The count of values.
       */
      public int getValuesCount() {
        return values_.size();
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param index The index of the element to return.
       * @return The values at the given index.
       */
      public java.lang.String getValues(int index) {
        return values_.get(index);
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the values at the given index.
       */
      public com.google.protobuf.ByteString
          getValuesBytes(int index) {
        return values_.getByteString(index);
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param index The index to set the value at.
       * @param value The values to set.
       * @return This builder for chaining.
       */
      public Builder setValues(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValuesIsMutable();
        values_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param value The values to add.
       * @return This builder for chaining.
       */
      public Builder addValues(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValuesIsMutable();
        values_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param values The values to add.
       * @return This builder for chaining.
       */
      public Builder addAllValues(
          java.lang.Iterable<java.lang.String> values) {
        ensureValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, values_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearValues() {
        values_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. If the operator is In or NotIn,
       * the values array must be non-empty. If the operator is Exists or DoesNotExist,
       * the values array must be empty.
       * This array is replaced during a strategic merge patch.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 3;</code>
       * @param value The bytes of the values to add.
       * @return This builder for chaining.
       */
      public Builder addValuesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValuesIsMutable();
        values_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ScopedResourceSelectorRequirement)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ScopedResourceSelectorRequirement)
    private static final io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement();
    }

    public static io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ScopedResourceSelectorRequirement>
        PARSER = new com.google.protobuf.AbstractParser<ScopedResourceSelectorRequirement>() {
      @java.lang.Override
      public ScopedResourceSelectorRequirement 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<ScopedResourceSelectorRequirement> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ScopedResourceSelectorRequirement> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScopedResourceSelectorRequirement getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SeccompProfileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SeccompProfile)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * type indicates which kind of seccomp profile will be applied.
     * Valid options are:
     *
     * Localhost - a profile defined in a file on the node should be used.
     * RuntimeDefault - the container runtime default profile should be used.
     * Unconfined - no profile should be applied.
     * +unionDiscriminator
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * type indicates which kind of seccomp profile will be applied.
     * Valid options are:
     *
     * Localhost - a profile defined in a file on the node should be used.
     * RuntimeDefault - the container runtime default profile should be used.
     * Unconfined - no profile should be applied.
     * +unionDiscriminator
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * type indicates which kind of seccomp profile will be applied.
     * Valid options are:
     *
     * Localhost - a profile defined in a file on the node should be used.
     * RuntimeDefault - the container runtime default profile should be used.
     * Unconfined - no profile should be applied.
     * +unionDiscriminator
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * localhostProfile indicates a profile defined in a file on the node should be used.
     * The profile must be preconfigured on the node to work.
     * Must be a descending path, relative to the kubelet's configured seccomp profile location.
     * Must be set if type is "Localhost". Must NOT be set for any other type.
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return Whether the localhostProfile field is set.
     */
    boolean hasLocalhostProfile();
    /**
     * <pre>
     * localhostProfile indicates a profile defined in a file on the node should be used.
     * The profile must be preconfigured on the node to work.
     * Must be a descending path, relative to the kubelet's configured seccomp profile location.
     * Must be set if type is "Localhost". Must NOT be set for any other type.
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return The localhostProfile.
     */
    java.lang.String getLocalhostProfile();
    /**
     * <pre>
     * localhostProfile indicates a profile defined in a file on the node should be used.
     * The profile must be preconfigured on the node to work.
     * Must be a descending path, relative to the kubelet's configured seccomp profile location.
     * Must be set if type is "Localhost". Must NOT be set for any other type.
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return The bytes for localhostProfile.
     */
    com.google.protobuf.ByteString
        getLocalhostProfileBytes();
  }
  /**
   * <pre>
   * SeccompProfile defines a pod/container's seccomp profile settings.
   * Only one profile source may be set.
   * +union
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SeccompProfile}
   */
  public static final class SeccompProfile extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SeccompProfile)
      SeccompProfileOrBuilder {
  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= */ "",
        SeccompProfile.class.getName());
    }
    // Use SeccompProfile.newBuilder() to construct.
    private SeccompProfile(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SeccompProfile() {
      type_ = "";
      localhostProfile_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SeccompProfile_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SeccompProfile_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SeccompProfile.class, io.kubernetes.client.proto.V1.SeccompProfile.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * type indicates which kind of seccomp profile will be applied.
     * Valid options are:
     *
     * Localhost - a profile defined in a file on the node should be used.
     * RuntimeDefault - the container runtime default profile should be used.
     * Unconfined - no profile should be applied.
     * +unionDiscriminator
     * </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 indicates which kind of seccomp profile will be applied.
     * Valid options are:
     *
     * Localhost - a profile defined in a file on the node should be used.
     * RuntimeDefault - the container runtime default profile should be used.
     * Unconfined - no profile should be applied.
     * +unionDiscriminator
     * </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 indicates which kind of seccomp profile will be applied.
     * Valid options are:
     *
     * Localhost - a profile defined in a file on the node should be used.
     * RuntimeDefault - the container runtime default profile should be used.
     * Unconfined - no profile should be applied.
     * +unionDiscriminator
     * </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 LOCALHOSTPROFILE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object localhostProfile_ = "";
    /**
     * <pre>
     * localhostProfile indicates a profile defined in a file on the node should be used.
     * The profile must be preconfigured on the node to work.
     * Must be a descending path, relative to the kubelet's configured seccomp profile location.
     * Must be set if type is "Localhost". Must NOT be set for any other type.
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return Whether the localhostProfile field is set.
     */
    @java.lang.Override
    public boolean hasLocalhostProfile() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * localhostProfile indicates a profile defined in a file on the node should be used.
     * The profile must be preconfigured on the node to work.
     * Must be a descending path, relative to the kubelet's configured seccomp profile location.
     * Must be set if type is "Localhost". Must NOT be set for any other type.
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return The localhostProfile.
     */
    @java.lang.Override
    public java.lang.String getLocalhostProfile() {
      java.lang.Object ref = localhostProfile_;
      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()) {
          localhostProfile_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * localhostProfile indicates a profile defined in a file on the node should be used.
     * The profile must be preconfigured on the node to work.
     * Must be a descending path, relative to the kubelet's configured seccomp profile location.
     * Must be set if type is "Localhost". Must NOT be set for any other type.
     * +optional
     * </pre>
     *
     * <code>optional string localhostProfile = 2;</code>
     * @return The bytes for localhostProfile.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLocalhostProfileBytes() {
      java.lang.Object ref = localhostProfile_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        localhostProfile_ = 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, localhostProfile_);
      }
      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, localhostProfile_);
      }
      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.V1.SeccompProfile)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SeccompProfile other = (io.kubernetes.client.proto.V1.SeccompProfile) obj;

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasLocalhostProfile() != other.hasLocalhostProfile()) return false;
      if (hasLocalhostProfile()) {
        if (!getLocalhostProfile()
            .equals(other.getLocalhostProfile())) 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 (hasLocalhostProfile()) {
        hash = (37 * hash) + LOCALHOSTPROFILE_FIELD_NUMBER;
        hash = (53 * hash) + getLocalhostProfile().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SeccompProfile parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SeccompProfile 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.V1.SeccompProfile parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SeccompProfile 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.V1.SeccompProfile parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SeccompProfile parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SeccompProfile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SeccompProfile 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.V1.SeccompProfile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SeccompProfile 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.V1.SeccompProfile parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SeccompProfile 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.V1.SeccompProfile 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>
     * SeccompProfile defines a pod/container's seccomp profile settings.
     * Only one profile source may be set.
     * +union
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SeccompProfile}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SeccompProfile)
        io.kubernetes.client.proto.V1.SeccompProfileOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SeccompProfile_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SeccompProfile_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SeccompProfile.class, io.kubernetes.client.proto.V1.SeccompProfile.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SeccompProfile.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = "";
        localhostProfile_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SeccompProfile_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SeccompProfile getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SeccompProfile build() {
        io.kubernetes.client.proto.V1.SeccompProfile result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SeccompProfile buildPartial() {
        io.kubernetes.client.proto.V1.SeccompProfile result = new io.kubernetes.client.proto.V1.SeccompProfile(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.SeccompProfile 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.localhostProfile_ = localhostProfile_;
          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.V1.SeccompProfile) {
          return mergeFrom((io.kubernetes.client.proto.V1.SeccompProfile)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SeccompProfile other) {
        if (other == io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance()) return this;
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasLocalhostProfile()) {
          localhostProfile_ = other.localhostProfile_;
          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: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                localhostProfile_ = 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 type_ = "";
      /**
       * <pre>
       * type indicates which kind of seccomp profile will be applied.
       * Valid options are:
       *
       * Localhost - a profile defined in a file on the node should be used.
       * RuntimeDefault - the container runtime default profile should be used.
       * Unconfined - no profile should be applied.
       * +unionDiscriminator
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * type indicates which kind of seccomp profile will be applied.
       * Valid options are:
       *
       * Localhost - a profile defined in a file on the node should be used.
       * RuntimeDefault - the container runtime default profile should be used.
       * Unconfined - no profile should be applied.
       * +unionDiscriminator
       * </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 indicates which kind of seccomp profile will be applied.
       * Valid options are:
       *
       * Localhost - a profile defined in a file on the node should be used.
       * RuntimeDefault - the container runtime default profile should be used.
       * Unconfined - no profile should be applied.
       * +unionDiscriminator
       * </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 indicates which kind of seccomp profile will be applied.
       * Valid options are:
       *
       * Localhost - a profile defined in a file on the node should be used.
       * RuntimeDefault - the container runtime default profile should be used.
       * Unconfined - no profile should be applied.
       * +unionDiscriminator
       * </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 indicates which kind of seccomp profile will be applied.
       * Valid options are:
       *
       * Localhost - a profile defined in a file on the node should be used.
       * RuntimeDefault - the container runtime default profile should be used.
       * Unconfined - no profile should be applied.
       * +unionDiscriminator
       * </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 indicates which kind of seccomp profile will be applied.
       * Valid options are:
       *
       * Localhost - a profile defined in a file on the node should be used.
       * RuntimeDefault - the container runtime default profile should be used.
       * Unconfined - no profile should be applied.
       * +unionDiscriminator
       * </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 localhostProfile_ = "";
      /**
       * <pre>
       * localhostProfile indicates a profile defined in a file on the node should be used.
       * The profile must be preconfigured on the node to work.
       * Must be a descending path, relative to the kubelet's configured seccomp profile location.
       * Must be set if type is "Localhost". Must NOT be set for any other type.
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @return Whether the localhostProfile field is set.
       */
      public boolean hasLocalhostProfile() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * localhostProfile indicates a profile defined in a file on the node should be used.
       * The profile must be preconfigured on the node to work.
       * Must be a descending path, relative to the kubelet's configured seccomp profile location.
       * Must be set if type is "Localhost". Must NOT be set for any other type.
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @return The localhostProfile.
       */
      public java.lang.String getLocalhostProfile() {
        java.lang.Object ref = localhostProfile_;
        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()) {
            localhostProfile_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * localhostProfile indicates a profile defined in a file on the node should be used.
       * The profile must be preconfigured on the node to work.
       * Must be a descending path, relative to the kubelet's configured seccomp profile location.
       * Must be set if type is "Localhost". Must NOT be set for any other type.
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @return The bytes for localhostProfile.
       */
      public com.google.protobuf.ByteString
          getLocalhostProfileBytes() {
        java.lang.Object ref = localhostProfile_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          localhostProfile_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * localhostProfile indicates a profile defined in a file on the node should be used.
       * The profile must be preconfigured on the node to work.
       * Must be a descending path, relative to the kubelet's configured seccomp profile location.
       * Must be set if type is "Localhost". Must NOT be set for any other type.
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @param value The localhostProfile to set.
       * @return This builder for chaining.
       */
      public Builder setLocalhostProfile(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        localhostProfile_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * localhostProfile indicates a profile defined in a file on the node should be used.
       * The profile must be preconfigured on the node to work.
       * Must be a descending path, relative to the kubelet's configured seccomp profile location.
       * Must be set if type is "Localhost". Must NOT be set for any other type.
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLocalhostProfile() {
        localhostProfile_ = getDefaultInstance().getLocalhostProfile();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * localhostProfile indicates a profile defined in a file on the node should be used.
       * The profile must be preconfigured on the node to work.
       * Must be a descending path, relative to the kubelet's configured seccomp profile location.
       * Must be set if type is "Localhost". Must NOT be set for any other type.
       * +optional
       * </pre>
       *
       * <code>optional string localhostProfile = 2;</code>
       * @param value The bytes for localhostProfile to set.
       * @return This builder for chaining.
       */
      public Builder setLocalhostProfileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        localhostProfile_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SeccompProfile)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SeccompProfile)
    private static final io.kubernetes.client.proto.V1.SeccompProfile DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SeccompProfile();
    }

    public static io.kubernetes.client.proto.V1.SeccompProfile getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SeccompProfile>
        PARSER = new com.google.protobuf.AbstractParser<SeccompProfile>() {
      @java.lang.Override
      public SeccompProfile 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<SeccompProfile> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SeccompProfile> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SeccompProfile getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SecretOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Secret)
      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>
     * Immutable, if set to true, ensures that data stored in the Secret cannot
     * be updated (only object metadata can be modified).
     * If not set to true, the field can be modified at any time.
     * Defaulted to nil.
     * +optional
     * </pre>
     *
     * <code>optional bool immutable = 5;</code>
     * @return Whether the immutable field is set.
     */
    boolean hasImmutable();
    /**
     * <pre>
     * Immutable, if set to true, ensures that data stored in the Secret cannot
     * be updated (only object metadata can be modified).
     * If not set to true, the field can be modified at any time.
     * Defaulted to nil.
     * +optional
     * </pre>
     *
     * <code>optional bool immutable = 5;</code>
     * @return The immutable.
     */
    boolean getImmutable();

    /**
     * <pre>
     * Data contains the secret data. Each key must consist of alphanumeric
     * characters, '-', '_' or '.'. The serialized form of the secret data is a
     * base64 encoded string, representing the arbitrary (possibly non-string)
     * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; data = 2;</code>
     */
    int getDataCount();
    /**
     * <pre>
     * Data contains the secret data. Each key must consist of alphanumeric
     * characters, '-', '_' or '.'. The serialized form of the secret data is a
     * base64 encoded string, representing the arbitrary (possibly non-string)
     * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; data = 2;</code>
     */
    boolean containsData(
        java.lang.String key);
    /**
     * Use {@link #getDataMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.google.protobuf.ByteString>
    getData();
    /**
     * <pre>
     * Data contains the secret data. Each key must consist of alphanumeric
     * characters, '-', '_' or '.'. The serialized form of the secret data is a
     * base64 encoded string, representing the arbitrary (possibly non-string)
     * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; data = 2;</code>
     */
    java.util.Map<java.lang.String, com.google.protobuf.ByteString>
    getDataMap();
    /**
     * <pre>
     * Data contains the secret data. Each key must consist of alphanumeric
     * characters, '-', '_' or '.'. The serialized form of the secret data is a
     * base64 encoded string, representing the arbitrary (possibly non-string)
     * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; data = 2;</code>
     */
    /* nullable */
com.google.protobuf.ByteString getDataOrDefault(
        java.lang.String key,
        /* nullable */
com.google.protobuf.ByteString defaultValue);
    /**
     * <pre>
     * Data contains the secret data. Each key must consist of alphanumeric
     * characters, '-', '_' or '.'. The serialized form of the secret data is a
     * base64 encoded string, representing the arbitrary (possibly non-string)
     * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; data = 2;</code>
     */
    com.google.protobuf.ByteString getDataOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * stringData allows specifying non-binary secret data in string form.
     * It is provided as a write-only input field for convenience.
     * All keys and values are merged into the data field on write, overwriting any existing values.
     * The stringData field is never output when reading from the API.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; stringData = 4;</code>
     */
    int getStringDataCount();
    /**
     * <pre>
     * stringData allows specifying non-binary secret data in string form.
     * It is provided as a write-only input field for convenience.
     * All keys and values are merged into the data field on write, overwriting any existing values.
     * The stringData field is never output when reading from the API.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; stringData = 4;</code>
     */
    boolean containsStringData(
        java.lang.String key);
    /**
     * Use {@link #getStringDataMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getStringData();
    /**
     * <pre>
     * stringData allows specifying non-binary secret data in string form.
     * It is provided as a write-only input field for convenience.
     * All keys and values are merged into the data field on write, overwriting any existing values.
     * The stringData field is never output when reading from the API.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; stringData = 4;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getStringDataMap();
    /**
     * <pre>
     * stringData allows specifying non-binary secret data in string form.
     * It is provided as a write-only input field for convenience.
     * All keys and values are merged into the data field on write, overwriting any existing values.
     * The stringData field is never output when reading from the API.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; stringData = 4;</code>
     */
    /* nullable */
java.lang.String getStringDataOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * stringData allows specifying non-binary secret data in string form.
     * It is provided as a write-only input field for convenience.
     * All keys and values are merged into the data field on write, overwriting any existing values.
     * The stringData field is never output when reading from the API.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; stringData = 4;</code>
     */
    java.lang.String getStringDataOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Used to facilitate programmatic handling of secret data.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * Used to facilitate programmatic handling of secret data.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * Used to facilitate programmatic handling of secret data.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();
  }
  /**
   * <pre>
   * Secret holds secret data of a certain type. The total bytes of the values in
   * the Data field must be less than MaxSecretSize bytes.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Secret}
   */
  public static final class Secret extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Secret)
      SecretOrBuilder {
  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= */ "",
        Secret.class.getName());
    }
    // Use Secret.newBuilder() to construct.
    private Secret(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Secret() {
      type_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Secret_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 2:
          return internalGetData();
        case 4:
          return internalGetStringData();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Secret_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Secret.class, io.kubernetes.client.proto.V1.Secret.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 IMMUTABLE_FIELD_NUMBER = 5;
    private boolean immutable_ = false;
    /**
     * <pre>
     * Immutable, if set to true, ensures that data stored in the Secret cannot
     * be updated (only object metadata can be modified).
     * If not set to true, the field can be modified at any time.
     * Defaulted to nil.
     * +optional
     * </pre>
     *
     * <code>optional bool immutable = 5;</code>
     * @return Whether the immutable field is set.
     */
    @java.lang.Override
    public boolean hasImmutable() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Immutable, if set to true, ensures that data stored in the Secret cannot
     * be updated (only object metadata can be modified).
     * If not set to true, the field can be modified at any time.
     * Defaulted to nil.
     * +optional
     * </pre>
     *
     * <code>optional bool immutable = 5;</code>
     * @return The immutable.
     */
    @java.lang.Override
    public boolean getImmutable() {
      return immutable_;
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private static final class DataDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, com.google.protobuf.ByteString> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, com.google.protobuf.ByteString>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Secret_DataEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.BYTES,
                  com.google.protobuf.ByteString.EMPTY);
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, com.google.protobuf.ByteString> data_;
    private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
    internalGetData() {
      if (data_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            DataDefaultEntryHolder.defaultEntry);
      }
      return data_;
    }
    public int getDataCount() {
      return internalGetData().getMap().size();
    }
    /**
     * <pre>
     * Data contains the secret data. Each key must consist of alphanumeric
     * characters, '-', '_' or '.'. The serialized form of the secret data is a
     * base64 encoded string, representing the arbitrary (possibly non-string)
     * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; data = 2;</code>
     */
    @java.lang.Override
    public boolean containsData(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetData().getMap().containsKey(key);
    }
    /**
     * Use {@link #getDataMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getData() {
      return getDataMap();
    }
    /**
     * <pre>
     * Data contains the secret data. Each key must consist of alphanumeric
     * characters, '-', '_' or '.'. The serialized form of the secret data is a
     * base64 encoded string, representing the arbitrary (possibly non-string)
     * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; data = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getDataMap() {
      return internalGetData().getMap();
    }
    /**
     * <pre>
     * Data contains the secret data. Each key must consist of alphanumeric
     * characters, '-', '_' or '.'. The serialized form of the secret data is a
     * base64 encoded string, representing the arbitrary (possibly non-string)
     * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; data = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
com.google.protobuf.ByteString getDataOrDefault(
        java.lang.String key,
        /* nullable */
com.google.protobuf.ByteString defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
          internalGetData().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Data contains the secret data. Each key must consist of alphanumeric
     * characters, '-', '_' or '.'. The serialized form of the secret data is a
     * base64 encoded string, representing the arbitrary (possibly non-string)
     * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
     * +optional
     * </pre>
     *
     * <code>map&lt;string, bytes&gt; data = 2;</code>
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getDataOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
          internalGetData().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int STRINGDATA_FIELD_NUMBER = 4;
    private static final class StringDataDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Secret_StringDataEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> stringData_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetStringData() {
      if (stringData_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            StringDataDefaultEntryHolder.defaultEntry);
      }
      return stringData_;
    }
    public int getStringDataCount() {
      return internalGetStringData().getMap().size();
    }
    /**
     * <pre>
     * stringData allows specifying non-binary secret data in string form.
     * It is provided as a write-only input field for convenience.
     * All keys and values are merged into the data field on write, overwriting any existing values.
     * The stringData field is never output when reading from the API.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; stringData = 4;</code>
     */
    @java.lang.Override
    public boolean containsStringData(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetStringData().getMap().containsKey(key);
    }
    /**
     * Use {@link #getStringDataMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getStringData() {
      return getStringDataMap();
    }
    /**
     * <pre>
     * stringData allows specifying non-binary secret data in string form.
     * It is provided as a write-only input field for convenience.
     * All keys and values are merged into the data field on write, overwriting any existing values.
     * The stringData field is never output when reading from the API.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; stringData = 4;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getStringDataMap() {
      return internalGetStringData().getMap();
    }
    /**
     * <pre>
     * stringData allows specifying non-binary secret data in string form.
     * It is provided as a write-only input field for convenience.
     * All keys and values are merged into the data field on write, overwriting any existing values.
     * The stringData field is never output when reading from the API.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; stringData = 4;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getStringDataOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetStringData().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * stringData allows specifying non-binary secret data in string form.
     * It is provided as a write-only input field for convenience.
     * All keys and values are merged into the data field on write, overwriting any existing values.
     * The stringData field is never output when reading from the API.
     * +k8s:conversion-gen=false
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; stringData = 4;</code>
     */
    @java.lang.Override
    public java.lang.String getStringDataOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetStringData().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int TYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * Used to facilitate programmatic handling of secret data.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Used to facilitate programmatic handling of secret data.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</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>
     * Used to facilitate programmatic handling of secret data.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 3;</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;
      }
    }

    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());
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetData(),
          DataDefaultEntryHolder.defaultEntry,
          2);
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, type_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetStringData(),
          StringDataDefaultEntryHolder.defaultEntry,
          4);
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(5, immutable_);
      }
      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 (java.util.Map.Entry<java.lang.String, com.google.protobuf.ByteString> entry
           : internalGetData().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
        data__ = DataDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, data__);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, type_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetStringData().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        stringData__ = StringDataDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, stringData__);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, immutable_);
      }
      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.V1.Secret)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Secret other = (io.kubernetes.client.proto.V1.Secret) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (hasImmutable() != other.hasImmutable()) return false;
      if (hasImmutable()) {
        if (getImmutable()
            != other.getImmutable()) return false;
      }
      if (!internalGetData().equals(
          other.internalGetData())) return false;
      if (!internalGetStringData().equals(
          other.internalGetStringData())) return false;
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) 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 (hasImmutable()) {
        hash = (37 * hash) + IMMUTABLE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getImmutable());
      }
      if (!internalGetData().getMap().isEmpty()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + internalGetData().hashCode();
      }
      if (!internalGetStringData().getMap().isEmpty()) {
        hash = (37 * hash) + STRINGDATA_FIELD_NUMBER;
        hash = (53 * hash) + internalGetStringData().hashCode();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.Secret parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Secret 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.V1.Secret parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Secret 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.V1.Secret parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Secret parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Secret parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Secret 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.V1.Secret parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Secret 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.V1.Secret parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Secret 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.V1.Secret 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>
     * Secret holds secret data of a certain type. The total bytes of the values in
     * the Data field must be less than MaxSecretSize bytes.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Secret}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Secret)
        io.kubernetes.client.proto.V1.SecretOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Secret_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetData();
          case 4:
            return internalGetStringData();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableData();
          case 4:
            return internalGetMutableStringData();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Secret_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Secret.class, io.kubernetes.client.proto.V1.Secret.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Secret.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();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        immutable_ = false;
        internalGetMutableData().clear();
        internalGetMutableStringData().clear();
        type_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Secret_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Secret getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Secret.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Secret build() {
        io.kubernetes.client.proto.V1.Secret result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Secret buildPartial() {
        io.kubernetes.client.proto.V1.Secret result = new io.kubernetes.client.proto.V1.Secret(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Secret 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.immutable_ = immutable_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.data_ = internalGetData();
          result.data_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.stringData_ = internalGetStringData();
          result.stringData_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.type_ = type_;
          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.V1.Secret) {
          return mergeFrom((io.kubernetes.client.proto.V1.Secret)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Secret other) {
        if (other == io.kubernetes.client.proto.V1.Secret.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasImmutable()) {
          setImmutable(other.getImmutable());
        }
        internalGetMutableData().mergeFrom(
            other.internalGetData());
        bitField0_ |= 0x00000004;
        internalGetMutableStringData().mergeFrom(
            other.internalGetStringData());
        bitField0_ |= 0x00000008;
        if (other.hasType()) {
          type_ = other.type_;
          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: {
                input.readMessage(
                    getMetadataFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
                data__ = input.readMessage(
                    DataDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableData().getMutableMap().put(
                    data__.getKey(), data__.getValue());
                bitField0_ |= 0x00000004;
                break;
              } // case 18
              case 26: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 26
              case 34: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                stringData__ = input.readMessage(
                    StringDataDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableStringData().getMutableMap().put(
                    stringData__.getKey(), stringData__.getValue());
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 40: {
                immutable_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 40
              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 boolean immutable_ ;
      /**
       * <pre>
       * Immutable, if set to true, ensures that data stored in the Secret cannot
       * be updated (only object metadata can be modified).
       * If not set to true, the field can be modified at any time.
       * Defaulted to nil.
       * +optional
       * </pre>
       *
       * <code>optional bool immutable = 5;</code>
       * @return Whether the immutable field is set.
       */
      @java.lang.Override
      public boolean hasImmutable() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Immutable, if set to true, ensures that data stored in the Secret cannot
       * be updated (only object metadata can be modified).
       * If not set to true, the field can be modified at any time.
       * Defaulted to nil.
       * +optional
       * </pre>
       *
       * <code>optional bool immutable = 5;</code>
       * @return The immutable.
       */
      @java.lang.Override
      public boolean getImmutable() {
        return immutable_;
      }
      /**
       * <pre>
       * Immutable, if set to true, ensures that data stored in the Secret cannot
       * be updated (only object metadata can be modified).
       * If not set to true, the field can be modified at any time.
       * Defaulted to nil.
       * +optional
       * </pre>
       *
       * <code>optional bool immutable = 5;</code>
       * @param value The immutable to set.
       * @return This builder for chaining.
       */
      public Builder setImmutable(boolean value) {

        immutable_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Immutable, if set to true, ensures that data stored in the Secret cannot
       * be updated (only object metadata can be modified).
       * If not set to true, the field can be modified at any time.
       * Defaulted to nil.
       * +optional
       * </pre>
       *
       * <code>optional bool immutable = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearImmutable() {
        bitField0_ = (bitField0_ & ~0x00000002);
        immutable_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, com.google.protobuf.ByteString> data_;
      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
          internalGetData() {
        if (data_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              DataDefaultEntryHolder.defaultEntry);
        }
        return data_;
      }
      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
          internalGetMutableData() {
        if (data_ == null) {
          data_ = com.google.protobuf.MapField.newMapField(
              DataDefaultEntryHolder.defaultEntry);
        }
        if (!data_.isMutable()) {
          data_ = data_.copy();
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return data_;
      }
      public int getDataCount() {
        return internalGetData().getMap().size();
      }
      /**
       * <pre>
       * Data contains the secret data. Each key must consist of alphanumeric
       * characters, '-', '_' or '.'. The serialized form of the secret data is a
       * base64 encoded string, representing the arbitrary (possibly non-string)
       * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; data = 2;</code>
       */
      @java.lang.Override
      public boolean containsData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetData().getMap().containsKey(key);
      }
      /**
       * Use {@link #getDataMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getData() {
        return getDataMap();
      }
      /**
       * <pre>
       * Data contains the secret data. Each key must consist of alphanumeric
       * characters, '-', '_' or '.'. The serialized form of the secret data is a
       * base64 encoded string, representing the arbitrary (possibly non-string)
       * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; data = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getDataMap() {
        return internalGetData().getMap();
      }
      /**
       * <pre>
       * Data contains the secret data. Each key must consist of alphanumeric
       * characters, '-', '_' or '.'. The serialized form of the secret data is a
       * base64 encoded string, representing the arbitrary (possibly non-string)
       * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; data = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
com.google.protobuf.ByteString getDataOrDefault(
          java.lang.String key,
          /* nullable */
com.google.protobuf.ByteString defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
            internalGetData().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Data contains the secret data. Each key must consist of alphanumeric
       * characters, '-', '_' or '.'. The serialized form of the secret data is a
       * base64 encoded string, representing the arbitrary (possibly non-string)
       * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; data = 2;</code>
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getDataOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
            internalGetData().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000004);
        internalGetMutableData().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Data contains the secret data. Each key must consist of alphanumeric
       * characters, '-', '_' or '.'. The serialized form of the secret data is a
       * base64 encoded string, representing the arbitrary (possibly non-string)
       * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; data = 2;</code>
       */
      public Builder removeData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableData().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString>
          getMutableData() {
        bitField0_ |= 0x00000004;
        return internalGetMutableData().getMutableMap();
      }
      /**
       * <pre>
       * Data contains the secret data. Each key must consist of alphanumeric
       * characters, '-', '_' or '.'. The serialized form of the secret data is a
       * base64 encoded string, representing the arbitrary (possibly non-string)
       * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; data = 2;</code>
       */
      public Builder putData(
          java.lang.String key,
          com.google.protobuf.ByteString value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableData().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Data contains the secret data. Each key must consist of alphanumeric
       * characters, '-', '_' or '.'. The serialized form of the secret data is a
       * base64 encoded string, representing the arbitrary (possibly non-string)
       * data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
       * +optional
       * </pre>
       *
       * <code>map&lt;string, bytes&gt; data = 2;</code>
       */
      public Builder putAllData(
          java.util.Map<java.lang.String, com.google.protobuf.ByteString> values) {
        internalGetMutableData().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000004;
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> stringData_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetStringData() {
        if (stringData_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              StringDataDefaultEntryHolder.defaultEntry);
        }
        return stringData_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableStringData() {
        if (stringData_ == null) {
          stringData_ = com.google.protobuf.MapField.newMapField(
              StringDataDefaultEntryHolder.defaultEntry);
        }
        if (!stringData_.isMutable()) {
          stringData_ = stringData_.copy();
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return stringData_;
      }
      public int getStringDataCount() {
        return internalGetStringData().getMap().size();
      }
      /**
       * <pre>
       * stringData allows specifying non-binary secret data in string form.
       * It is provided as a write-only input field for convenience.
       * All keys and values are merged into the data field on write, overwriting any existing values.
       * The stringData field is never output when reading from the API.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; stringData = 4;</code>
       */
      @java.lang.Override
      public boolean containsStringData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetStringData().getMap().containsKey(key);
      }
      /**
       * Use {@link #getStringDataMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getStringData() {
        return getStringDataMap();
      }
      /**
       * <pre>
       * stringData allows specifying non-binary secret data in string form.
       * It is provided as a write-only input field for convenience.
       * All keys and values are merged into the data field on write, overwriting any existing values.
       * The stringData field is never output when reading from the API.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; stringData = 4;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getStringDataMap() {
        return internalGetStringData().getMap();
      }
      /**
       * <pre>
       * stringData allows specifying non-binary secret data in string form.
       * It is provided as a write-only input field for convenience.
       * All keys and values are merged into the data field on write, overwriting any existing values.
       * The stringData field is never output when reading from the API.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; stringData = 4;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getStringDataOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetStringData().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * stringData allows specifying non-binary secret data in string form.
       * It is provided as a write-only input field for convenience.
       * All keys and values are merged into the data field on write, overwriting any existing values.
       * The stringData field is never output when reading from the API.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; stringData = 4;</code>
       */
      @java.lang.Override
      public java.lang.String getStringDataOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetStringData().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearStringData() {
        bitField0_ = (bitField0_ & ~0x00000008);
        internalGetMutableStringData().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * stringData allows specifying non-binary secret data in string form.
       * It is provided as a write-only input field for convenience.
       * All keys and values are merged into the data field on write, overwriting any existing values.
       * The stringData field is never output when reading from the API.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; stringData = 4;</code>
       */
      public Builder removeStringData(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableStringData().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableStringData() {
        bitField0_ |= 0x00000008;
        return internalGetMutableStringData().getMutableMap();
      }
      /**
       * <pre>
       * stringData allows specifying non-binary secret data in string form.
       * It is provided as a write-only input field for convenience.
       * All keys and values are merged into the data field on write, overwriting any existing values.
       * The stringData field is never output when reading from the API.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; stringData = 4;</code>
       */
      public Builder putStringData(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableStringData().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * stringData allows specifying non-binary secret data in string form.
       * It is provided as a write-only input field for convenience.
       * All keys and values are merged into the data field on write, overwriting any existing values.
       * The stringData field is never output when reading from the API.
       * +k8s:conversion-gen=false
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; stringData = 4;</code>
       */
      public Builder putAllStringData(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableStringData().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000008;
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <pre>
       * Used to facilitate programmatic handling of secret data.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Used to facilitate programmatic handling of secret data.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</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>
       * Used to facilitate programmatic handling of secret data.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</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>
       * Used to facilitate programmatic handling of secret data.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</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;
      }
      /**
       * <pre>
       * Used to facilitate programmatic handling of secret data.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Used to facilitate programmatic handling of secret data.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 3;</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;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Secret)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Secret)
    private static final io.kubernetes.client.proto.V1.Secret DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Secret();
    }

    public static io.kubernetes.client.proto.V1.Secret getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Secret>
        PARSER = new com.google.protobuf.AbstractParser<Secret>() {
      @java.lang.Override
      public Secret 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<Secret> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Secret> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Secret getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SecretEnvSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SecretEnvSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The Secret to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    boolean hasLocalObjectReference();
    /**
     * <pre>
     * The Secret to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference();
    /**
     * <pre>
     * The Secret to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder();

    /**
     * <pre>
     * Specify whether the Secret must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 2;</code>
     * @return Whether the optional field is set.
     */
    boolean hasOptional();
    /**
     * <pre>
     * Specify whether the Secret must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 2;</code>
     * @return The optional.
     */
    boolean getOptional();
  }
  /**
   * <pre>
   * SecretEnvSource selects a Secret to populate the environment
   * variables with.
   *
   * The contents of the target Secret's Data field will represent the
   * key-value pairs as environment variables.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SecretEnvSource}
   */
  public static final class SecretEnvSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SecretEnvSource)
      SecretEnvSourceOrBuilder {
  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= */ "",
        SecretEnvSource.class.getName());
    }
    // Use SecretEnvSource.newBuilder() to construct.
    private SecretEnvSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SecretEnvSource() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretEnvSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretEnvSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SecretEnvSource.class, io.kubernetes.client.proto.V1.SecretEnvSource.Builder.class);
    }

    private int bitField0_;
    public static final int LOCALOBJECTREFERENCE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
    /**
     * <pre>
     * The Secret to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    @java.lang.Override
    public boolean hasLocalObjectReference() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The Secret to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }
    /**
     * <pre>
     * The Secret to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }

    public static final int OPTIONAL_FIELD_NUMBER = 2;
    private boolean optional_ = false;
    /**
     * <pre>
     * Specify whether the Secret must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 2;</code>
     * @return Whether the optional field is set.
     */
    @java.lang.Override
    public boolean hasOptional() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Specify whether the Secret must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 2;</code>
     * @return The optional.
     */
    @java.lang.Override
    public boolean getOptional() {
      return optional_;
    }

    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, getLocalObjectReference());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, optional_);
      }
      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, getLocalObjectReference());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, optional_);
      }
      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.V1.SecretEnvSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SecretEnvSource other = (io.kubernetes.client.proto.V1.SecretEnvSource) obj;

      if (hasLocalObjectReference() != other.hasLocalObjectReference()) return false;
      if (hasLocalObjectReference()) {
        if (!getLocalObjectReference()
            .equals(other.getLocalObjectReference())) return false;
      }
      if (hasOptional() != other.hasOptional()) return false;
      if (hasOptional()) {
        if (getOptional()
            != other.getOptional()) 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 (hasLocalObjectReference()) {
        hash = (37 * hash) + LOCALOBJECTREFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getLocalObjectReference().hashCode();
      }
      if (hasOptional()) {
        hash = (37 * hash) + OPTIONAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptional());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SecretEnvSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretEnvSource 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.V1.SecretEnvSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretEnvSource 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.V1.SecretEnvSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretEnvSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SecretEnvSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretEnvSource 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.V1.SecretEnvSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SecretEnvSource 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.V1.SecretEnvSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretEnvSource 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.V1.SecretEnvSource 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>
     * SecretEnvSource selects a Secret to populate the environment
     * variables with.
     *
     * The contents of the target Secret's Data field will represent the
     * key-value pairs as environment variables.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SecretEnvSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SecretEnvSource)
        io.kubernetes.client.proto.V1.SecretEnvSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretEnvSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretEnvSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SecretEnvSource.class, io.kubernetes.client.proto.V1.SecretEnvSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SecretEnvSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLocalObjectReferenceFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        optional_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretEnvSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretEnvSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SecretEnvSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretEnvSource build() {
        io.kubernetes.client.proto.V1.SecretEnvSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretEnvSource buildPartial() {
        io.kubernetes.client.proto.V1.SecretEnvSource result = new io.kubernetes.client.proto.V1.SecretEnvSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.SecretEnvSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.localObjectReference_ = localObjectReferenceBuilder_ == null
              ? localObjectReference_
              : localObjectReferenceBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.optional_ = optional_;
          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.V1.SecretEnvSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.SecretEnvSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SecretEnvSource other) {
        if (other == io.kubernetes.client.proto.V1.SecretEnvSource.getDefaultInstance()) return this;
        if (other.hasLocalObjectReference()) {
          mergeLocalObjectReference(other.getLocalObjectReference());
        }
        if (other.hasOptional()) {
          setOptional(other.getOptional());
        }
        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(
                    getLocalObjectReferenceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                optional_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              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.V1.LocalObjectReference localObjectReference_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> localObjectReferenceBuilder_;
      /**
       * <pre>
       * The Secret to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return Whether the localObjectReference field is set.
       */
      public boolean hasLocalObjectReference() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The Secret to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return The localObjectReference.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
        if (localObjectReferenceBuilder_ == null) {
          return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        } else {
          return localObjectReferenceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The Secret to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          localObjectReference_ = value;
        } else {
          localObjectReferenceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Secret to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReference_ = builderForValue.build();
        } else {
          localObjectReferenceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Secret to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder mergeLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            localObjectReference_ != null &&
            localObjectReference_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getLocalObjectReferenceBuilder().mergeFrom(value);
          } else {
            localObjectReference_ = value;
          }
        } else {
          localObjectReferenceBuilder_.mergeFrom(value);
        }
        if (localObjectReference_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The Secret to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder clearLocalObjectReference() {
        bitField0_ = (bitField0_ & ~0x00000001);
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Secret to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getLocalObjectReferenceBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLocalObjectReferenceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The Secret to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
        if (localObjectReferenceBuilder_ != null) {
          return localObjectReferenceBuilder_.getMessageOrBuilder();
        } else {
          return localObjectReference_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        }
      }
      /**
       * <pre>
       * The Secret to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getLocalObjectReferenceFieldBuilder() {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReferenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getLocalObjectReference(),
                  getParentForChildren(),
                  isClean());
          localObjectReference_ = null;
        }
        return localObjectReferenceBuilder_;
      }

      private boolean optional_ ;
      /**
       * <pre>
       * Specify whether the Secret must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 2;</code>
       * @return Whether the optional field is set.
       */
      @java.lang.Override
      public boolean hasOptional() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Specify whether the Secret must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 2;</code>
       * @return The optional.
       */
      @java.lang.Override
      public boolean getOptional() {
        return optional_;
      }
      /**
       * <pre>
       * Specify whether the Secret must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 2;</code>
       * @param value The optional to set.
       * @return This builder for chaining.
       */
      public Builder setOptional(boolean value) {

        optional_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify whether the Secret must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptional() {
        bitField0_ = (bitField0_ & ~0x00000002);
        optional_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SecretEnvSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SecretEnvSource)
    private static final io.kubernetes.client.proto.V1.SecretEnvSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SecretEnvSource();
    }

    public static io.kubernetes.client.proto.V1.SecretEnvSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SecretEnvSource>
        PARSER = new com.google.protobuf.AbstractParser<SecretEnvSource>() {
      @java.lang.Override
      public SecretEnvSource 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<SecretEnvSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SecretEnvSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretEnvSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SecretKeySelectorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SecretKeySelector)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The name of the secret in the pod's namespace to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    boolean hasLocalObjectReference();
    /**
     * <pre>
     * The name of the secret in the pod's namespace to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference();
    /**
     * <pre>
     * The name of the secret in the pod's namespace to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder();

    /**
     * <pre>
     * The key of the secret to select from.  Must be a valid secret key.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <pre>
     * The key of the secret to select from.  Must be a valid secret key.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <pre>
     * The key of the secret to select from.  Must be a valid secret key.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * Specify whether the Secret or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 3;</code>
     * @return Whether the optional field is set.
     */
    boolean hasOptional();
    /**
     * <pre>
     * Specify whether the Secret or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 3;</code>
     * @return The optional.
     */
    boolean getOptional();
  }
  /**
   * <pre>
   * SecretKeySelector selects a key of a Secret.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SecretKeySelector}
   */
  public static final class SecretKeySelector extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SecretKeySelector)
      SecretKeySelectorOrBuilder {
  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= */ "",
        SecretKeySelector.class.getName());
    }
    // Use SecretKeySelector.newBuilder() to construct.
    private SecretKeySelector(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SecretKeySelector() {
      key_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretKeySelector_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretKeySelector_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SecretKeySelector.class, io.kubernetes.client.proto.V1.SecretKeySelector.Builder.class);
    }

    private int bitField0_;
    public static final int LOCALOBJECTREFERENCE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
    /**
     * <pre>
     * The name of the secret in the pod's namespace to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    @java.lang.Override
    public boolean hasLocalObjectReference() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The name of the secret in the pod's namespace to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }
    /**
     * <pre>
     * The name of the secret in the pod's namespace to select from.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }

    public static final int KEY_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object key_ = "";
    /**
     * <pre>
     * The key of the secret to select from.  Must be a valid secret key.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The key of the secret to select from.  Must be a valid secret key.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The key of the secret to select from.  Must be a valid secret key.
     * </pre>
     *
     * <code>optional string key = 2;</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPTIONAL_FIELD_NUMBER = 3;
    private boolean optional_ = false;
    /**
     * <pre>
     * Specify whether the Secret or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 3;</code>
     * @return Whether the optional field is set.
     */
    @java.lang.Override
    public boolean hasOptional() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Specify whether the Secret or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 3;</code>
     * @return The optional.
     */
    @java.lang.Override
    public boolean getOptional() {
      return optional_;
    }

    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, getLocalObjectReference());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, key_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, optional_);
      }
      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, getLocalObjectReference());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, key_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, optional_);
      }
      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.V1.SecretKeySelector)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SecretKeySelector other = (io.kubernetes.client.proto.V1.SecretKeySelector) obj;

      if (hasLocalObjectReference() != other.hasLocalObjectReference()) return false;
      if (hasLocalObjectReference()) {
        if (!getLocalObjectReference()
            .equals(other.getLocalObjectReference())) return false;
      }
      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasOptional() != other.hasOptional()) return false;
      if (hasOptional()) {
        if (getOptional()
            != other.getOptional()) 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 (hasLocalObjectReference()) {
        hash = (37 * hash) + LOCALOBJECTREFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getLocalObjectReference().hashCode();
      }
      if (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasOptional()) {
        hash = (37 * hash) + OPTIONAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptional());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SecretKeySelector parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretKeySelector 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.V1.SecretKeySelector parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretKeySelector 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.V1.SecretKeySelector parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretKeySelector parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SecretKeySelector parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretKeySelector 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.V1.SecretKeySelector parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SecretKeySelector 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.V1.SecretKeySelector parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretKeySelector 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.V1.SecretKeySelector 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>
     * SecretKeySelector selects a key of a Secret.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SecretKeySelector}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SecretKeySelector)
        io.kubernetes.client.proto.V1.SecretKeySelectorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretKeySelector_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretKeySelector_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SecretKeySelector.class, io.kubernetes.client.proto.V1.SecretKeySelector.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SecretKeySelector.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLocalObjectReferenceFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        key_ = "";
        optional_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretKeySelector_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretKeySelector getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SecretKeySelector.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretKeySelector build() {
        io.kubernetes.client.proto.V1.SecretKeySelector result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretKeySelector buildPartial() {
        io.kubernetes.client.proto.V1.SecretKeySelector result = new io.kubernetes.client.proto.V1.SecretKeySelector(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.SecretKeySelector result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.localObjectReference_ = localObjectReferenceBuilder_ == null
              ? localObjectReference_
              : localObjectReferenceBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.key_ = key_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.optional_ = optional_;
          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.V1.SecretKeySelector) {
          return mergeFrom((io.kubernetes.client.proto.V1.SecretKeySelector)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SecretKeySelector other) {
        if (other == io.kubernetes.client.proto.V1.SecretKeySelector.getDefaultInstance()) return this;
        if (other.hasLocalObjectReference()) {
          mergeLocalObjectReference(other.getLocalObjectReference());
        }
        if (other.hasKey()) {
          key_ = other.key_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasOptional()) {
          setOptional(other.getOptional());
        }
        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(
                    getLocalObjectReferenceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                key_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                optional_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> localObjectReferenceBuilder_;
      /**
       * <pre>
       * The name of the secret in the pod's namespace to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return Whether the localObjectReference field is set.
       */
      public boolean hasLocalObjectReference() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The name of the secret in the pod's namespace to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return The localObjectReference.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
        if (localObjectReferenceBuilder_ == null) {
          return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        } else {
          return localObjectReferenceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The name of the secret in the pod's namespace to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          localObjectReference_ = value;
        } else {
          localObjectReferenceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the secret in the pod's namespace to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReference_ = builderForValue.build();
        } else {
          localObjectReferenceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the secret in the pod's namespace to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder mergeLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            localObjectReference_ != null &&
            localObjectReference_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getLocalObjectReferenceBuilder().mergeFrom(value);
          } else {
            localObjectReference_ = value;
          }
        } else {
          localObjectReferenceBuilder_.mergeFrom(value);
        }
        if (localObjectReference_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The name of the secret in the pod's namespace to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder clearLocalObjectReference() {
        bitField0_ = (bitField0_ & ~0x00000001);
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the secret in the pod's namespace to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getLocalObjectReferenceBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLocalObjectReferenceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The name of the secret in the pod's namespace to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
        if (localObjectReferenceBuilder_ != null) {
          return localObjectReferenceBuilder_.getMessageOrBuilder();
        } else {
          return localObjectReference_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        }
      }
      /**
       * <pre>
       * The name of the secret in the pod's namespace to select from.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getLocalObjectReferenceFieldBuilder() {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReferenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getLocalObjectReference(),
                  getParentForChildren(),
                  isClean());
          localObjectReference_ = null;
        }
        return localObjectReferenceBuilder_;
      }

      private java.lang.Object key_ = "";
      /**
       * <pre>
       * The key of the secret to select from.  Must be a valid secret key.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The key of the secret to select from.  Must be a valid secret key.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The key of the secret to select from.  Must be a valid secret key.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The key of the secret to select from.  Must be a valid secret key.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The key of the secret to select from.  Must be a valid secret key.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = getDefaultInstance().getKey();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The key of the secret to select from.  Must be a valid secret key.
       * </pre>
       *
       * <code>optional string key = 2;</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean optional_ ;
      /**
       * <pre>
       * Specify whether the Secret or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 3;</code>
       * @return Whether the optional field is set.
       */
      @java.lang.Override
      public boolean hasOptional() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Specify whether the Secret or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 3;</code>
       * @return The optional.
       */
      @java.lang.Override
      public boolean getOptional() {
        return optional_;
      }
      /**
       * <pre>
       * Specify whether the Secret or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 3;</code>
       * @param value The optional to set.
       * @return This builder for chaining.
       */
      public Builder setOptional(boolean value) {

        optional_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify whether the Secret or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptional() {
        bitField0_ = (bitField0_ & ~0x00000004);
        optional_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SecretKeySelector)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SecretKeySelector)
    private static final io.kubernetes.client.proto.V1.SecretKeySelector DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SecretKeySelector();
    }

    public static io.kubernetes.client.proto.V1.SecretKeySelector getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SecretKeySelector>
        PARSER = new com.google.protobuf.AbstractParser<SecretKeySelector>() {
      @java.lang.Override
      public SecretKeySelector 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<SecretKeySelector> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SecretKeySelector> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretKeySelector getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SecretListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SecretList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Items is a list of secret objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Secret> 
        getItemsList();
    /**
     * <pre>
     * Items is a list of secret objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
     */
    io.kubernetes.client.proto.V1.Secret getItems(int index);
    /**
     * <pre>
     * Items is a list of secret objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is a list of secret objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.SecretOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is a list of secret objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
     */
    io.kubernetes.client.proto.V1.SecretOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * SecretList is a list of Secret.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SecretList}
   */
  public static final class SecretList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SecretList)
      SecretListOrBuilder {
  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= */ "",
        SecretList.class.getName());
    }
    // Use SecretList.newBuilder() to construct.
    private SecretList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SecretList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SecretList.class, io.kubernetes.client.proto.V1.SecretList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.Secret> items_;
    /**
     * <pre>
     * Items is a list of secret objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Secret> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of secret objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.SecretOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of secret objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is a list of secret objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Secret getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is a list of secret objects.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretOrBuilder 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.V1.SecretList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SecretList other = (io.kubernetes.client.proto.V1.SecretList) 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.V1.SecretList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretList 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.V1.SecretList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretList 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.V1.SecretList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SecretList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretList 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.V1.SecretList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SecretList 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.V1.SecretList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretList 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.V1.SecretList 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>
     * SecretList is a list of Secret.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SecretList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SecretList)
        io.kubernetes.client.proto.V1.SecretListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SecretList.class, io.kubernetes.client.proto.V1.SecretList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SecretList.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.V1.internal_static_k8s_io_api_core_v1_SecretList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SecretList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretList build() {
        io.kubernetes.client.proto.V1.SecretList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretList buildPartial() {
        io.kubernetes.client.proto.V1.SecretList result = new io.kubernetes.client.proto.V1.SecretList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.SecretList 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.V1.SecretList 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.V1.SecretList) {
          return mergeFrom((io.kubernetes.client.proto.V1.SecretList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SecretList other) {
        if (other == io.kubernetes.client.proto.V1.SecretList.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.V1.Secret m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Secret.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.Secret> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Secret>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Secret, io.kubernetes.client.proto.V1.Secret.Builder, io.kubernetes.client.proto.V1.SecretOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Secret> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Secret getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.Secret value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.Secret.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.Secret value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.Secret value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.Secret.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.Secret.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Secret> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Secret.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.SecretOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.SecretOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Secret.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Secret.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Secret.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Secret.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of secret objects.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Secret items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Secret.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Secret, io.kubernetes.client.proto.V1.Secret.Builder, io.kubernetes.client.proto.V1.SecretOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Secret, io.kubernetes.client.proto.V1.Secret.Builder, io.kubernetes.client.proto.V1.SecretOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SecretList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SecretList)
    private static final io.kubernetes.client.proto.V1.SecretList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SecretList();
    }

    public static io.kubernetes.client.proto.V1.SecretList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SecretList>
        PARSER = new com.google.protobuf.AbstractParser<SecretList>() {
      @java.lang.Override
      public SecretList 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<SecretList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SecretList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SecretProjectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SecretProjection)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    boolean hasLocalObjectReference();
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference();
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder();

    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.KeyToPath> 
        getItemsList();
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    io.kubernetes.client.proto.V1.KeyToPath getItems(int index);
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
        int index);

    /**
     * <pre>
     * optional field specify whether the Secret or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return Whether the optional field is set.
     */
    boolean hasOptional();
    /**
     * <pre>
     * optional field specify whether the Secret or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return The optional.
     */
    boolean getOptional();
  }
  /**
   * <pre>
   * Adapts a secret into a projected volume.
   *
   * The contents of the target Secret's Data field will be presented in a
   * projected volume as files using the keys in the Data field as the file names.
   * Note that this is identical to a secret volume source without the default
   * mode.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SecretProjection}
   */
  public static final class SecretProjection extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SecretProjection)
      SecretProjectionOrBuilder {
  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= */ "",
        SecretProjection.class.getName());
    }
    // Use SecretProjection.newBuilder() to construct.
    private SecretProjection(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SecretProjection() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretProjection_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretProjection_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SecretProjection.class, io.kubernetes.client.proto.V1.SecretProjection.Builder.class);
    }

    private int bitField0_;
    public static final int LOCALOBJECTREFERENCE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return Whether the localObjectReference field is set.
     */
    @java.lang.Override
    public boolean hasLocalObjectReference() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     * @return The localObjectReference.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }
    /**
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
      return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
    }

    public static final int ITEMS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.KeyToPath> items_;
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.KeyToPath> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.KeyToPath getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * items if unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

    public static final int OPTIONAL_FIELD_NUMBER = 4;
    private boolean optional_ = false;
    /**
     * <pre>
     * optional field specify whether the Secret or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return Whether the optional field is set.
     */
    @java.lang.Override
    public boolean hasOptional() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * optional field specify whether the Secret or its key must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return The optional.
     */
    @java.lang.Override
    public boolean getOptional() {
      return optional_;
    }

    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, getLocalObjectReference());
      }
      for (int i = 0; i < items_.size(); i++) {
        output.writeMessage(2, items_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(4, optional_);
      }
      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, getLocalObjectReference());
      }
      for (int i = 0; i < items_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, items_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, optional_);
      }
      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.V1.SecretProjection)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SecretProjection other = (io.kubernetes.client.proto.V1.SecretProjection) obj;

      if (hasLocalObjectReference() != other.hasLocalObjectReference()) return false;
      if (hasLocalObjectReference()) {
        if (!getLocalObjectReference()
            .equals(other.getLocalObjectReference())) return false;
      }
      if (!getItemsList()
          .equals(other.getItemsList())) return false;
      if (hasOptional() != other.hasOptional()) return false;
      if (hasOptional()) {
        if (getOptional()
            != other.getOptional()) 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 (hasLocalObjectReference()) {
        hash = (37 * hash) + LOCALOBJECTREFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getLocalObjectReference().hashCode();
      }
      if (getItemsCount() > 0) {
        hash = (37 * hash) + ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getItemsList().hashCode();
      }
      if (hasOptional()) {
        hash = (37 * hash) + OPTIONAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptional());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SecretProjection parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretProjection 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.V1.SecretProjection parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretProjection 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.V1.SecretProjection parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretProjection parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SecretProjection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretProjection 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.V1.SecretProjection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SecretProjection 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.V1.SecretProjection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretProjection 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.V1.SecretProjection 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>
     * Adapts a secret into a projected volume.
     *
     * The contents of the target Secret's Data field will be presented in a
     * projected volume as files using the keys in the Data field as the file names.
     * Note that this is identical to a secret volume source without the default
     * mode.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SecretProjection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SecretProjection)
        io.kubernetes.client.proto.V1.SecretProjectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretProjection_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretProjection_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SecretProjection.class, io.kubernetes.client.proto.V1.SecretProjection.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SecretProjection.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLocalObjectReferenceFieldBuilder();
          getItemsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
        } else {
          items_ = null;
          itemsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        optional_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretProjection_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretProjection getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SecretProjection.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretProjection build() {
        io.kubernetes.client.proto.V1.SecretProjection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretProjection buildPartial() {
        io.kubernetes.client.proto.V1.SecretProjection result = new io.kubernetes.client.proto.V1.SecretProjection(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.SecretProjection 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.V1.SecretProjection result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.localObjectReference_ = localObjectReferenceBuilder_ == null
              ? localObjectReference_
              : localObjectReferenceBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.optional_ = optional_;
          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.V1.SecretProjection) {
          return mergeFrom((io.kubernetes.client.proto.V1.SecretProjection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SecretProjection other) {
        if (other == io.kubernetes.client.proto.V1.SecretProjection.getDefaultInstance()) return this;
        if (other.hasLocalObjectReference()) {
          mergeLocalObjectReference(other.getLocalObjectReference());
        }
        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_);
            }
          }
        }
        if (other.hasOptional()) {
          setOptional(other.getOptional());
        }
        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(
                    getLocalObjectReferenceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.KeyToPath m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.KeyToPath.parser(),
                        extensionRegistry);
                if (itemsBuilder_ == null) {
                  ensureItemsIsMutable();
                  items_.add(m);
                } else {
                  itemsBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 32: {
                optional_ = input.readBool();
                bitField0_ |= 0x00000004;
                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 io.kubernetes.client.proto.V1.LocalObjectReference localObjectReference_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> localObjectReferenceBuilder_;
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return Whether the localObjectReference field is set.
       */
      public boolean hasLocalObjectReference() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       * @return The localObjectReference.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getLocalObjectReference() {
        if (localObjectReferenceBuilder_ == null) {
          return localObjectReference_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        } else {
          return localObjectReferenceBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          localObjectReference_ = value;
        } else {
          localObjectReferenceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder setLocalObjectReference(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReference_ = builderForValue.build();
        } else {
          localObjectReferenceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder mergeLocalObjectReference(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (localObjectReferenceBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            localObjectReference_ != null &&
            localObjectReference_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getLocalObjectReferenceBuilder().mergeFrom(value);
          } else {
            localObjectReference_ = value;
          }
        } else {
          localObjectReferenceBuilder_.mergeFrom(value);
        }
        if (localObjectReference_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public Builder clearLocalObjectReference() {
        bitField0_ = (bitField0_ & ~0x00000001);
        localObjectReference_ = null;
        if (localObjectReferenceBuilder_ != null) {
          localObjectReferenceBuilder_.dispose();
          localObjectReferenceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getLocalObjectReferenceBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLocalObjectReferenceFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getLocalObjectReferenceOrBuilder() {
        if (localObjectReferenceBuilder_ != null) {
          return localObjectReferenceBuilder_.getMessageOrBuilder();
        } else {
          return localObjectReference_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : localObjectReference_;
        }
      }
      /**
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference localObjectReference = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getLocalObjectReferenceFieldBuilder() {
        if (localObjectReferenceBuilder_ == null) {
          localObjectReferenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getLocalObjectReference(),
                  getParentForChildren(),
                  isClean());
          localObjectReference_ = null;
        }
        return localObjectReferenceBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.KeyToPath> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.KeyToPath>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.KeyToPath> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath 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 if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.KeyToPath value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath 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 if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.KeyToPath> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath 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 if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.KeyToPath.getDefaultInstance());
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.KeyToPath.getDefaultInstance());
      }
      /**
       * <pre>
       * items if unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.KeyToPath.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      private boolean optional_ ;
      /**
       * <pre>
       * optional field specify whether the Secret or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return Whether the optional field is set.
       */
      @java.lang.Override
      public boolean hasOptional() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * optional field specify whether the Secret or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return The optional.
       */
      @java.lang.Override
      public boolean getOptional() {
        return optional_;
      }
      /**
       * <pre>
       * optional field specify whether the Secret or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @param value The optional to set.
       * @return This builder for chaining.
       */
      public Builder setOptional(boolean value) {

        optional_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * optional field specify whether the Secret or its key must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptional() {
        bitField0_ = (bitField0_ & ~0x00000004);
        optional_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SecretProjection)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SecretProjection)
    private static final io.kubernetes.client.proto.V1.SecretProjection DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SecretProjection();
    }

    public static io.kubernetes.client.proto.V1.SecretProjection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SecretProjection>
        PARSER = new com.google.protobuf.AbstractParser<SecretProjection>() {
      @java.lang.Override
      public SecretProjection 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<SecretProjection> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SecretProjection> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretProjection getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SecretReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SecretReference)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * name is unique within a namespace to reference a secret resource.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * name is unique within a namespace to reference a secret resource.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * name is unique within a namespace to reference a secret resource.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * namespace defines the space within which the secret name must be unique.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</code>
     * @return Whether the namespace field is set.
     */
    boolean hasNamespace();
    /**
     * <pre>
     * namespace defines the space within which the secret name must be unique.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</code>
     * @return The namespace.
     */
    java.lang.String getNamespace();
    /**
     * <pre>
     * namespace defines the space within which the secret name must be unique.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</code>
     * @return The bytes for namespace.
     */
    com.google.protobuf.ByteString
        getNamespaceBytes();
  }
  /**
   * <pre>
   * SecretReference represents a Secret Reference. It has enough information to retrieve secret
   * in any namespace
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SecretReference}
   */
  public static final class SecretReference extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SecretReference)
      SecretReferenceOrBuilder {
  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= */ "",
        SecretReference.class.getName());
    }
    // Use SecretReference.newBuilder() to construct.
    private SecretReference(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SecretReference() {
      name_ = "";
      namespace_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretReference_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretReference_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SecretReference.class, io.kubernetes.client.proto.V1.SecretReference.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * name is unique within a namespace to reference a secret resource.
     * +optional
     * </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 unique within a namespace to reference a secret resource.
     * +optional
     * </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 unique within a namespace to reference a secret resource.
     * +optional
     * </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 NAMESPACE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object namespace_ = "";
    /**
     * <pre>
     * namespace defines the space within which the secret name must be unique.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</code>
     * @return Whether the namespace field is set.
     */
    @java.lang.Override
    public boolean hasNamespace() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * namespace defines the space within which the secret name must be unique.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</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 defines the space within which the secret name must be unique.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 2;</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;
      }
    }

    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, namespace_);
      }
      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, namespace_);
      }
      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.V1.SecretReference)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SecretReference other = (io.kubernetes.client.proto.V1.SecretReference) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasNamespace() != other.hasNamespace()) return false;
      if (hasNamespace()) {
        if (!getNamespace()
            .equals(other.getNamespace())) 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 (hasNamespace()) {
        hash = (37 * hash) + NAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getNamespace().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SecretReference parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretReference 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.V1.SecretReference parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretReference 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.V1.SecretReference parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretReference parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SecretReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretReference 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.V1.SecretReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SecretReference 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.V1.SecretReference parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretReference 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.V1.SecretReference 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>
     * SecretReference represents a Secret Reference. It has enough information to retrieve secret
     * in any namespace
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SecretReference}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SecretReference)
        io.kubernetes.client.proto.V1.SecretReferenceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretReference_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretReference_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SecretReference.class, io.kubernetes.client.proto.V1.SecretReference.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SecretReference.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        namespace_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretReference_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretReference getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretReference build() {
        io.kubernetes.client.proto.V1.SecretReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretReference buildPartial() {
        io.kubernetes.client.proto.V1.SecretReference result = new io.kubernetes.client.proto.V1.SecretReference(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.SecretReference 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.namespace_ = namespace_;
          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.V1.SecretReference) {
          return mergeFrom((io.kubernetes.client.proto.V1.SecretReference)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SecretReference other) {
        if (other == io.kubernetes.client.proto.V1.SecretReference.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasNamespace()) {
          namespace_ = other.namespace_;
          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: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                namespace_ = 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 name_ = "";
      /**
       * <pre>
       * name is unique within a namespace to reference a secret resource.
       * +optional
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * name is unique within a namespace to reference a secret resource.
       * +optional
       * </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 unique within a namespace to reference a secret resource.
       * +optional
       * </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 unique within a namespace to reference a secret resource.
       * +optional
       * </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 unique within a namespace to reference a secret resource.
       * +optional
       * </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 unique within a namespace to reference a secret resource.
       * +optional
       * </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 namespace_ = "";
      /**
       * <pre>
       * namespace defines the space within which the secret name must be unique.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</code>
       * @return Whether the namespace field is set.
       */
      public boolean hasNamespace() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * namespace defines the space within which the secret name must be unique.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</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 defines the space within which the secret name must be unique.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</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 defines the space within which the secret name must be unique.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * namespace defines the space within which the secret name must be unique.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNamespace() {
        namespace_ = getDefaultInstance().getNamespace();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * namespace defines the space within which the secret name must be unique.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SecretReference)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SecretReference)
    private static final io.kubernetes.client.proto.V1.SecretReference DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SecretReference();
    }

    public static io.kubernetes.client.proto.V1.SecretReference getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SecretReference>
        PARSER = new com.google.protobuf.AbstractParser<SecretReference>() {
      @java.lang.Override
      public SecretReference 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<SecretReference> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SecretReference> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretReference getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SecretVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SecretVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * secretName is the name of the secret in the pod's namespace to use.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return Whether the secretName field is set.
     */
    boolean hasSecretName();
    /**
     * <pre>
     * secretName is the name of the secret in the pod's namespace to use.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The secretName.
     */
    java.lang.String getSecretName();
    /**
     * <pre>
     * secretName is the name of the secret in the pod's namespace to use.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The bytes for secretName.
     */
    com.google.protobuf.ByteString
        getSecretNameBytes();

    /**
     * <pre>
     * items If unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.KeyToPath> 
        getItemsList();
    /**
     * <pre>
     * items If unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    io.kubernetes.client.proto.V1.KeyToPath getItems(int index);
    /**
     * <pre>
     * items If unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * items If unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * items If unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
        int index);

    /**
     * <pre>
     * defaultMode is Optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values
     * for mode bits. Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 3;</code>
     * @return Whether the defaultMode field is set.
     */
    boolean hasDefaultMode();
    /**
     * <pre>
     * defaultMode is Optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values
     * for mode bits. Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 3;</code>
     * @return The defaultMode.
     */
    int getDefaultMode();

    /**
     * <pre>
     * optional field specify whether the Secret or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return Whether the optional field is set.
     */
    boolean hasOptional();
    /**
     * <pre>
     * optional field specify whether the Secret or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return The optional.
     */
    boolean getOptional();
  }
  /**
   * <pre>
   * Adapts a Secret into a volume.
   *
   * The contents of the target Secret's Data field will be presented in a volume
   * as files using the keys in the Data field as the file names.
   * Secret volumes support ownership management and SELinux relabeling.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SecretVolumeSource}
   */
  public static final class SecretVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SecretVolumeSource)
      SecretVolumeSourceOrBuilder {
  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= */ "",
        SecretVolumeSource.class.getName());
    }
    // Use SecretVolumeSource.newBuilder() to construct.
    private SecretVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SecretVolumeSource() {
      secretName_ = "";
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SecretVolumeSource.class, io.kubernetes.client.proto.V1.SecretVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int SECRETNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object secretName_ = "";
    /**
     * <pre>
     * secretName is the name of the secret in the pod's namespace to use.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return Whether the secretName field is set.
     */
    @java.lang.Override
    public boolean hasSecretName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * secretName is the name of the secret in the pod's namespace to use.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The secretName.
     */
    @java.lang.Override
    public java.lang.String getSecretName() {
      java.lang.Object ref = secretName_;
      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()) {
          secretName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * secretName is the name of the secret in the pod's namespace to use.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional string secretName = 1;</code>
     * @return The bytes for secretName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSecretNameBytes() {
      java.lang.Object ref = secretName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        secretName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ITEMS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.KeyToPath> items_;
    /**
     * <pre>
     * items If unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.KeyToPath> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * items If unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * items If unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * items If unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.KeyToPath getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * items If unspecified, each key-value pair in the Data field of the referenced
     * Secret will be projected into the volume as a file whose name is the
     * key and content is the value. If specified, the listed keys will be
     * projected into the specified paths, and unlisted keys will not be
     * present. If a key is specified which is not present in the Secret,
     * the volume setup will error unless it is marked optional. Paths must be
     * relative and may not contain the '..' path or start with '..'.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

    public static final int DEFAULTMODE_FIELD_NUMBER = 3;
    private int defaultMode_ = 0;
    /**
     * <pre>
     * defaultMode is Optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values
     * for mode bits. Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 3;</code>
     * @return Whether the defaultMode field is set.
     */
    @java.lang.Override
    public boolean hasDefaultMode() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * defaultMode is Optional: mode bits used to set permissions on created files by default.
     * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
     * YAML accepts both octal and decimal values, JSON requires decimal values
     * for mode bits. Defaults to 0644.
     * Directories within the path are not affected by this setting.
     * This might be in conflict with other options that affect the file
     * mode, like fsGroup, and the result can be other mode bits set.
     * +optional
     * </pre>
     *
     * <code>optional int32 defaultMode = 3;</code>
     * @return The defaultMode.
     */
    @java.lang.Override
    public int getDefaultMode() {
      return defaultMode_;
    }

    public static final int OPTIONAL_FIELD_NUMBER = 4;
    private boolean optional_ = false;
    /**
     * <pre>
     * optional field specify whether the Secret or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return Whether the optional field is set.
     */
    @java.lang.Override
    public boolean hasOptional() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * optional field specify whether the Secret or its keys must be defined
     * +optional
     * </pre>
     *
     * <code>optional bool optional = 4;</code>
     * @return The optional.
     */
    @java.lang.Override
    public boolean getOptional() {
      return optional_;
    }

    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, secretName_);
      }
      for (int i = 0; i < items_.size(); i++) {
        output.writeMessage(2, items_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(3, defaultMode_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(4, optional_);
      }
      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, secretName_);
      }
      for (int i = 0; i < items_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, items_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, defaultMode_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, optional_);
      }
      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.V1.SecretVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SecretVolumeSource other = (io.kubernetes.client.proto.V1.SecretVolumeSource) obj;

      if (hasSecretName() != other.hasSecretName()) return false;
      if (hasSecretName()) {
        if (!getSecretName()
            .equals(other.getSecretName())) return false;
      }
      if (!getItemsList()
          .equals(other.getItemsList())) return false;
      if (hasDefaultMode() != other.hasDefaultMode()) return false;
      if (hasDefaultMode()) {
        if (getDefaultMode()
            != other.getDefaultMode()) return false;
      }
      if (hasOptional() != other.hasOptional()) return false;
      if (hasOptional()) {
        if (getOptional()
            != other.getOptional()) 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 (hasSecretName()) {
        hash = (37 * hash) + SECRETNAME_FIELD_NUMBER;
        hash = (53 * hash) + getSecretName().hashCode();
      }
      if (getItemsCount() > 0) {
        hash = (37 * hash) + ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getItemsList().hashCode();
      }
      if (hasDefaultMode()) {
        hash = (37 * hash) + DEFAULTMODE_FIELD_NUMBER;
        hash = (53 * hash) + getDefaultMode();
      }
      if (hasOptional()) {
        hash = (37 * hash) + OPTIONAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptional());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SecretVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretVolumeSource 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.V1.SecretVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretVolumeSource 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.V1.SecretVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecretVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SecretVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretVolumeSource 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.V1.SecretVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SecretVolumeSource 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.V1.SecretVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecretVolumeSource 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.V1.SecretVolumeSource 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>
     * Adapts a Secret into a volume.
     *
     * The contents of the target Secret's Data field will be presented in a volume
     * as files using the keys in the Data field as the file names.
     * Secret volumes support ownership management and SELinux relabeling.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SecretVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SecretVolumeSource)
        io.kubernetes.client.proto.V1.SecretVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SecretVolumeSource.class, io.kubernetes.client.proto.V1.SecretVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SecretVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        secretName_ = "";
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
        } else {
          items_ = null;
          itemsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        defaultMode_ = 0;
        optional_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecretVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SecretVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretVolumeSource build() {
        io.kubernetes.client.proto.V1.SecretVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecretVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.SecretVolumeSource result = new io.kubernetes.client.proto.V1.SecretVolumeSource(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.SecretVolumeSource 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.V1.SecretVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.secretName_ = secretName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.defaultMode_ = defaultMode_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.optional_ = optional_;
          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.V1.SecretVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.SecretVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SecretVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.SecretVolumeSource.getDefaultInstance()) return this;
        if (other.hasSecretName()) {
          secretName_ = other.secretName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        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_);
            }
          }
        }
        if (other.hasDefaultMode()) {
          setDefaultMode(other.getDefaultMode());
        }
        if (other.hasOptional()) {
          setOptional(other.getOptional());
        }
        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: {
                secretName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.V1.KeyToPath m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.KeyToPath.parser(),
                        extensionRegistry);
                if (itemsBuilder_ == null) {
                  ensureItemsIsMutable();
                  items_.add(m);
                } else {
                  itemsBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 24: {
                defaultMode_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                optional_ = input.readBool();
                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 secretName_ = "";
      /**
       * <pre>
       * secretName is the name of the secret in the pod's namespace to use.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return Whether the secretName field is set.
       */
      public boolean hasSecretName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * secretName is the name of the secret in the pod's namespace to use.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return The secretName.
       */
      public java.lang.String getSecretName() {
        java.lang.Object ref = secretName_;
        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()) {
            secretName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * secretName is the name of the secret in the pod's namespace to use.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return The bytes for secretName.
       */
      public com.google.protobuf.ByteString
          getSecretNameBytes() {
        java.lang.Object ref = secretName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          secretName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * secretName is the name of the secret in the pod's namespace to use.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @param value The secretName to set.
       * @return This builder for chaining.
       */
      public Builder setSecretName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        secretName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretName is the name of the secret in the pod's namespace to use.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSecretName() {
        secretName_ = getDefaultInstance().getSecretName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretName is the name of the secret in the pod's namespace to use.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional string secretName = 1;</code>
       * @param value The bytes for secretName to set.
       * @return This builder for chaining.
       */
      public Builder setSecretNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        secretName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1.KeyToPath> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.KeyToPath>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.KeyToPath> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath 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 If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.KeyToPath value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath 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 If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.KeyToPath.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.KeyToPath> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath 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 If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPathOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.KeyToPath.getDefaultInstance());
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.KeyToPath.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.KeyToPath.getDefaultInstance());
      }
      /**
       * <pre>
       * items If unspecified, each key-value pair in the Data field of the referenced
       * Secret will be projected into the volume as a file whose name is the
       * key and content is the value. If specified, the listed keys will be
       * projected into the specified paths, and unlisted keys will not be
       * present. If a key is specified which is not present in the Secret,
       * the volume setup will error unless it is marked optional. Paths must be
       * relative and may not contain the '..' path or start with '..'.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.KeyToPath items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.KeyToPath.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.KeyToPath, io.kubernetes.client.proto.V1.KeyToPath.Builder, io.kubernetes.client.proto.V1.KeyToPathOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      private int defaultMode_ ;
      /**
       * <pre>
       * defaultMode is Optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values
       * for mode bits. Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 3;</code>
       * @return Whether the defaultMode field is set.
       */
      @java.lang.Override
      public boolean hasDefaultMode() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * defaultMode is Optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values
       * for mode bits. Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 3;</code>
       * @return The defaultMode.
       */
      @java.lang.Override
      public int getDefaultMode() {
        return defaultMode_;
      }
      /**
       * <pre>
       * defaultMode is Optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values
       * for mode bits. Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 3;</code>
       * @param value The defaultMode to set.
       * @return This builder for chaining.
       */
      public Builder setDefaultMode(int value) {

        defaultMode_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * defaultMode is Optional: mode bits used to set permissions on created files by default.
       * Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
       * YAML accepts both octal and decimal values, JSON requires decimal values
       * for mode bits. Defaults to 0644.
       * Directories within the path are not affected by this setting.
       * This might be in conflict with other options that affect the file
       * mode, like fsGroup, and the result can be other mode bits set.
       * +optional
       * </pre>
       *
       * <code>optional int32 defaultMode = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDefaultMode() {
        bitField0_ = (bitField0_ & ~0x00000004);
        defaultMode_ = 0;
        onChanged();
        return this;
      }

      private boolean optional_ ;
      /**
       * <pre>
       * optional field specify whether the Secret or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return Whether the optional field is set.
       */
      @java.lang.Override
      public boolean hasOptional() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * optional field specify whether the Secret or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return The optional.
       */
      @java.lang.Override
      public boolean getOptional() {
        return optional_;
      }
      /**
       * <pre>
       * optional field specify whether the Secret or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @param value The optional to set.
       * @return This builder for chaining.
       */
      public Builder setOptional(boolean value) {

        optional_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * optional field specify whether the Secret or its keys must be defined
       * +optional
       * </pre>
       *
       * <code>optional bool optional = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptional() {
        bitField0_ = (bitField0_ & ~0x00000008);
        optional_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SecretVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SecretVolumeSource)
    private static final io.kubernetes.client.proto.V1.SecretVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SecretVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.SecretVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SecretVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<SecretVolumeSource>() {
      @java.lang.Override
      public SecretVolumeSource 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<SecretVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SecretVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SecurityContextOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SecurityContext)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The capabilities to add/drop when running containers.
     * Defaults to the default set of capabilities granted by the container runtime.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
     * @return Whether the capabilities field is set.
     */
    boolean hasCapabilities();
    /**
     * <pre>
     * The capabilities to add/drop when running containers.
     * Defaults to the default set of capabilities granted by the container runtime.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
     * @return The capabilities.
     */
    io.kubernetes.client.proto.V1.Capabilities getCapabilities();
    /**
     * <pre>
     * The capabilities to add/drop when running containers.
     * Defaults to the default set of capabilities granted by the container runtime.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
     */
    io.kubernetes.client.proto.V1.CapabilitiesOrBuilder getCapabilitiesOrBuilder();

    /**
     * <pre>
     * Run container in privileged mode.
     * Processes in privileged containers are essentially equivalent to root on the host.
     * Defaults to false.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool privileged = 2;</code>
     * @return Whether the privileged field is set.
     */
    boolean hasPrivileged();
    /**
     * <pre>
     * Run container in privileged mode.
     * Processes in privileged containers are essentially equivalent to root on the host.
     * Defaults to false.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool privileged = 2;</code>
     * @return The privileged.
     */
    boolean getPrivileged();

    /**
     * <pre>
     * The SELinux context to be applied to the container.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
     * @return Whether the seLinuxOptions field is set.
     */
    boolean hasSeLinuxOptions();
    /**
     * <pre>
     * The SELinux context to be applied to the container.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
     * @return The seLinuxOptions.
     */
    io.kubernetes.client.proto.V1.SELinuxOptions getSeLinuxOptions();
    /**
     * <pre>
     * The SELinux context to be applied to the container.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
     */
    io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder getSeLinuxOptionsOrBuilder();

    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options from the PodSecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
     * @return Whether the windowsOptions field is set.
     */
    boolean hasWindowsOptions();
    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options from the PodSecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
     * @return The windowsOptions.
     */
    io.kubernetes.client.proto.V1.WindowsSecurityContextOptions getWindowsOptions();
    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options from the PodSecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
     */
    io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder getWindowsOptionsOrBuilder();

    /**
     * <pre>
     * The UID to run the entrypoint of the container process.
     * Defaults to user specified in image metadata if unspecified.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsUser = 4;</code>
     * @return Whether the runAsUser field is set.
     */
    boolean hasRunAsUser();
    /**
     * <pre>
     * The UID to run the entrypoint of the container process.
     * Defaults to user specified in image metadata if unspecified.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsUser = 4;</code>
     * @return The runAsUser.
     */
    long getRunAsUser();

    /**
     * <pre>
     * The GID to run the entrypoint of the container process.
     * Uses runtime default if unset.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsGroup = 8;</code>
     * @return Whether the runAsGroup field is set.
     */
    boolean hasRunAsGroup();
    /**
     * <pre>
     * The GID to run the entrypoint of the container process.
     * Uses runtime default if unset.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsGroup = 8;</code>
     * @return The runAsGroup.
     */
    long getRunAsGroup();

    /**
     * <pre>
     * Indicates that the container must run as a non-root user.
     * If true, the Kubelet will validate the image at runtime to ensure that it
     * does not run as UID 0 (root) and fail to start the container if it does.
     * If unset or false, no such validation will be performed.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional bool runAsNonRoot = 5;</code>
     * @return Whether the runAsNonRoot field is set.
     */
    boolean hasRunAsNonRoot();
    /**
     * <pre>
     * Indicates that the container must run as a non-root user.
     * If true, the Kubelet will validate the image at runtime to ensure that it
     * does not run as UID 0 (root) and fail to start the container if it does.
     * If unset or false, no such validation will be performed.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional bool runAsNonRoot = 5;</code>
     * @return The runAsNonRoot.
     */
    boolean getRunAsNonRoot();

    /**
     * <pre>
     * Whether this container has a read-only root filesystem.
     * Default is false.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnlyRootFilesystem = 6;</code>
     * @return Whether the readOnlyRootFilesystem field is set.
     */
    boolean hasReadOnlyRootFilesystem();
    /**
     * <pre>
     * Whether this container has a read-only root filesystem.
     * Default is false.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnlyRootFilesystem = 6;</code>
     * @return The readOnlyRootFilesystem.
     */
    boolean getReadOnlyRootFilesystem();

    /**
     * <pre>
     * AllowPrivilegeEscalation controls whether a process can gain more
     * privileges than its parent process. This bool directly controls if
     * the no_new_privs flag will be set on the container process.
     * AllowPrivilegeEscalation is true always when the container is:
     * 1) run as Privileged
     * 2) has CAP_SYS_ADMIN
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool allowPrivilegeEscalation = 7;</code>
     * @return Whether the allowPrivilegeEscalation field is set.
     */
    boolean hasAllowPrivilegeEscalation();
    /**
     * <pre>
     * AllowPrivilegeEscalation controls whether a process can gain more
     * privileges than its parent process. This bool directly controls if
     * the no_new_privs flag will be set on the container process.
     * AllowPrivilegeEscalation is true always when the container is:
     * 1) run as Privileged
     * 2) has CAP_SYS_ADMIN
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool allowPrivilegeEscalation = 7;</code>
     * @return The allowPrivilegeEscalation.
     */
    boolean getAllowPrivilegeEscalation();

    /**
     * <pre>
     * procMount denotes the type of proc mount to use for the containers.
     * The default is DefaultProcMount which uses the container runtime defaults for
     * readonly paths and masked paths.
     * This requires the ProcMountType feature flag to be enabled.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string procMount = 9;</code>
     * @return Whether the procMount field is set.
     */
    boolean hasProcMount();
    /**
     * <pre>
     * procMount denotes the type of proc mount to use for the containers.
     * The default is DefaultProcMount which uses the container runtime defaults for
     * readonly paths and masked paths.
     * This requires the ProcMountType feature flag to be enabled.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string procMount = 9;</code>
     * @return The procMount.
     */
    java.lang.String getProcMount();
    /**
     * <pre>
     * procMount denotes the type of proc mount to use for the containers.
     * The default is DefaultProcMount which uses the container runtime defaults for
     * readonly paths and masked paths.
     * This requires the ProcMountType feature flag to be enabled.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string procMount = 9;</code>
     * @return The bytes for procMount.
     */
    com.google.protobuf.ByteString
        getProcMountBytes();

    /**
     * <pre>
     * The seccomp options to use by this container. If seccomp options are
     * provided at both the pod &amp; container level, the container options
     * override the pod options.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
     * @return Whether the seccompProfile field is set.
     */
    boolean hasSeccompProfile();
    /**
     * <pre>
     * The seccomp options to use by this container. If seccomp options are
     * provided at both the pod &amp; container level, the container options
     * override the pod options.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
     * @return The seccompProfile.
     */
    io.kubernetes.client.proto.V1.SeccompProfile getSeccompProfile();
    /**
     * <pre>
     * The seccomp options to use by this container. If seccomp options are
     * provided at both the pod &amp; container level, the container options
     * override the pod options.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
     */
    io.kubernetes.client.proto.V1.SeccompProfileOrBuilder getSeccompProfileOrBuilder();

    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by this container. If set, this profile
     * overrides the pod's appArmorProfile.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
     * @return Whether the appArmorProfile field is set.
     */
    boolean hasAppArmorProfile();
    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by this container. If set, this profile
     * overrides the pod's appArmorProfile.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
     * @return The appArmorProfile.
     */
    io.kubernetes.client.proto.V1.AppArmorProfile getAppArmorProfile();
    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by this container. If set, this profile
     * overrides the pod's appArmorProfile.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
     */
    io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder getAppArmorProfileOrBuilder();
  }
  /**
   * <pre>
   * SecurityContext holds security configuration that will be applied to a container.
   * Some fields are present in both SecurityContext and PodSecurityContext.  When both
   * are set, the values in SecurityContext take precedence.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SecurityContext}
   */
  public static final class SecurityContext extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SecurityContext)
      SecurityContextOrBuilder {
  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= */ "",
        SecurityContext.class.getName());
    }
    // Use SecurityContext.newBuilder() to construct.
    private SecurityContext(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SecurityContext() {
      procMount_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecurityContext_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecurityContext_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SecurityContext.class, io.kubernetes.client.proto.V1.SecurityContext.Builder.class);
    }

    private int bitField0_;
    public static final int CAPABILITIES_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.Capabilities capabilities_;
    /**
     * <pre>
     * The capabilities to add/drop when running containers.
     * Defaults to the default set of capabilities granted by the container runtime.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
     * @return Whether the capabilities field is set.
     */
    @java.lang.Override
    public boolean hasCapabilities() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The capabilities to add/drop when running containers.
     * Defaults to the default set of capabilities granted by the container runtime.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
     * @return The capabilities.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Capabilities getCapabilities() {
      return capabilities_ == null ? io.kubernetes.client.proto.V1.Capabilities.getDefaultInstance() : capabilities_;
    }
    /**
     * <pre>
     * The capabilities to add/drop when running containers.
     * Defaults to the default set of capabilities granted by the container runtime.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CapabilitiesOrBuilder getCapabilitiesOrBuilder() {
      return capabilities_ == null ? io.kubernetes.client.proto.V1.Capabilities.getDefaultInstance() : capabilities_;
    }

    public static final int PRIVILEGED_FIELD_NUMBER = 2;
    private boolean privileged_ = false;
    /**
     * <pre>
     * Run container in privileged mode.
     * Processes in privileged containers are essentially equivalent to root on the host.
     * Defaults to false.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool privileged = 2;</code>
     * @return Whether the privileged field is set.
     */
    @java.lang.Override
    public boolean hasPrivileged() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Run container in privileged mode.
     * Processes in privileged containers are essentially equivalent to root on the host.
     * Defaults to false.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool privileged = 2;</code>
     * @return The privileged.
     */
    @java.lang.Override
    public boolean getPrivileged() {
      return privileged_;
    }

    public static final int SELINUXOPTIONS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.SELinuxOptions seLinuxOptions_;
    /**
     * <pre>
     * The SELinux context to be applied to the container.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
     * @return Whether the seLinuxOptions field is set.
     */
    @java.lang.Override
    public boolean hasSeLinuxOptions() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The SELinux context to be applied to the container.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
     * @return The seLinuxOptions.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SELinuxOptions getSeLinuxOptions() {
      return seLinuxOptions_ == null ? io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance() : seLinuxOptions_;
    }
    /**
     * <pre>
     * The SELinux context to be applied to the container.
     * If unspecified, the container runtime will allocate a random SELinux context for each
     * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder getSeLinuxOptionsOrBuilder() {
      return seLinuxOptions_ == null ? io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance() : seLinuxOptions_;
    }

    public static final int WINDOWSOPTIONS_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.V1.WindowsSecurityContextOptions windowsOptions_;
    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options from the PodSecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
     * @return Whether the windowsOptions field is set.
     */
    @java.lang.Override
    public boolean hasWindowsOptions() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options from the PodSecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
     * @return The windowsOptions.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.WindowsSecurityContextOptions getWindowsOptions() {
      return windowsOptions_ == null ? io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance() : windowsOptions_;
    }
    /**
     * <pre>
     * The Windows specific settings applied to all containers.
     * If unspecified, the options from the PodSecurityContext will be used.
     * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is linux.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder getWindowsOptionsOrBuilder() {
      return windowsOptions_ == null ? io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance() : windowsOptions_;
    }

    public static final int RUNASUSER_FIELD_NUMBER = 4;
    private long runAsUser_ = 0L;
    /**
     * <pre>
     * The UID to run the entrypoint of the container process.
     * Defaults to user specified in image metadata if unspecified.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsUser = 4;</code>
     * @return Whether the runAsUser field is set.
     */
    @java.lang.Override
    public boolean hasRunAsUser() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * The UID to run the entrypoint of the container process.
     * Defaults to user specified in image metadata if unspecified.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsUser = 4;</code>
     * @return The runAsUser.
     */
    @java.lang.Override
    public long getRunAsUser() {
      return runAsUser_;
    }

    public static final int RUNASGROUP_FIELD_NUMBER = 8;
    private long runAsGroup_ = 0L;
    /**
     * <pre>
     * The GID to run the entrypoint of the container process.
     * Uses runtime default if unset.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsGroup = 8;</code>
     * @return Whether the runAsGroup field is set.
     */
    @java.lang.Override
    public boolean hasRunAsGroup() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * The GID to run the entrypoint of the container process.
     * Uses runtime default if unset.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional int64 runAsGroup = 8;</code>
     * @return The runAsGroup.
     */
    @java.lang.Override
    public long getRunAsGroup() {
      return runAsGroup_;
    }

    public static final int RUNASNONROOT_FIELD_NUMBER = 5;
    private boolean runAsNonRoot_ = false;
    /**
     * <pre>
     * Indicates that the container must run as a non-root user.
     * If true, the Kubelet will validate the image at runtime to ensure that it
     * does not run as UID 0 (root) and fail to start the container if it does.
     * If unset or false, no such validation will be performed.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional bool runAsNonRoot = 5;</code>
     * @return Whether the runAsNonRoot field is set.
     */
    @java.lang.Override
    public boolean hasRunAsNonRoot() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Indicates that the container must run as a non-root user.
     * If true, the Kubelet will validate the image at runtime to ensure that it
     * does not run as UID 0 (root) and fail to start the container if it does.
     * If unset or false, no such validation will be performed.
     * May also be set in PodSecurityContext.  If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional bool runAsNonRoot = 5;</code>
     * @return The runAsNonRoot.
     */
    @java.lang.Override
    public boolean getRunAsNonRoot() {
      return runAsNonRoot_;
    }

    public static final int READONLYROOTFILESYSTEM_FIELD_NUMBER = 6;
    private boolean readOnlyRootFilesystem_ = false;
    /**
     * <pre>
     * Whether this container has a read-only root filesystem.
     * Default is false.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnlyRootFilesystem = 6;</code>
     * @return Whether the readOnlyRootFilesystem field is set.
     */
    @java.lang.Override
    public boolean hasReadOnlyRootFilesystem() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * Whether this container has a read-only root filesystem.
     * Default is false.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnlyRootFilesystem = 6;</code>
     * @return The readOnlyRootFilesystem.
     */
    @java.lang.Override
    public boolean getReadOnlyRootFilesystem() {
      return readOnlyRootFilesystem_;
    }

    public static final int ALLOWPRIVILEGEESCALATION_FIELD_NUMBER = 7;
    private boolean allowPrivilegeEscalation_ = false;
    /**
     * <pre>
     * AllowPrivilegeEscalation controls whether a process can gain more
     * privileges than its parent process. This bool directly controls if
     * the no_new_privs flag will be set on the container process.
     * AllowPrivilegeEscalation is true always when the container is:
     * 1) run as Privileged
     * 2) has CAP_SYS_ADMIN
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool allowPrivilegeEscalation = 7;</code>
     * @return Whether the allowPrivilegeEscalation field is set.
     */
    @java.lang.Override
    public boolean hasAllowPrivilegeEscalation() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * AllowPrivilegeEscalation controls whether a process can gain more
     * privileges than its parent process. This bool directly controls if
     * the no_new_privs flag will be set on the container process.
     * AllowPrivilegeEscalation is true always when the container is:
     * 1) run as Privileged
     * 2) has CAP_SYS_ADMIN
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional bool allowPrivilegeEscalation = 7;</code>
     * @return The allowPrivilegeEscalation.
     */
    @java.lang.Override
    public boolean getAllowPrivilegeEscalation() {
      return allowPrivilegeEscalation_;
    }

    public static final int PROCMOUNT_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object procMount_ = "";
    /**
     * <pre>
     * procMount denotes the type of proc mount to use for the containers.
     * The default is DefaultProcMount which uses the container runtime defaults for
     * readonly paths and masked paths.
     * This requires the ProcMountType feature flag to be enabled.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string procMount = 9;</code>
     * @return Whether the procMount field is set.
     */
    @java.lang.Override
    public boolean hasProcMount() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * procMount denotes the type of proc mount to use for the containers.
     * The default is DefaultProcMount which uses the container runtime defaults for
     * readonly paths and masked paths.
     * This requires the ProcMountType feature flag to be enabled.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string procMount = 9;</code>
     * @return The procMount.
     */
    @java.lang.Override
    public java.lang.String getProcMount() {
      java.lang.Object ref = procMount_;
      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()) {
          procMount_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * procMount denotes the type of proc mount to use for the containers.
     * The default is DefaultProcMount which uses the container runtime defaults for
     * readonly paths and masked paths.
     * This requires the ProcMountType feature flag to be enabled.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional string procMount = 9;</code>
     * @return The bytes for procMount.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getProcMountBytes() {
      java.lang.Object ref = procMount_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        procMount_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECCOMPPROFILE_FIELD_NUMBER = 11;
    private io.kubernetes.client.proto.V1.SeccompProfile seccompProfile_;
    /**
     * <pre>
     * The seccomp options to use by this container. If seccomp options are
     * provided at both the pod &amp; container level, the container options
     * override the pod options.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
     * @return Whether the seccompProfile field is set.
     */
    @java.lang.Override
    public boolean hasSeccompProfile() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * The seccomp options to use by this container. If seccomp options are
     * provided at both the pod &amp; container level, the container options
     * override the pod options.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
     * @return The seccompProfile.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SeccompProfile getSeccompProfile() {
      return seccompProfile_ == null ? io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance() : seccompProfile_;
    }
    /**
     * <pre>
     * The seccomp options to use by this container. If seccomp options are
     * provided at both the pod &amp; container level, the container options
     * override the pod options.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SeccompProfileOrBuilder getSeccompProfileOrBuilder() {
      return seccompProfile_ == null ? io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance() : seccompProfile_;
    }

    public static final int APPARMORPROFILE_FIELD_NUMBER = 12;
    private io.kubernetes.client.proto.V1.AppArmorProfile appArmorProfile_;
    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by this container. If set, this profile
     * overrides the pod's appArmorProfile.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
     * @return Whether the appArmorProfile field is set.
     */
    @java.lang.Override
    public boolean hasAppArmorProfile() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by this container. If set, this profile
     * overrides the pod's appArmorProfile.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
     * @return The appArmorProfile.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AppArmorProfile getAppArmorProfile() {
      return appArmorProfile_ == null ? io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance() : appArmorProfile_;
    }
    /**
     * <pre>
     * appArmorProfile is the AppArmor options to use by this container. If set, this profile
     * overrides the pod's appArmorProfile.
     * Note that this field cannot be set when spec.os.name is windows.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder getAppArmorProfileOrBuilder() {
      return appArmorProfile_ == null ? io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance() : appArmorProfile_;
    }

    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, getCapabilities());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, privileged_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getSeLinuxOptions());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt64(4, runAsUser_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeBool(5, runAsNonRoot_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeBool(6, readOnlyRootFilesystem_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeBool(7, allowPrivilegeEscalation_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeInt64(8, runAsGroup_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, procMount_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(10, getWindowsOptions());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeMessage(11, getSeccompProfile());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeMessage(12, getAppArmorProfile());
      }
      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, getCapabilities());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, privileged_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSeLinuxOptions());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, runAsUser_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, runAsNonRoot_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, readOnlyRootFilesystem_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, allowPrivilegeEscalation_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, runAsGroup_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, procMount_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getWindowsOptions());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getSeccompProfile());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getAppArmorProfile());
      }
      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.V1.SecurityContext)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SecurityContext other = (io.kubernetes.client.proto.V1.SecurityContext) obj;

      if (hasCapabilities() != other.hasCapabilities()) return false;
      if (hasCapabilities()) {
        if (!getCapabilities()
            .equals(other.getCapabilities())) return false;
      }
      if (hasPrivileged() != other.hasPrivileged()) return false;
      if (hasPrivileged()) {
        if (getPrivileged()
            != other.getPrivileged()) return false;
      }
      if (hasSeLinuxOptions() != other.hasSeLinuxOptions()) return false;
      if (hasSeLinuxOptions()) {
        if (!getSeLinuxOptions()
            .equals(other.getSeLinuxOptions())) return false;
      }
      if (hasWindowsOptions() != other.hasWindowsOptions()) return false;
      if (hasWindowsOptions()) {
        if (!getWindowsOptions()
            .equals(other.getWindowsOptions())) return false;
      }
      if (hasRunAsUser() != other.hasRunAsUser()) return false;
      if (hasRunAsUser()) {
        if (getRunAsUser()
            != other.getRunAsUser()) return false;
      }
      if (hasRunAsGroup() != other.hasRunAsGroup()) return false;
      if (hasRunAsGroup()) {
        if (getRunAsGroup()
            != other.getRunAsGroup()) return false;
      }
      if (hasRunAsNonRoot() != other.hasRunAsNonRoot()) return false;
      if (hasRunAsNonRoot()) {
        if (getRunAsNonRoot()
            != other.getRunAsNonRoot()) return false;
      }
      if (hasReadOnlyRootFilesystem() != other.hasReadOnlyRootFilesystem()) return false;
      if (hasReadOnlyRootFilesystem()) {
        if (getReadOnlyRootFilesystem()
            != other.getReadOnlyRootFilesystem()) return false;
      }
      if (hasAllowPrivilegeEscalation() != other.hasAllowPrivilegeEscalation()) return false;
      if (hasAllowPrivilegeEscalation()) {
        if (getAllowPrivilegeEscalation()
            != other.getAllowPrivilegeEscalation()) return false;
      }
      if (hasProcMount() != other.hasProcMount()) return false;
      if (hasProcMount()) {
        if (!getProcMount()
            .equals(other.getProcMount())) return false;
      }
      if (hasSeccompProfile() != other.hasSeccompProfile()) return false;
      if (hasSeccompProfile()) {
        if (!getSeccompProfile()
            .equals(other.getSeccompProfile())) return false;
      }
      if (hasAppArmorProfile() != other.hasAppArmorProfile()) return false;
      if (hasAppArmorProfile()) {
        if (!getAppArmorProfile()
            .equals(other.getAppArmorProfile())) 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 (hasCapabilities()) {
        hash = (37 * hash) + CAPABILITIES_FIELD_NUMBER;
        hash = (53 * hash) + getCapabilities().hashCode();
      }
      if (hasPrivileged()) {
        hash = (37 * hash) + PRIVILEGED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPrivileged());
      }
      if (hasSeLinuxOptions()) {
        hash = (37 * hash) + SELINUXOPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getSeLinuxOptions().hashCode();
      }
      if (hasWindowsOptions()) {
        hash = (37 * hash) + WINDOWSOPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getWindowsOptions().hashCode();
      }
      if (hasRunAsUser()) {
        hash = (37 * hash) + RUNASUSER_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getRunAsUser());
      }
      if (hasRunAsGroup()) {
        hash = (37 * hash) + RUNASGROUP_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getRunAsGroup());
      }
      if (hasRunAsNonRoot()) {
        hash = (37 * hash) + RUNASNONROOT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getRunAsNonRoot());
      }
      if (hasReadOnlyRootFilesystem()) {
        hash = (37 * hash) + READONLYROOTFILESYSTEM_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnlyRootFilesystem());
      }
      if (hasAllowPrivilegeEscalation()) {
        hash = (37 * hash) + ALLOWPRIVILEGEESCALATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getAllowPrivilegeEscalation());
      }
      if (hasProcMount()) {
        hash = (37 * hash) + PROCMOUNT_FIELD_NUMBER;
        hash = (53 * hash) + getProcMount().hashCode();
      }
      if (hasSeccompProfile()) {
        hash = (37 * hash) + SECCOMPPROFILE_FIELD_NUMBER;
        hash = (53 * hash) + getSeccompProfile().hashCode();
      }
      if (hasAppArmorProfile()) {
        hash = (37 * hash) + APPARMORPROFILE_FIELD_NUMBER;
        hash = (53 * hash) + getAppArmorProfile().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SecurityContext parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecurityContext 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.V1.SecurityContext parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecurityContext 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.V1.SecurityContext parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SecurityContext parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SecurityContext parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecurityContext 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.V1.SecurityContext parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SecurityContext 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.V1.SecurityContext parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SecurityContext 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.V1.SecurityContext 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>
     * SecurityContext holds security configuration that will be applied to a container.
     * Some fields are present in both SecurityContext and PodSecurityContext.  When both
     * are set, the values in SecurityContext take precedence.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SecurityContext}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SecurityContext)
        io.kubernetes.client.proto.V1.SecurityContextOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecurityContext_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecurityContext_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SecurityContext.class, io.kubernetes.client.proto.V1.SecurityContext.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SecurityContext.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getCapabilitiesFieldBuilder();
          getSeLinuxOptionsFieldBuilder();
          getWindowsOptionsFieldBuilder();
          getSeccompProfileFieldBuilder();
          getAppArmorProfileFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        capabilities_ = null;
        if (capabilitiesBuilder_ != null) {
          capabilitiesBuilder_.dispose();
          capabilitiesBuilder_ = null;
        }
        privileged_ = false;
        seLinuxOptions_ = null;
        if (seLinuxOptionsBuilder_ != null) {
          seLinuxOptionsBuilder_.dispose();
          seLinuxOptionsBuilder_ = null;
        }
        windowsOptions_ = null;
        if (windowsOptionsBuilder_ != null) {
          windowsOptionsBuilder_.dispose();
          windowsOptionsBuilder_ = null;
        }
        runAsUser_ = 0L;
        runAsGroup_ = 0L;
        runAsNonRoot_ = false;
        readOnlyRootFilesystem_ = false;
        allowPrivilegeEscalation_ = false;
        procMount_ = "";
        seccompProfile_ = null;
        if (seccompProfileBuilder_ != null) {
          seccompProfileBuilder_.dispose();
          seccompProfileBuilder_ = null;
        }
        appArmorProfile_ = null;
        if (appArmorProfileBuilder_ != null) {
          appArmorProfileBuilder_.dispose();
          appArmorProfileBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SecurityContext_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecurityContext getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecurityContext build() {
        io.kubernetes.client.proto.V1.SecurityContext result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SecurityContext buildPartial() {
        io.kubernetes.client.proto.V1.SecurityContext result = new io.kubernetes.client.proto.V1.SecurityContext(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.SecurityContext result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.capabilities_ = capabilitiesBuilder_ == null
              ? capabilities_
              : capabilitiesBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.privileged_ = privileged_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.seLinuxOptions_ = seLinuxOptionsBuilder_ == null
              ? seLinuxOptions_
              : seLinuxOptionsBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.windowsOptions_ = windowsOptionsBuilder_ == null
              ? windowsOptions_
              : windowsOptionsBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.runAsUser_ = runAsUser_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.runAsGroup_ = runAsGroup_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.runAsNonRoot_ = runAsNonRoot_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.readOnlyRootFilesystem_ = readOnlyRootFilesystem_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.allowPrivilegeEscalation_ = allowPrivilegeEscalation_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.procMount_ = procMount_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.seccompProfile_ = seccompProfileBuilder_ == null
              ? seccompProfile_
              : seccompProfileBuilder_.build();
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.appArmorProfile_ = appArmorProfileBuilder_ == null
              ? appArmorProfile_
              : appArmorProfileBuilder_.build();
          to_bitField0_ |= 0x00000800;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.SecurityContext) {
          return mergeFrom((io.kubernetes.client.proto.V1.SecurityContext)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SecurityContext other) {
        if (other == io.kubernetes.client.proto.V1.SecurityContext.getDefaultInstance()) return this;
        if (other.hasCapabilities()) {
          mergeCapabilities(other.getCapabilities());
        }
        if (other.hasPrivileged()) {
          setPrivileged(other.getPrivileged());
        }
        if (other.hasSeLinuxOptions()) {
          mergeSeLinuxOptions(other.getSeLinuxOptions());
        }
        if (other.hasWindowsOptions()) {
          mergeWindowsOptions(other.getWindowsOptions());
        }
        if (other.hasRunAsUser()) {
          setRunAsUser(other.getRunAsUser());
        }
        if (other.hasRunAsGroup()) {
          setRunAsGroup(other.getRunAsGroup());
        }
        if (other.hasRunAsNonRoot()) {
          setRunAsNonRoot(other.getRunAsNonRoot());
        }
        if (other.hasReadOnlyRootFilesystem()) {
          setReadOnlyRootFilesystem(other.getReadOnlyRootFilesystem());
        }
        if (other.hasAllowPrivilegeEscalation()) {
          setAllowPrivilegeEscalation(other.getAllowPrivilegeEscalation());
        }
        if (other.hasProcMount()) {
          procMount_ = other.procMount_;
          bitField0_ |= 0x00000200;
          onChanged();
        }
        if (other.hasSeccompProfile()) {
          mergeSeccompProfile(other.getSeccompProfile());
        }
        if (other.hasAppArmorProfile()) {
          mergeAppArmorProfile(other.getAppArmorProfile());
        }
        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(
                    getCapabilitiesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                privileged_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                input.readMessage(
                    getSeLinuxOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                runAsUser_ = input.readInt64();
                bitField0_ |= 0x00000010;
                break;
              } // case 32
              case 40: {
                runAsNonRoot_ = input.readBool();
                bitField0_ |= 0x00000040;
                break;
              } // case 40
              case 48: {
                readOnlyRootFilesystem_ = input.readBool();
                bitField0_ |= 0x00000080;
                break;
              } // case 48
              case 56: {
                allowPrivilegeEscalation_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 56
              case 64: {
                runAsGroup_ = input.readInt64();
                bitField0_ |= 0x00000020;
                break;
              } // case 64
              case 74: {
                procMount_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getWindowsOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getSeccompProfileFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getAppArmorProfileFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 98
              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.V1.Capabilities capabilities_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Capabilities, io.kubernetes.client.proto.V1.Capabilities.Builder, io.kubernetes.client.proto.V1.CapabilitiesOrBuilder> capabilitiesBuilder_;
      /**
       * <pre>
       * The capabilities to add/drop when running containers.
       * Defaults to the default set of capabilities granted by the container runtime.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
       * @return Whether the capabilities field is set.
       */
      public boolean hasCapabilities() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The capabilities to add/drop when running containers.
       * Defaults to the default set of capabilities granted by the container runtime.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
       * @return The capabilities.
       */
      public io.kubernetes.client.proto.V1.Capabilities getCapabilities() {
        if (capabilitiesBuilder_ == null) {
          return capabilities_ == null ? io.kubernetes.client.proto.V1.Capabilities.getDefaultInstance() : capabilities_;
        } else {
          return capabilitiesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The capabilities to add/drop when running containers.
       * Defaults to the default set of capabilities granted by the container runtime.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
       */
      public Builder setCapabilities(io.kubernetes.client.proto.V1.Capabilities value) {
        if (capabilitiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          capabilities_ = value;
        } else {
          capabilitiesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The capabilities to add/drop when running containers.
       * Defaults to the default set of capabilities granted by the container runtime.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
       */
      public Builder setCapabilities(
          io.kubernetes.client.proto.V1.Capabilities.Builder builderForValue) {
        if (capabilitiesBuilder_ == null) {
          capabilities_ = builderForValue.build();
        } else {
          capabilitiesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The capabilities to add/drop when running containers.
       * Defaults to the default set of capabilities granted by the container runtime.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
       */
      public Builder mergeCapabilities(io.kubernetes.client.proto.V1.Capabilities value) {
        if (capabilitiesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            capabilities_ != null &&
            capabilities_ != io.kubernetes.client.proto.V1.Capabilities.getDefaultInstance()) {
            getCapabilitiesBuilder().mergeFrom(value);
          } else {
            capabilities_ = value;
          }
        } else {
          capabilitiesBuilder_.mergeFrom(value);
        }
        if (capabilities_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The capabilities to add/drop when running containers.
       * Defaults to the default set of capabilities granted by the container runtime.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
       */
      public Builder clearCapabilities() {
        bitField0_ = (bitField0_ & ~0x00000001);
        capabilities_ = null;
        if (capabilitiesBuilder_ != null) {
          capabilitiesBuilder_.dispose();
          capabilitiesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The capabilities to add/drop when running containers.
       * Defaults to the default set of capabilities granted by the container runtime.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
       */
      public io.kubernetes.client.proto.V1.Capabilities.Builder getCapabilitiesBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getCapabilitiesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The capabilities to add/drop when running containers.
       * Defaults to the default set of capabilities granted by the container runtime.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
       */
      public io.kubernetes.client.proto.V1.CapabilitiesOrBuilder getCapabilitiesOrBuilder() {
        if (capabilitiesBuilder_ != null) {
          return capabilitiesBuilder_.getMessageOrBuilder();
        } else {
          return capabilities_ == null ?
              io.kubernetes.client.proto.V1.Capabilities.getDefaultInstance() : capabilities_;
        }
      }
      /**
       * <pre>
       * The capabilities to add/drop when running containers.
       * Defaults to the default set of capabilities granted by the container runtime.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.Capabilities capabilities = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.Capabilities, io.kubernetes.client.proto.V1.Capabilities.Builder, io.kubernetes.client.proto.V1.CapabilitiesOrBuilder> 
          getCapabilitiesFieldBuilder() {
        if (capabilitiesBuilder_ == null) {
          capabilitiesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.Capabilities, io.kubernetes.client.proto.V1.Capabilities.Builder, io.kubernetes.client.proto.V1.CapabilitiesOrBuilder>(
                  getCapabilities(),
                  getParentForChildren(),
                  isClean());
          capabilities_ = null;
        }
        return capabilitiesBuilder_;
      }

      private boolean privileged_ ;
      /**
       * <pre>
       * Run container in privileged mode.
       * Processes in privileged containers are essentially equivalent to root on the host.
       * Defaults to false.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool privileged = 2;</code>
       * @return Whether the privileged field is set.
       */
      @java.lang.Override
      public boolean hasPrivileged() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Run container in privileged mode.
       * Processes in privileged containers are essentially equivalent to root on the host.
       * Defaults to false.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool privileged = 2;</code>
       * @return The privileged.
       */
      @java.lang.Override
      public boolean getPrivileged() {
        return privileged_;
      }
      /**
       * <pre>
       * Run container in privileged mode.
       * Processes in privileged containers are essentially equivalent to root on the host.
       * Defaults to false.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool privileged = 2;</code>
       * @param value The privileged to set.
       * @return This builder for chaining.
       */
      public Builder setPrivileged(boolean value) {

        privileged_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Run container in privileged mode.
       * Processes in privileged containers are essentially equivalent to root on the host.
       * Defaults to false.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool privileged = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPrivileged() {
        bitField0_ = (bitField0_ & ~0x00000002);
        privileged_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SELinuxOptions seLinuxOptions_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SELinuxOptions, io.kubernetes.client.proto.V1.SELinuxOptions.Builder, io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder> seLinuxOptionsBuilder_;
      /**
       * <pre>
       * The SELinux context to be applied to the container.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
       * @return Whether the seLinuxOptions field is set.
       */
      public boolean hasSeLinuxOptions() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The SELinux context to be applied to the container.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
       * @return The seLinuxOptions.
       */
      public io.kubernetes.client.proto.V1.SELinuxOptions getSeLinuxOptions() {
        if (seLinuxOptionsBuilder_ == null) {
          return seLinuxOptions_ == null ? io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance() : seLinuxOptions_;
        } else {
          return seLinuxOptionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The SELinux context to be applied to the container.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
       */
      public Builder setSeLinuxOptions(io.kubernetes.client.proto.V1.SELinuxOptions value) {
        if (seLinuxOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          seLinuxOptions_ = value;
        } else {
          seLinuxOptionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The SELinux context to be applied to the container.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
       */
      public Builder setSeLinuxOptions(
          io.kubernetes.client.proto.V1.SELinuxOptions.Builder builderForValue) {
        if (seLinuxOptionsBuilder_ == null) {
          seLinuxOptions_ = builderForValue.build();
        } else {
          seLinuxOptionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The SELinux context to be applied to the container.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
       */
      public Builder mergeSeLinuxOptions(io.kubernetes.client.proto.V1.SELinuxOptions value) {
        if (seLinuxOptionsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            seLinuxOptions_ != null &&
            seLinuxOptions_ != io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance()) {
            getSeLinuxOptionsBuilder().mergeFrom(value);
          } else {
            seLinuxOptions_ = value;
          }
        } else {
          seLinuxOptionsBuilder_.mergeFrom(value);
        }
        if (seLinuxOptions_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The SELinux context to be applied to the container.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
       */
      public Builder clearSeLinuxOptions() {
        bitField0_ = (bitField0_ & ~0x00000004);
        seLinuxOptions_ = null;
        if (seLinuxOptionsBuilder_ != null) {
          seLinuxOptionsBuilder_.dispose();
          seLinuxOptionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The SELinux context to be applied to the container.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
       */
      public io.kubernetes.client.proto.V1.SELinuxOptions.Builder getSeLinuxOptionsBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getSeLinuxOptionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The SELinux context to be applied to the container.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
       */
      public io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder getSeLinuxOptionsOrBuilder() {
        if (seLinuxOptionsBuilder_ != null) {
          return seLinuxOptionsBuilder_.getMessageOrBuilder();
        } else {
          return seLinuxOptions_ == null ?
              io.kubernetes.client.proto.V1.SELinuxOptions.getDefaultInstance() : seLinuxOptions_;
        }
      }
      /**
       * <pre>
       * The SELinux context to be applied to the container.
       * If unspecified, the container runtime will allocate a random SELinux context for each
       * container.  May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SELinuxOptions, io.kubernetes.client.proto.V1.SELinuxOptions.Builder, io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder> 
          getSeLinuxOptionsFieldBuilder() {
        if (seLinuxOptionsBuilder_ == null) {
          seLinuxOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SELinuxOptions, io.kubernetes.client.proto.V1.SELinuxOptions.Builder, io.kubernetes.client.proto.V1.SELinuxOptionsOrBuilder>(
                  getSeLinuxOptions(),
                  getParentForChildren(),
                  isClean());
          seLinuxOptions_ = null;
        }
        return seLinuxOptionsBuilder_;
      }

      private io.kubernetes.client.proto.V1.WindowsSecurityContextOptions windowsOptions_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.WindowsSecurityContextOptions, io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder, io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder> windowsOptionsBuilder_;
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options from the PodSecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
       * @return Whether the windowsOptions field is set.
       */
      public boolean hasWindowsOptions() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options from the PodSecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
       * @return The windowsOptions.
       */
      public io.kubernetes.client.proto.V1.WindowsSecurityContextOptions getWindowsOptions() {
        if (windowsOptionsBuilder_ == null) {
          return windowsOptions_ == null ? io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance() : windowsOptions_;
        } else {
          return windowsOptionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options from the PodSecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
       */
      public Builder setWindowsOptions(io.kubernetes.client.proto.V1.WindowsSecurityContextOptions value) {
        if (windowsOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          windowsOptions_ = value;
        } else {
          windowsOptionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options from the PodSecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
       */
      public Builder setWindowsOptions(
          io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder builderForValue) {
        if (windowsOptionsBuilder_ == null) {
          windowsOptions_ = builderForValue.build();
        } else {
          windowsOptionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options from the PodSecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
       */
      public Builder mergeWindowsOptions(io.kubernetes.client.proto.V1.WindowsSecurityContextOptions value) {
        if (windowsOptionsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            windowsOptions_ != null &&
            windowsOptions_ != io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance()) {
            getWindowsOptionsBuilder().mergeFrom(value);
          } else {
            windowsOptions_ = value;
          }
        } else {
          windowsOptionsBuilder_.mergeFrom(value);
        }
        if (windowsOptions_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options from the PodSecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
       */
      public Builder clearWindowsOptions() {
        bitField0_ = (bitField0_ & ~0x00000008);
        windowsOptions_ = null;
        if (windowsOptionsBuilder_ != null) {
          windowsOptionsBuilder_.dispose();
          windowsOptionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options from the PodSecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
       */
      public io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder getWindowsOptionsBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getWindowsOptionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options from the PodSecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
       */
      public io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder getWindowsOptionsOrBuilder() {
        if (windowsOptionsBuilder_ != null) {
          return windowsOptionsBuilder_.getMessageOrBuilder();
        } else {
          return windowsOptions_ == null ?
              io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance() : windowsOptions_;
        }
      }
      /**
       * <pre>
       * The Windows specific settings applied to all containers.
       * If unspecified, the options from the PodSecurityContext will be used.
       * If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is linux.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.WindowsSecurityContextOptions windowsOptions = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.WindowsSecurityContextOptions, io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder, io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder> 
          getWindowsOptionsFieldBuilder() {
        if (windowsOptionsBuilder_ == null) {
          windowsOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.WindowsSecurityContextOptions, io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder, io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder>(
                  getWindowsOptions(),
                  getParentForChildren(),
                  isClean());
          windowsOptions_ = null;
        }
        return windowsOptionsBuilder_;
      }

      private long runAsUser_ ;
      /**
       * <pre>
       * The UID to run the entrypoint of the container process.
       * Defaults to user specified in image metadata if unspecified.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsUser = 4;</code>
       * @return Whether the runAsUser field is set.
       */
      @java.lang.Override
      public boolean hasRunAsUser() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * The UID to run the entrypoint of the container process.
       * Defaults to user specified in image metadata if unspecified.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsUser = 4;</code>
       * @return The runAsUser.
       */
      @java.lang.Override
      public long getRunAsUser() {
        return runAsUser_;
      }
      /**
       * <pre>
       * The UID to run the entrypoint of the container process.
       * Defaults to user specified in image metadata if unspecified.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsUser = 4;</code>
       * @param value The runAsUser to set.
       * @return This builder for chaining.
       */
      public Builder setRunAsUser(long value) {

        runAsUser_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The UID to run the entrypoint of the container process.
       * Defaults to user specified in image metadata if unspecified.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsUser = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearRunAsUser() {
        bitField0_ = (bitField0_ & ~0x00000010);
        runAsUser_ = 0L;
        onChanged();
        return this;
      }

      private long runAsGroup_ ;
      /**
       * <pre>
       * The GID to run the entrypoint of the container process.
       * Uses runtime default if unset.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsGroup = 8;</code>
       * @return Whether the runAsGroup field is set.
       */
      @java.lang.Override
      public boolean hasRunAsGroup() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * The GID to run the entrypoint of the container process.
       * Uses runtime default if unset.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsGroup = 8;</code>
       * @return The runAsGroup.
       */
      @java.lang.Override
      public long getRunAsGroup() {
        return runAsGroup_;
      }
      /**
       * <pre>
       * The GID to run the entrypoint of the container process.
       * Uses runtime default if unset.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsGroup = 8;</code>
       * @param value The runAsGroup to set.
       * @return This builder for chaining.
       */
      public Builder setRunAsGroup(long value) {

        runAsGroup_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The GID to run the entrypoint of the container process.
       * Uses runtime default if unset.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional int64 runAsGroup = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearRunAsGroup() {
        bitField0_ = (bitField0_ & ~0x00000020);
        runAsGroup_ = 0L;
        onChanged();
        return this;
      }

      private boolean runAsNonRoot_ ;
      /**
       * <pre>
       * Indicates that the container must run as a non-root user.
       * If true, the Kubelet will validate the image at runtime to ensure that it
       * does not run as UID 0 (root) and fail to start the container if it does.
       * If unset or false, no such validation will be performed.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional bool runAsNonRoot = 5;</code>
       * @return Whether the runAsNonRoot field is set.
       */
      @java.lang.Override
      public boolean hasRunAsNonRoot() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Indicates that the container must run as a non-root user.
       * If true, the Kubelet will validate the image at runtime to ensure that it
       * does not run as UID 0 (root) and fail to start the container if it does.
       * If unset or false, no such validation will be performed.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional bool runAsNonRoot = 5;</code>
       * @return The runAsNonRoot.
       */
      @java.lang.Override
      public boolean getRunAsNonRoot() {
        return runAsNonRoot_;
      }
      /**
       * <pre>
       * Indicates that the container must run as a non-root user.
       * If true, the Kubelet will validate the image at runtime to ensure that it
       * does not run as UID 0 (root) and fail to start the container if it does.
       * If unset or false, no such validation will be performed.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional bool runAsNonRoot = 5;</code>
       * @param value The runAsNonRoot to set.
       * @return This builder for chaining.
       */
      public Builder setRunAsNonRoot(boolean value) {

        runAsNonRoot_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Indicates that the container must run as a non-root user.
       * If true, the Kubelet will validate the image at runtime to ensure that it
       * does not run as UID 0 (root) and fail to start the container if it does.
       * If unset or false, no such validation will be performed.
       * May also be set in PodSecurityContext.  If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional bool runAsNonRoot = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearRunAsNonRoot() {
        bitField0_ = (bitField0_ & ~0x00000040);
        runAsNonRoot_ = false;
        onChanged();
        return this;
      }

      private boolean readOnlyRootFilesystem_ ;
      /**
       * <pre>
       * Whether this container has a read-only root filesystem.
       * Default is false.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnlyRootFilesystem = 6;</code>
       * @return Whether the readOnlyRootFilesystem field is set.
       */
      @java.lang.Override
      public boolean hasReadOnlyRootFilesystem() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * Whether this container has a read-only root filesystem.
       * Default is false.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnlyRootFilesystem = 6;</code>
       * @return The readOnlyRootFilesystem.
       */
      @java.lang.Override
      public boolean getReadOnlyRootFilesystem() {
        return readOnlyRootFilesystem_;
      }
      /**
       * <pre>
       * Whether this container has a read-only root filesystem.
       * Default is false.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnlyRootFilesystem = 6;</code>
       * @param value The readOnlyRootFilesystem to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnlyRootFilesystem(boolean value) {

        readOnlyRootFilesystem_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether this container has a read-only root filesystem.
       * Default is false.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnlyRootFilesystem = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnlyRootFilesystem() {
        bitField0_ = (bitField0_ & ~0x00000080);
        readOnlyRootFilesystem_ = false;
        onChanged();
        return this;
      }

      private boolean allowPrivilegeEscalation_ ;
      /**
       * <pre>
       * AllowPrivilegeEscalation controls whether a process can gain more
       * privileges than its parent process. This bool directly controls if
       * the no_new_privs flag will be set on the container process.
       * AllowPrivilegeEscalation is true always when the container is:
       * 1) run as Privileged
       * 2) has CAP_SYS_ADMIN
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool allowPrivilegeEscalation = 7;</code>
       * @return Whether the allowPrivilegeEscalation field is set.
       */
      @java.lang.Override
      public boolean hasAllowPrivilegeEscalation() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * AllowPrivilegeEscalation controls whether a process can gain more
       * privileges than its parent process. This bool directly controls if
       * the no_new_privs flag will be set on the container process.
       * AllowPrivilegeEscalation is true always when the container is:
       * 1) run as Privileged
       * 2) has CAP_SYS_ADMIN
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool allowPrivilegeEscalation = 7;</code>
       * @return The allowPrivilegeEscalation.
       */
      @java.lang.Override
      public boolean getAllowPrivilegeEscalation() {
        return allowPrivilegeEscalation_;
      }
      /**
       * <pre>
       * AllowPrivilegeEscalation controls whether a process can gain more
       * privileges than its parent process. This bool directly controls if
       * the no_new_privs flag will be set on the container process.
       * AllowPrivilegeEscalation is true always when the container is:
       * 1) run as Privileged
       * 2) has CAP_SYS_ADMIN
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool allowPrivilegeEscalation = 7;</code>
       * @param value The allowPrivilegeEscalation to set.
       * @return This builder for chaining.
       */
      public Builder setAllowPrivilegeEscalation(boolean value) {

        allowPrivilegeEscalation_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * AllowPrivilegeEscalation controls whether a process can gain more
       * privileges than its parent process. This bool directly controls if
       * the no_new_privs flag will be set on the container process.
       * AllowPrivilegeEscalation is true always when the container is:
       * 1) run as Privileged
       * 2) has CAP_SYS_ADMIN
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional bool allowPrivilegeEscalation = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearAllowPrivilegeEscalation() {
        bitField0_ = (bitField0_ & ~0x00000100);
        allowPrivilegeEscalation_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object procMount_ = "";
      /**
       * <pre>
       * procMount denotes the type of proc mount to use for the containers.
       * The default is DefaultProcMount which uses the container runtime defaults for
       * readonly paths and masked paths.
       * This requires the ProcMountType feature flag to be enabled.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string procMount = 9;</code>
       * @return Whether the procMount field is set.
       */
      public boolean hasProcMount() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * procMount denotes the type of proc mount to use for the containers.
       * The default is DefaultProcMount which uses the container runtime defaults for
       * readonly paths and masked paths.
       * This requires the ProcMountType feature flag to be enabled.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string procMount = 9;</code>
       * @return The procMount.
       */
      public java.lang.String getProcMount() {
        java.lang.Object ref = procMount_;
        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()) {
            procMount_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * procMount denotes the type of proc mount to use for the containers.
       * The default is DefaultProcMount which uses the container runtime defaults for
       * readonly paths and masked paths.
       * This requires the ProcMountType feature flag to be enabled.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string procMount = 9;</code>
       * @return The bytes for procMount.
       */
      public com.google.protobuf.ByteString
          getProcMountBytes() {
        java.lang.Object ref = procMount_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          procMount_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * procMount denotes the type of proc mount to use for the containers.
       * The default is DefaultProcMount which uses the container runtime defaults for
       * readonly paths and masked paths.
       * This requires the ProcMountType feature flag to be enabled.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string procMount = 9;</code>
       * @param value The procMount to set.
       * @return This builder for chaining.
       */
      public Builder setProcMount(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        procMount_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * procMount denotes the type of proc mount to use for the containers.
       * The default is DefaultProcMount which uses the container runtime defaults for
       * readonly paths and masked paths.
       * This requires the ProcMountType feature flag to be enabled.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string procMount = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearProcMount() {
        procMount_ = getDefaultInstance().getProcMount();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * procMount denotes the type of proc mount to use for the containers.
       * The default is DefaultProcMount which uses the container runtime defaults for
       * readonly paths and masked paths.
       * This requires the ProcMountType feature flag to be enabled.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional string procMount = 9;</code>
       * @param value The bytes for procMount to set.
       * @return This builder for chaining.
       */
      public Builder setProcMountBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        procMount_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SeccompProfile seccompProfile_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SeccompProfile, io.kubernetes.client.proto.V1.SeccompProfile.Builder, io.kubernetes.client.proto.V1.SeccompProfileOrBuilder> seccompProfileBuilder_;
      /**
       * <pre>
       * The seccomp options to use by this container. If seccomp options are
       * provided at both the pod &amp; container level, the container options
       * override the pod options.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
       * @return Whether the seccompProfile field is set.
       */
      public boolean hasSeccompProfile() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * The seccomp options to use by this container. If seccomp options are
       * provided at both the pod &amp; container level, the container options
       * override the pod options.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
       * @return The seccompProfile.
       */
      public io.kubernetes.client.proto.V1.SeccompProfile getSeccompProfile() {
        if (seccompProfileBuilder_ == null) {
          return seccompProfile_ == null ? io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance() : seccompProfile_;
        } else {
          return seccompProfileBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The seccomp options to use by this container. If seccomp options are
       * provided at both the pod &amp; container level, the container options
       * override the pod options.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
       */
      public Builder setSeccompProfile(io.kubernetes.client.proto.V1.SeccompProfile value) {
        if (seccompProfileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          seccompProfile_ = value;
        } else {
          seccompProfileBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The seccomp options to use by this container. If seccomp options are
       * provided at both the pod &amp; container level, the container options
       * override the pod options.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
       */
      public Builder setSeccompProfile(
          io.kubernetes.client.proto.V1.SeccompProfile.Builder builderForValue) {
        if (seccompProfileBuilder_ == null) {
          seccompProfile_ = builderForValue.build();
        } else {
          seccompProfileBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The seccomp options to use by this container. If seccomp options are
       * provided at both the pod &amp; container level, the container options
       * override the pod options.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
       */
      public Builder mergeSeccompProfile(io.kubernetes.client.proto.V1.SeccompProfile value) {
        if (seccompProfileBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            seccompProfile_ != null &&
            seccompProfile_ != io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance()) {
            getSeccompProfileBuilder().mergeFrom(value);
          } else {
            seccompProfile_ = value;
          }
        } else {
          seccompProfileBuilder_.mergeFrom(value);
        }
        if (seccompProfile_ != null) {
          bitField0_ |= 0x00000400;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The seccomp options to use by this container. If seccomp options are
       * provided at both the pod &amp; container level, the container options
       * override the pod options.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
       */
      public Builder clearSeccompProfile() {
        bitField0_ = (bitField0_ & ~0x00000400);
        seccompProfile_ = null;
        if (seccompProfileBuilder_ != null) {
          seccompProfileBuilder_.dispose();
          seccompProfileBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The seccomp options to use by this container. If seccomp options are
       * provided at both the pod &amp; container level, the container options
       * override the pod options.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
       */
      public io.kubernetes.client.proto.V1.SeccompProfile.Builder getSeccompProfileBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getSeccompProfileFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The seccomp options to use by this container. If seccomp options are
       * provided at both the pod &amp; container level, the container options
       * override the pod options.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
       */
      public io.kubernetes.client.proto.V1.SeccompProfileOrBuilder getSeccompProfileOrBuilder() {
        if (seccompProfileBuilder_ != null) {
          return seccompProfileBuilder_.getMessageOrBuilder();
        } else {
          return seccompProfile_ == null ?
              io.kubernetes.client.proto.V1.SeccompProfile.getDefaultInstance() : seccompProfile_;
        }
      }
      /**
       * <pre>
       * The seccomp options to use by this container. If seccomp options are
       * provided at both the pod &amp; container level, the container options
       * override the pod options.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SeccompProfile seccompProfile = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SeccompProfile, io.kubernetes.client.proto.V1.SeccompProfile.Builder, io.kubernetes.client.proto.V1.SeccompProfileOrBuilder> 
          getSeccompProfileFieldBuilder() {
        if (seccompProfileBuilder_ == null) {
          seccompProfileBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SeccompProfile, io.kubernetes.client.proto.V1.SeccompProfile.Builder, io.kubernetes.client.proto.V1.SeccompProfileOrBuilder>(
                  getSeccompProfile(),
                  getParentForChildren(),
                  isClean());
          seccompProfile_ = null;
        }
        return seccompProfileBuilder_;
      }

      private io.kubernetes.client.proto.V1.AppArmorProfile appArmorProfile_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AppArmorProfile, io.kubernetes.client.proto.V1.AppArmorProfile.Builder, io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder> appArmorProfileBuilder_;
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by this container. If set, this profile
       * overrides the pod's appArmorProfile.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
       * @return Whether the appArmorProfile field is set.
       */
      public boolean hasAppArmorProfile() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by this container. If set, this profile
       * overrides the pod's appArmorProfile.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
       * @return The appArmorProfile.
       */
      public io.kubernetes.client.proto.V1.AppArmorProfile getAppArmorProfile() {
        if (appArmorProfileBuilder_ == null) {
          return appArmorProfile_ == null ? io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance() : appArmorProfile_;
        } else {
          return appArmorProfileBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by this container. If set, this profile
       * overrides the pod's appArmorProfile.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
       */
      public Builder setAppArmorProfile(io.kubernetes.client.proto.V1.AppArmorProfile value) {
        if (appArmorProfileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          appArmorProfile_ = value;
        } else {
          appArmorProfileBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by this container. If set, this profile
       * overrides the pod's appArmorProfile.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
       */
      public Builder setAppArmorProfile(
          io.kubernetes.client.proto.V1.AppArmorProfile.Builder builderForValue) {
        if (appArmorProfileBuilder_ == null) {
          appArmorProfile_ = builderForValue.build();
        } else {
          appArmorProfileBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by this container. If set, this profile
       * overrides the pod's appArmorProfile.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
       */
      public Builder mergeAppArmorProfile(io.kubernetes.client.proto.V1.AppArmorProfile value) {
        if (appArmorProfileBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0) &&
            appArmorProfile_ != null &&
            appArmorProfile_ != io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance()) {
            getAppArmorProfileBuilder().mergeFrom(value);
          } else {
            appArmorProfile_ = value;
          }
        } else {
          appArmorProfileBuilder_.mergeFrom(value);
        }
        if (appArmorProfile_ != null) {
          bitField0_ |= 0x00000800;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by this container. If set, this profile
       * overrides the pod's appArmorProfile.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
       */
      public Builder clearAppArmorProfile() {
        bitField0_ = (bitField0_ & ~0x00000800);
        appArmorProfile_ = null;
        if (appArmorProfileBuilder_ != null) {
          appArmorProfileBuilder_.dispose();
          appArmorProfileBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by this container. If set, this profile
       * overrides the pod's appArmorProfile.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
       */
      public io.kubernetes.client.proto.V1.AppArmorProfile.Builder getAppArmorProfileBuilder() {
        bitField0_ |= 0x00000800;
        onChanged();
        return getAppArmorProfileFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by this container. If set, this profile
       * overrides the pod's appArmorProfile.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
       */
      public io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder getAppArmorProfileOrBuilder() {
        if (appArmorProfileBuilder_ != null) {
          return appArmorProfileBuilder_.getMessageOrBuilder();
        } else {
          return appArmorProfile_ == null ?
              io.kubernetes.client.proto.V1.AppArmorProfile.getDefaultInstance() : appArmorProfile_;
        }
      }
      /**
       * <pre>
       * appArmorProfile is the AppArmor options to use by this container. If set, this profile
       * overrides the pod's appArmorProfile.
       * Note that this field cannot be set when spec.os.name is windows.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AppArmorProfile appArmorProfile = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AppArmorProfile, io.kubernetes.client.proto.V1.AppArmorProfile.Builder, io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder> 
          getAppArmorProfileFieldBuilder() {
        if (appArmorProfileBuilder_ == null) {
          appArmorProfileBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.AppArmorProfile, io.kubernetes.client.proto.V1.AppArmorProfile.Builder, io.kubernetes.client.proto.V1.AppArmorProfileOrBuilder>(
                  getAppArmorProfile(),
                  getParentForChildren(),
                  isClean());
          appArmorProfile_ = null;
        }
        return appArmorProfileBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SecurityContext)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SecurityContext)
    private static final io.kubernetes.client.proto.V1.SecurityContext DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SecurityContext();
    }

    public static io.kubernetes.client.proto.V1.SecurityContext getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SecurityContext>
        PARSER = new com.google.protobuf.AbstractParser<SecurityContext>() {
      @java.lang.Override
      public SecurityContext 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<SecurityContext> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SecurityContext> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecurityContext getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SerializedReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SerializedReference)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The reference to an object in the system.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
     * @return Whether the reference field is set.
     */
    boolean hasReference();
    /**
     * <pre>
     * The reference to an object in the system.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
     * @return The reference.
     */
    io.kubernetes.client.proto.V1.ObjectReference getReference();
    /**
     * <pre>
     * The reference to an object in the system.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getReferenceOrBuilder();
  }
  /**
   * <pre>
   * SerializedReference is a reference to serialized object.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SerializedReference}
   */
  public static final class SerializedReference extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SerializedReference)
      SerializedReferenceOrBuilder {
  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= */ "",
        SerializedReference.class.getName());
    }
    // Use SerializedReference.newBuilder() to construct.
    private SerializedReference(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SerializedReference() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SerializedReference_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SerializedReference_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SerializedReference.class, io.kubernetes.client.proto.V1.SerializedReference.Builder.class);
    }

    private int bitField0_;
    public static final int REFERENCE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.ObjectReference reference_;
    /**
     * <pre>
     * The reference to an object in the system.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
     * @return Whether the reference field is set.
     */
    @java.lang.Override
    public boolean hasReference() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The reference to an object in the system.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
     * @return The reference.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReference getReference() {
      return reference_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : reference_;
    }
    /**
     * <pre>
     * The reference to an object in the system.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getReferenceOrBuilder() {
      return reference_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : reference_;
    }

    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, getReference());
      }
      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, getReference());
      }
      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.V1.SerializedReference)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SerializedReference other = (io.kubernetes.client.proto.V1.SerializedReference) obj;

      if (hasReference() != other.hasReference()) return false;
      if (hasReference()) {
        if (!getReference()
            .equals(other.getReference())) 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 (hasReference()) {
        hash = (37 * hash) + REFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getReference().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SerializedReference parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SerializedReference 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.V1.SerializedReference parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SerializedReference 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.V1.SerializedReference parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SerializedReference parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SerializedReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SerializedReference 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.V1.SerializedReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SerializedReference 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.V1.SerializedReference parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SerializedReference 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.V1.SerializedReference 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>
     * SerializedReference is a reference to serialized object.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SerializedReference}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SerializedReference)
        io.kubernetes.client.proto.V1.SerializedReferenceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SerializedReference_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SerializedReference_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SerializedReference.class, io.kubernetes.client.proto.V1.SerializedReference.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SerializedReference.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getReferenceFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        reference_ = null;
        if (referenceBuilder_ != null) {
          referenceBuilder_.dispose();
          referenceBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SerializedReference_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SerializedReference getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SerializedReference.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SerializedReference build() {
        io.kubernetes.client.proto.V1.SerializedReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SerializedReference buildPartial() {
        io.kubernetes.client.proto.V1.SerializedReference result = new io.kubernetes.client.proto.V1.SerializedReference(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.SerializedReference result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.reference_ = referenceBuilder_ == null
              ? reference_
              : referenceBuilder_.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.V1.SerializedReference) {
          return mergeFrom((io.kubernetes.client.proto.V1.SerializedReference)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SerializedReference other) {
        if (other == io.kubernetes.client.proto.V1.SerializedReference.getDefaultInstance()) return this;
        if (other.hasReference()) {
          mergeReference(other.getReference());
        }
        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(
                    getReferenceFieldBuilder().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.V1.ObjectReference reference_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> referenceBuilder_;
      /**
       * <pre>
       * The reference to an object in the system.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
       * @return Whether the reference field is set.
       */
      public boolean hasReference() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The reference to an object in the system.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
       * @return The reference.
       */
      public io.kubernetes.client.proto.V1.ObjectReference getReference() {
        if (referenceBuilder_ == null) {
          return reference_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : reference_;
        } else {
          return referenceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The reference to an object in the system.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
       */
      public Builder setReference(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (referenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          reference_ = value;
        } else {
          referenceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The reference to an object in the system.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
       */
      public Builder setReference(
          io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (referenceBuilder_ == null) {
          reference_ = builderForValue.build();
        } else {
          referenceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The reference to an object in the system.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
       */
      public Builder mergeReference(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (referenceBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            reference_ != null &&
            reference_ != io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance()) {
            getReferenceBuilder().mergeFrom(value);
          } else {
            reference_ = value;
          }
        } else {
          referenceBuilder_.mergeFrom(value);
        }
        if (reference_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The reference to an object in the system.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
       */
      public Builder clearReference() {
        bitField0_ = (bitField0_ & ~0x00000001);
        reference_ = null;
        if (referenceBuilder_ != null) {
          referenceBuilder_.dispose();
          referenceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The reference to an object in the system.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder getReferenceBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getReferenceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The reference to an object in the system.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getReferenceOrBuilder() {
        if (referenceBuilder_ != null) {
          return referenceBuilder_.getMessageOrBuilder();
        } else {
          return reference_ == null ?
              io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : reference_;
        }
      }
      /**
       * <pre>
       * The reference to an object in the system.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference reference = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
          getReferenceFieldBuilder() {
        if (referenceBuilder_ == null) {
          referenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder>(
                  getReference(),
                  getParentForChildren(),
                  isClean());
          reference_ = null;
        }
        return referenceBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SerializedReference)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SerializedReference)
    private static final io.kubernetes.client.proto.V1.SerializedReference DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SerializedReference();
    }

    public static io.kubernetes.client.proto.V1.SerializedReference getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SerializedReference>
        PARSER = new com.google.protobuf.AbstractParser<SerializedReference>() {
      @java.lang.Override
      public SerializedReference 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<SerializedReference> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SerializedReference> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SerializedReference getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Service)
      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 defines the behavior of a service.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * Spec defines the behavior of a service.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1.ServiceSpec getSpec();
    /**
     * <pre>
     * Spec defines the behavior of a service.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1.ServiceSpecOrBuilder getSpecOrBuilder();

    /**
     * <pre>
     * Most recently observed status of the service.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Most recently observed status of the service.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1.ServiceStatus getStatus();
    /**
     * <pre>
     * Most recently observed status of the service.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V1.ServiceStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * Service is a named abstraction of software service (for example, mysql) consisting of local port
   * (for example 3306) that the proxy listens on, and the selector that determines which pods
   * will answer requests sent through the proxy.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Service}
   */
  public static final class Service extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Service)
      ServiceOrBuilder {
  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= */ "",
        Service.class.getName());
    }
    // Use Service.newBuilder() to construct.
    private Service(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Service() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Service_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Service_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Service.class, io.kubernetes.client.proto.V1.Service.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.V1.ServiceSpec spec_;
    /**
     * <pre>
     * Spec defines the behavior of a service.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Spec defines the behavior of a service.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1.ServiceSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * Spec defines the behavior of a service.
     * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1.ServiceSpec.getDefaultInstance() : spec_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.ServiceStatus status_;
    /**
     * <pre>
     * Most recently observed status of the service.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Most recently observed status of the service.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1.ServiceStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * Most recently observed status of the service.
     * Populated by the system.
     * Read-only.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1.ServiceStatus.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.V1.Service)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Service other = (io.kubernetes.client.proto.V1.Service) 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.V1.Service parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Service 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.V1.Service parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Service 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.V1.Service parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Service parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Service parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Service 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.V1.Service parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Service 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.V1.Service parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Service 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.V1.Service 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>
     * Service is a named abstraction of software service (for example, mysql) consisting of local port
     * (for example 3306) that the proxy listens on, and the selector that determines which pods
     * will answer requests sent through the proxy.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Service}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Service)
        io.kubernetes.client.proto.V1.ServiceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Service_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Service_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Service.class, io.kubernetes.client.proto.V1.Service.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Service.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.V1.internal_static_k8s_io_api_core_v1_Service_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Service getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Service.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Service build() {
        io.kubernetes.client.proto.V1.Service result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Service buildPartial() {
        io.kubernetes.client.proto.V1.Service result = new io.kubernetes.client.proto.V1.Service(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Service 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.V1.Service) {
          return mergeFrom((io.kubernetes.client.proto.V1.Service)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Service other) {
        if (other == io.kubernetes.client.proto.V1.Service.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.V1.ServiceSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ServiceSpec, io.kubernetes.client.proto.V1.ServiceSpec.Builder, io.kubernetes.client.proto.V1.ServiceSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * Spec defines the behavior of a service.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Spec defines the behavior of a service.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1.ServiceSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1.ServiceSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Spec defines the behavior of a service.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1.ServiceSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of a service.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1.ServiceSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of a service.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1.ServiceSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1.ServiceSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of a service.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Spec defines the behavior of a service.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Spec defines the behavior of a service.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1.ServiceSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * Spec defines the behavior of a service.
       * https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ServiceSpec, io.kubernetes.client.proto.V1.ServiceSpec.Builder, io.kubernetes.client.proto.V1.ServiceSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ServiceSpec, io.kubernetes.client.proto.V1.ServiceSpec.Builder, io.kubernetes.client.proto.V1.ServiceSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      private io.kubernetes.client.proto.V1.ServiceStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ServiceStatus, io.kubernetes.client.proto.V1.ServiceStatus.Builder, io.kubernetes.client.proto.V1.ServiceStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * Most recently observed status of the service.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Most recently observed status of the service.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1.ServiceStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1.ServiceStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Most recently observed status of the service.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1.ServiceStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the service.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1.ServiceStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the service.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1.ServiceStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1.ServiceStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the service.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Most recently observed status of the service.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Most recently observed status of the service.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1.ServiceStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * Most recently observed status of the service.
       * Populated by the system.
       * Read-only.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceStatus status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ServiceStatus, io.kubernetes.client.proto.V1.ServiceStatus.Builder, io.kubernetes.client.proto.V1.ServiceStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ServiceStatus, io.kubernetes.client.proto.V1.ServiceStatus.Builder, io.kubernetes.client.proto.V1.ServiceStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Service)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Service)
    private static final io.kubernetes.client.proto.V1.Service DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Service();
    }

    public static io.kubernetes.client.proto.V1.Service getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Service>
        PARSER = new com.google.protobuf.AbstractParser<Service>() {
      @java.lang.Override
      public Service 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<Service> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Service> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Service getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceAccountOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ServiceAccount)
      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>
     * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
     * This field should not be used to find auto-generated service account token secrets for use outside of pods.
     * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ObjectReference> 
        getSecretsList();
    /**
     * <pre>
     * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
     * This field should not be used to find auto-generated service account token secrets for use outside of pods.
     * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReference getSecrets(int index);
    /**
     * <pre>
     * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
     * This field should not be used to find auto-generated service account token secrets for use outside of pods.
     * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
     */
    int getSecretsCount();
    /**
     * <pre>
     * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
     * This field should not be used to find auto-generated service account token secrets for use outside of pods.
     * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
        getSecretsOrBuilderList();
    /**
     * <pre>
     * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
     * This field should not be used to find auto-generated service account token secrets for use outside of pods.
     * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getSecretsOrBuilder(
        int index);

    /**
     * <pre>
     * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
     * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
     * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference> 
        getImagePullSecretsList();
    /**
     * <pre>
     * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
     * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
     * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getImagePullSecrets(int index);
    /**
     * <pre>
     * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
     * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
     * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
     */
    int getImagePullSecretsCount();
    /**
     * <pre>
     * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
     * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
     * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
        getImagePullSecretsOrBuilderList();
    /**
     * <pre>
     * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
     * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
     * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getImagePullSecretsOrBuilder(
        int index);

    /**
     * <pre>
     * AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
     * Can be overridden at the pod level.
     * +optional
     * </pre>
     *
     * <code>optional bool automountServiceAccountToken = 4;</code>
     * @return Whether the automountServiceAccountToken field is set.
     */
    boolean hasAutomountServiceAccountToken();
    /**
     * <pre>
     * AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
     * Can be overridden at the pod level.
     * +optional
     * </pre>
     *
     * <code>optional bool automountServiceAccountToken = 4;</code>
     * @return The automountServiceAccountToken.
     */
    boolean getAutomountServiceAccountToken();
  }
  /**
   * <pre>
   * ServiceAccount binds together:
   * * a name, understood by users, and perhaps by peripheral systems, for an identity
   * * a principal that can be authenticated and authorized
   * * a set of secrets
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ServiceAccount}
   */
  public static final class ServiceAccount extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ServiceAccount)
      ServiceAccountOrBuilder {
  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= */ "",
        ServiceAccount.class.getName());
    }
    // Use ServiceAccount.newBuilder() to construct.
    private ServiceAccount(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ServiceAccount() {
      secrets_ = java.util.Collections.emptyList();
      imagePullSecrets_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccount_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccount_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ServiceAccount.class, io.kubernetes.client.proto.V1.ServiceAccount.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 SECRETS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ObjectReference> secrets_;
    /**
     * <pre>
     * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
     * This field should not be used to find auto-generated service account token secrets for use outside of pods.
     * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ObjectReference> getSecretsList() {
      return secrets_;
    }
    /**
     * <pre>
     * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
     * This field should not be used to find auto-generated service account token secrets for use outside of pods.
     * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
        getSecretsOrBuilderList() {
      return secrets_;
    }
    /**
     * <pre>
     * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
     * This field should not be used to find auto-generated service account token secrets for use outside of pods.
     * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
     */
    @java.lang.Override
    public int getSecretsCount() {
      return secrets_.size();
    }
    /**
     * <pre>
     * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
     * This field should not be used to find auto-generated service account token secrets for use outside of pods.
     * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReference getSecrets(int index) {
      return secrets_.get(index);
    }
    /**
     * <pre>
     * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
     * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
     * This field should not be used to find auto-generated service account token secrets for use outside of pods.
     * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
     * More info: https://kubernetes.io/docs/concepts/configuration/secret
     * +optional
     * +patchMergeKey=name
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=name
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getSecretsOrBuilder(
        int index) {
      return secrets_.get(index);
    }

    public static final int IMAGEPULLSECRETS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference> imagePullSecrets_;
    /**
     * <pre>
     * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
     * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
     * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference> getImagePullSecretsList() {
      return imagePullSecrets_;
    }
    /**
     * <pre>
     * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
     * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
     * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
        getImagePullSecretsOrBuilderList() {
      return imagePullSecrets_;
    }
    /**
     * <pre>
     * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
     * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
     * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
     */
    @java.lang.Override
    public int getImagePullSecretsCount() {
      return imagePullSecrets_.size();
    }
    /**
     * <pre>
     * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
     * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
     * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getImagePullSecrets(int index) {
      return imagePullSecrets_.get(index);
    }
    /**
     * <pre>
     * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
     * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
     * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
     * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getImagePullSecretsOrBuilder(
        int index) {
      return imagePullSecrets_.get(index);
    }

    public static final int AUTOMOUNTSERVICEACCOUNTTOKEN_FIELD_NUMBER = 4;
    private boolean automountServiceAccountToken_ = false;
    /**
     * <pre>
     * AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
     * Can be overridden at the pod level.
     * +optional
     * </pre>
     *
     * <code>optional bool automountServiceAccountToken = 4;</code>
     * @return Whether the automountServiceAccountToken field is set.
     */
    @java.lang.Override
    public boolean hasAutomountServiceAccountToken() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
     * Can be overridden at the pod level.
     * +optional
     * </pre>
     *
     * <code>optional bool automountServiceAccountToken = 4;</code>
     * @return The automountServiceAccountToken.
     */
    @java.lang.Override
    public boolean getAutomountServiceAccountToken() {
      return automountServiceAccountToken_;
    }

    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 < secrets_.size(); i++) {
        output.writeMessage(2, secrets_.get(i));
      }
      for (int i = 0; i < imagePullSecrets_.size(); i++) {
        output.writeMessage(3, imagePullSecrets_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(4, automountServiceAccountToken_);
      }
      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 < secrets_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, secrets_.get(i));
      }
      for (int i = 0; i < imagePullSecrets_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, imagePullSecrets_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, automountServiceAccountToken_);
      }
      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.V1.ServiceAccount)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ServiceAccount other = (io.kubernetes.client.proto.V1.ServiceAccount) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (!getSecretsList()
          .equals(other.getSecretsList())) return false;
      if (!getImagePullSecretsList()
          .equals(other.getImagePullSecretsList())) return false;
      if (hasAutomountServiceAccountToken() != other.hasAutomountServiceAccountToken()) return false;
      if (hasAutomountServiceAccountToken()) {
        if (getAutomountServiceAccountToken()
            != other.getAutomountServiceAccountToken()) 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 (getSecretsCount() > 0) {
        hash = (37 * hash) + SECRETS_FIELD_NUMBER;
        hash = (53 * hash) + getSecretsList().hashCode();
      }
      if (getImagePullSecretsCount() > 0) {
        hash = (37 * hash) + IMAGEPULLSECRETS_FIELD_NUMBER;
        hash = (53 * hash) + getImagePullSecretsList().hashCode();
      }
      if (hasAutomountServiceAccountToken()) {
        hash = (37 * hash) + AUTOMOUNTSERVICEACCOUNTTOKEN_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getAutomountServiceAccountToken());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ServiceAccount parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccount 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.V1.ServiceAccount parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccount 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.V1.ServiceAccount parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccount parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccount parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccount 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.V1.ServiceAccount parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ServiceAccount 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.V1.ServiceAccount parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccount 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.V1.ServiceAccount 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>
     * ServiceAccount binds together:
     * * a name, understood by users, and perhaps by peripheral systems, for an identity
     * * a principal that can be authenticated and authorized
     * * a set of secrets
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ServiceAccount}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ServiceAccount)
        io.kubernetes.client.proto.V1.ServiceAccountOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccount_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccount_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ServiceAccount.class, io.kubernetes.client.proto.V1.ServiceAccount.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ServiceAccount.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();
          getSecretsFieldBuilder();
          getImagePullSecretsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        if (secretsBuilder_ == null) {
          secrets_ = java.util.Collections.emptyList();
        } else {
          secrets_ = null;
          secretsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (imagePullSecretsBuilder_ == null) {
          imagePullSecrets_ = java.util.Collections.emptyList();
        } else {
          imagePullSecrets_ = null;
          imagePullSecretsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        automountServiceAccountToken_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccount_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceAccount getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ServiceAccount.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceAccount build() {
        io.kubernetes.client.proto.V1.ServiceAccount result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceAccount buildPartial() {
        io.kubernetes.client.proto.V1.ServiceAccount result = new io.kubernetes.client.proto.V1.ServiceAccount(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ServiceAccount result) {
        if (secretsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            secrets_ = java.util.Collections.unmodifiableList(secrets_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.secrets_ = secrets_;
        } else {
          result.secrets_ = secretsBuilder_.build();
        }
        if (imagePullSecretsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            imagePullSecrets_ = java.util.Collections.unmodifiableList(imagePullSecrets_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.imagePullSecrets_ = imagePullSecrets_;
        } else {
          result.imagePullSecrets_ = imagePullSecretsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ServiceAccount 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_ & 0x00000008) != 0)) {
          result.automountServiceAccountToken_ = automountServiceAccountToken_;
          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.V1.ServiceAccount) {
          return mergeFrom((io.kubernetes.client.proto.V1.ServiceAccount)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ServiceAccount other) {
        if (other == io.kubernetes.client.proto.V1.ServiceAccount.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (secretsBuilder_ == null) {
          if (!other.secrets_.isEmpty()) {
            if (secrets_.isEmpty()) {
              secrets_ = other.secrets_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSecretsIsMutable();
              secrets_.addAll(other.secrets_);
            }
            onChanged();
          }
        } else {
          if (!other.secrets_.isEmpty()) {
            if (secretsBuilder_.isEmpty()) {
              secretsBuilder_.dispose();
              secretsBuilder_ = null;
              secrets_ = other.secrets_;
              bitField0_ = (bitField0_ & ~0x00000002);
              secretsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSecretsFieldBuilder() : null;
            } else {
              secretsBuilder_.addAllMessages(other.secrets_);
            }
          }
        }
        if (imagePullSecretsBuilder_ == null) {
          if (!other.imagePullSecrets_.isEmpty()) {
            if (imagePullSecrets_.isEmpty()) {
              imagePullSecrets_ = other.imagePullSecrets_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureImagePullSecretsIsMutable();
              imagePullSecrets_.addAll(other.imagePullSecrets_);
            }
            onChanged();
          }
        } else {
          if (!other.imagePullSecrets_.isEmpty()) {
            if (imagePullSecretsBuilder_.isEmpty()) {
              imagePullSecretsBuilder_.dispose();
              imagePullSecretsBuilder_ = null;
              imagePullSecrets_ = other.imagePullSecrets_;
              bitField0_ = (bitField0_ & ~0x00000004);
              imagePullSecretsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getImagePullSecretsFieldBuilder() : null;
            } else {
              imagePullSecretsBuilder_.addAllMessages(other.imagePullSecrets_);
            }
          }
        }
        if (other.hasAutomountServiceAccountToken()) {
          setAutomountServiceAccountToken(other.getAutomountServiceAccountToken());
        }
        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.V1.ObjectReference m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ObjectReference.parser(),
                        extensionRegistry);
                if (secretsBuilder_ == null) {
                  ensureSecretsIsMutable();
                  secrets_.add(m);
                } else {
                  secretsBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                io.kubernetes.client.proto.V1.LocalObjectReference m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.LocalObjectReference.parser(),
                        extensionRegistry);
                if (imagePullSecretsBuilder_ == null) {
                  ensureImagePullSecretsIsMutable();
                  imagePullSecrets_.add(m);
                } else {
                  imagePullSecretsBuilder_.addMessage(m);
                }
                break;
              } // case 26
              case 32: {
                automountServiceAccountToken_ = input.readBool();
                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 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 java.util.List<io.kubernetes.client.proto.V1.ObjectReference> secrets_ =
        java.util.Collections.emptyList();
      private void ensureSecretsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          secrets_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ObjectReference>(secrets_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> secretsBuilder_;

      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ObjectReference> getSecretsList() {
        if (secretsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(secrets_);
        } else {
          return secretsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public int getSecretsCount() {
        if (secretsBuilder_ == null) {
          return secrets_.size();
        } else {
          return secretsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference getSecrets(int index) {
        if (secretsBuilder_ == null) {
          return secrets_.get(index);
        } else {
          return secretsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public Builder setSecrets(
          int index, io.kubernetes.client.proto.V1.ObjectReference value) {
        if (secretsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSecretsIsMutable();
          secrets_.set(index, value);
          onChanged();
        } else {
          secretsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public Builder setSecrets(
          int index, io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (secretsBuilder_ == null) {
          ensureSecretsIsMutable();
          secrets_.set(index, builderForValue.build());
          onChanged();
        } else {
          secretsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public Builder addSecrets(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (secretsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSecretsIsMutable();
          secrets_.add(value);
          onChanged();
        } else {
          secretsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public Builder addSecrets(
          int index, io.kubernetes.client.proto.V1.ObjectReference value) {
        if (secretsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSecretsIsMutable();
          secrets_.add(index, value);
          onChanged();
        } else {
          secretsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public Builder addSecrets(
          io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (secretsBuilder_ == null) {
          ensureSecretsIsMutable();
          secrets_.add(builderForValue.build());
          onChanged();
        } else {
          secretsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public Builder addSecrets(
          int index, io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (secretsBuilder_ == null) {
          ensureSecretsIsMutable();
          secrets_.add(index, builderForValue.build());
          onChanged();
        } else {
          secretsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public Builder addAllSecrets(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ObjectReference> values) {
        if (secretsBuilder_ == null) {
          ensureSecretsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, secrets_);
          onChanged();
        } else {
          secretsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public Builder clearSecrets() {
        if (secretsBuilder_ == null) {
          secrets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          secretsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public Builder removeSecrets(int index) {
        if (secretsBuilder_ == null) {
          ensureSecretsIsMutable();
          secrets_.remove(index);
          onChanged();
        } else {
          secretsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder getSecretsBuilder(
          int index) {
        return getSecretsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getSecretsOrBuilder(
          int index) {
        if (secretsBuilder_ == null) {
          return secrets_.get(index);  } else {
          return secretsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
           getSecretsOrBuilderList() {
        if (secretsBuilder_ != null) {
          return secretsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(secrets_);
        }
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder addSecretsBuilder() {
        return getSecretsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance());
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder addSecretsBuilder(
          int index) {
        return getSecretsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance());
      }
      /**
       * <pre>
       * Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use.
       * Pods are only limited to this list if this service account has a "kubernetes.io/enforce-mountable-secrets" annotation set to "true".
       * This field should not be used to find auto-generated service account token secrets for use outside of pods.
       * Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created.
       * More info: https://kubernetes.io/docs/concepts/configuration/secret
       * +optional
       * +patchMergeKey=name
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=name
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference secrets = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ObjectReference.Builder> 
           getSecretsBuilderList() {
        return getSecretsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
          getSecretsFieldBuilder() {
        if (secretsBuilder_ == null) {
          secretsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder>(
                  secrets_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          secrets_ = null;
        }
        return secretsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference> imagePullSecrets_ =
        java.util.Collections.emptyList();
      private void ensureImagePullSecretsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          imagePullSecrets_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.LocalObjectReference>(imagePullSecrets_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> imagePullSecretsBuilder_;

      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference> getImagePullSecretsList() {
        if (imagePullSecretsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(imagePullSecrets_);
        } else {
          return imagePullSecretsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public int getImagePullSecretsCount() {
        if (imagePullSecretsBuilder_ == null) {
          return imagePullSecrets_.size();
        } else {
          return imagePullSecretsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getImagePullSecrets(int index) {
        if (imagePullSecretsBuilder_ == null) {
          return imagePullSecrets_.get(index);
        } else {
          return imagePullSecretsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public Builder setImagePullSecrets(
          int index, io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (imagePullSecretsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.set(index, value);
          onChanged();
        } else {
          imagePullSecretsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public Builder setImagePullSecrets(
          int index, io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (imagePullSecretsBuilder_ == null) {
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.set(index, builderForValue.build());
          onChanged();
        } else {
          imagePullSecretsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public Builder addImagePullSecrets(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (imagePullSecretsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.add(value);
          onChanged();
        } else {
          imagePullSecretsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public Builder addImagePullSecrets(
          int index, io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (imagePullSecretsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.add(index, value);
          onChanged();
        } else {
          imagePullSecretsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public Builder addImagePullSecrets(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (imagePullSecretsBuilder_ == null) {
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.add(builderForValue.build());
          onChanged();
        } else {
          imagePullSecretsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public Builder addImagePullSecrets(
          int index, io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (imagePullSecretsBuilder_ == null) {
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.add(index, builderForValue.build());
          onChanged();
        } else {
          imagePullSecretsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public Builder addAllImagePullSecrets(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.LocalObjectReference> values) {
        if (imagePullSecretsBuilder_ == null) {
          ensureImagePullSecretsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, imagePullSecrets_);
          onChanged();
        } else {
          imagePullSecretsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public Builder clearImagePullSecrets() {
        if (imagePullSecretsBuilder_ == null) {
          imagePullSecrets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          imagePullSecretsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public Builder removeImagePullSecrets(int index) {
        if (imagePullSecretsBuilder_ == null) {
          ensureImagePullSecretsIsMutable();
          imagePullSecrets_.remove(index);
          onChanged();
        } else {
          imagePullSecretsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getImagePullSecretsBuilder(
          int index) {
        return getImagePullSecretsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getImagePullSecretsOrBuilder(
          int index) {
        if (imagePullSecretsBuilder_ == null) {
          return imagePullSecrets_.get(index);  } else {
          return imagePullSecretsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
           getImagePullSecretsOrBuilderList() {
        if (imagePullSecretsBuilder_ != null) {
          return imagePullSecretsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(imagePullSecrets_);
        }
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder addImagePullSecretsBuilder() {
        return getImagePullSecretsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance());
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder addImagePullSecretsBuilder(
          int index) {
        return getImagePullSecretsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance());
      }
      /**
       * <pre>
       * ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
       * in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
       * can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
       * More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.LocalObjectReference imagePullSecrets = 3;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.LocalObjectReference.Builder> 
           getImagePullSecretsBuilderList() {
        return getImagePullSecretsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getImagePullSecretsFieldBuilder() {
        if (imagePullSecretsBuilder_ == null) {
          imagePullSecretsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  imagePullSecrets_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          imagePullSecrets_ = null;
        }
        return imagePullSecretsBuilder_;
      }

      private boolean automountServiceAccountToken_ ;
      /**
       * <pre>
       * AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
       * Can be overridden at the pod level.
       * +optional
       * </pre>
       *
       * <code>optional bool automountServiceAccountToken = 4;</code>
       * @return Whether the automountServiceAccountToken field is set.
       */
      @java.lang.Override
      public boolean hasAutomountServiceAccountToken() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
       * Can be overridden at the pod level.
       * +optional
       * </pre>
       *
       * <code>optional bool automountServiceAccountToken = 4;</code>
       * @return The automountServiceAccountToken.
       */
      @java.lang.Override
      public boolean getAutomountServiceAccountToken() {
        return automountServiceAccountToken_;
      }
      /**
       * <pre>
       * AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
       * Can be overridden at the pod level.
       * +optional
       * </pre>
       *
       * <code>optional bool automountServiceAccountToken = 4;</code>
       * @param value The automountServiceAccountToken to set.
       * @return This builder for chaining.
       */
      public Builder setAutomountServiceAccountToken(boolean value) {

        automountServiceAccountToken_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
       * Can be overridden at the pod level.
       * +optional
       * </pre>
       *
       * <code>optional bool automountServiceAccountToken = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearAutomountServiceAccountToken() {
        bitField0_ = (bitField0_ & ~0x00000008);
        automountServiceAccountToken_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ServiceAccount)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ServiceAccount)
    private static final io.kubernetes.client.proto.V1.ServiceAccount DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ServiceAccount();
    }

    public static io.kubernetes.client.proto.V1.ServiceAccount getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServiceAccount>
        PARSER = new com.google.protobuf.AbstractParser<ServiceAccount>() {
      @java.lang.Override
      public ServiceAccount 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<ServiceAccount> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServiceAccount> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceAccount getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceAccountListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ServiceAccountList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * List of ServiceAccounts.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ServiceAccount> 
        getItemsList();
    /**
     * <pre>
     * List of ServiceAccounts.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ServiceAccount getItems(int index);
    /**
     * <pre>
     * List of ServiceAccounts.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * List of ServiceAccounts.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ServiceAccountOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * List of ServiceAccounts.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ServiceAccountOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ServiceAccountList is a list of ServiceAccount objects
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ServiceAccountList}
   */
  public static final class ServiceAccountList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ServiceAccountList)
      ServiceAccountListOrBuilder {
  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= */ "",
        ServiceAccountList.class.getName());
    }
    // Use ServiceAccountList.newBuilder() to construct.
    private ServiceAccountList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ServiceAccountList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccountList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccountList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ServiceAccountList.class, io.kubernetes.client.proto.V1.ServiceAccountList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.ServiceAccount> items_;
    /**
     * <pre>
     * List of ServiceAccounts.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ServiceAccount> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * List of ServiceAccounts.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ServiceAccountOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * List of ServiceAccounts.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * List of ServiceAccounts.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceAccount getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * List of ServiceAccounts.
     * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceAccountOrBuilder 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.V1.ServiceAccountList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ServiceAccountList other = (io.kubernetes.client.proto.V1.ServiceAccountList) 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.V1.ServiceAccountList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountList 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.V1.ServiceAccountList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountList 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.V1.ServiceAccountList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountList 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.V1.ServiceAccountList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ServiceAccountList 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.V1.ServiceAccountList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountList 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.V1.ServiceAccountList 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>
     * ServiceAccountList is a list of ServiceAccount objects
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ServiceAccountList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ServiceAccountList)
        io.kubernetes.client.proto.V1.ServiceAccountListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccountList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccountList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ServiceAccountList.class, io.kubernetes.client.proto.V1.ServiceAccountList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ServiceAccountList.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.V1.internal_static_k8s_io_api_core_v1_ServiceAccountList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceAccountList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ServiceAccountList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceAccountList build() {
        io.kubernetes.client.proto.V1.ServiceAccountList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceAccountList buildPartial() {
        io.kubernetes.client.proto.V1.ServiceAccountList result = new io.kubernetes.client.proto.V1.ServiceAccountList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ServiceAccountList 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.V1.ServiceAccountList 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.V1.ServiceAccountList) {
          return mergeFrom((io.kubernetes.client.proto.V1.ServiceAccountList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ServiceAccountList other) {
        if (other == io.kubernetes.client.proto.V1.ServiceAccountList.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.V1.ServiceAccount m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ServiceAccount.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.ServiceAccount> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ServiceAccount>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ServiceAccount, io.kubernetes.client.proto.V1.ServiceAccount.Builder, io.kubernetes.client.proto.V1.ServiceAccountOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ServiceAccount> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceAccount getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.ServiceAccount value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.ServiceAccount.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.ServiceAccount value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.ServiceAccount value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.ServiceAccount.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.ServiceAccount.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ServiceAccount> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceAccount.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceAccountOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ServiceAccountOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceAccount.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ServiceAccount.getDefaultInstance());
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceAccount.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ServiceAccount.getDefaultInstance());
      }
      /**
       * <pre>
       * List of ServiceAccounts.
       * More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServiceAccount items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ServiceAccount.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ServiceAccount, io.kubernetes.client.proto.V1.ServiceAccount.Builder, io.kubernetes.client.proto.V1.ServiceAccountOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ServiceAccount, io.kubernetes.client.proto.V1.ServiceAccount.Builder, io.kubernetes.client.proto.V1.ServiceAccountOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ServiceAccountList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ServiceAccountList)
    private static final io.kubernetes.client.proto.V1.ServiceAccountList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ServiceAccountList();
    }

    public static io.kubernetes.client.proto.V1.ServiceAccountList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServiceAccountList>
        PARSER = new com.google.protobuf.AbstractParser<ServiceAccountList>() {
      @java.lang.Override
      public ServiceAccountList 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<ServiceAccountList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServiceAccountList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceAccountList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceAccountTokenProjectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ServiceAccountTokenProjection)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * audience is the intended audience of the token. A recipient of a token
     * must identify itself with an identifier specified in the audience of the
     * token, and otherwise should reject the token. The audience defaults to the
     * identifier of the apiserver.
     * +optional
     * </pre>
     *
     * <code>optional string audience = 1;</code>
     * @return Whether the audience field is set.
     */
    boolean hasAudience();
    /**
     * <pre>
     * audience is the intended audience of the token. A recipient of a token
     * must identify itself with an identifier specified in the audience of the
     * token, and otherwise should reject the token. The audience defaults to the
     * identifier of the apiserver.
     * +optional
     * </pre>
     *
     * <code>optional string audience = 1;</code>
     * @return The audience.
     */
    java.lang.String getAudience();
    /**
     * <pre>
     * audience is the intended audience of the token. A recipient of a token
     * must identify itself with an identifier specified in the audience of the
     * token, and otherwise should reject the token. The audience defaults to the
     * identifier of the apiserver.
     * +optional
     * </pre>
     *
     * <code>optional string audience = 1;</code>
     * @return The bytes for audience.
     */
    com.google.protobuf.ByteString
        getAudienceBytes();

    /**
     * <pre>
     * expirationSeconds is the requested duration of validity of the service
     * account token. As the token approaches expiration, the kubelet volume
     * plugin will proactively rotate the service account token. The kubelet will
     * start trying to rotate the token if the token is older than 80 percent of
     * its time to live or if the token is older than 24 hours.Defaults to 1 hour
     * and must be at least 10 minutes.
     * +optional
     * </pre>
     *
     * <code>optional int64 expirationSeconds = 2;</code>
     * @return Whether the expirationSeconds field is set.
     */
    boolean hasExpirationSeconds();
    /**
     * <pre>
     * expirationSeconds is the requested duration of validity of the service
     * account token. As the token approaches expiration, the kubelet volume
     * plugin will proactively rotate the service account token. The kubelet will
     * start trying to rotate the token if the token is older than 80 percent of
     * its time to live or if the token is older than 24 hours.Defaults to 1 hour
     * and must be at least 10 minutes.
     * +optional
     * </pre>
     *
     * <code>optional int64 expirationSeconds = 2;</code>
     * @return The expirationSeconds.
     */
    long getExpirationSeconds();

    /**
     * <pre>
     * path is the path relative to the mount point of the file to project the
     * token into.
     * </pre>
     *
     * <code>optional string path = 3;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * path is the path relative to the mount point of the file to project the
     * token into.
     * </pre>
     *
     * <code>optional string path = 3;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path is the path relative to the mount point of the file to project the
     * token into.
     * </pre>
     *
     * <code>optional string path = 3;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();
  }
  /**
   * <pre>
   * ServiceAccountTokenProjection represents a projected service account token
   * volume. This projection can be used to insert a service account token into
   * the pods runtime filesystem for use against APIs (Kubernetes API Server or
   * otherwise).
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ServiceAccountTokenProjection}
   */
  public static final class ServiceAccountTokenProjection extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ServiceAccountTokenProjection)
      ServiceAccountTokenProjectionOrBuilder {
  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= */ "",
        ServiceAccountTokenProjection.class.getName());
    }
    // Use ServiceAccountTokenProjection.newBuilder() to construct.
    private ServiceAccountTokenProjection(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ServiceAccountTokenProjection() {
      audience_ = "";
      path_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccountTokenProjection_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccountTokenProjection_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.class, io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.Builder.class);
    }

    private int bitField0_;
    public static final int AUDIENCE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object audience_ = "";
    /**
     * <pre>
     * audience is the intended audience of the token. A recipient of a token
     * must identify itself with an identifier specified in the audience of the
     * token, and otherwise should reject the token. The audience defaults to the
     * identifier of the apiserver.
     * +optional
     * </pre>
     *
     * <code>optional string audience = 1;</code>
     * @return Whether the audience field is set.
     */
    @java.lang.Override
    public boolean hasAudience() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * audience is the intended audience of the token. A recipient of a token
     * must identify itself with an identifier specified in the audience of the
     * token, and otherwise should reject the token. The audience defaults to the
     * identifier of the apiserver.
     * +optional
     * </pre>
     *
     * <code>optional string audience = 1;</code>
     * @return The audience.
     */
    @java.lang.Override
    public java.lang.String getAudience() {
      java.lang.Object ref = audience_;
      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()) {
          audience_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * audience is the intended audience of the token. A recipient of a token
     * must identify itself with an identifier specified in the audience of the
     * token, and otherwise should reject the token. The audience defaults to the
     * identifier of the apiserver.
     * +optional
     * </pre>
     *
     * <code>optional string audience = 1;</code>
     * @return The bytes for audience.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAudienceBytes() {
      java.lang.Object ref = audience_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        audience_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXPIRATIONSECONDS_FIELD_NUMBER = 2;
    private long expirationSeconds_ = 0L;
    /**
     * <pre>
     * expirationSeconds is the requested duration of validity of the service
     * account token. As the token approaches expiration, the kubelet volume
     * plugin will proactively rotate the service account token. The kubelet will
     * start trying to rotate the token if the token is older than 80 percent of
     * its time to live or if the token is older than 24 hours.Defaults to 1 hour
     * and must be at least 10 minutes.
     * +optional
     * </pre>
     *
     * <code>optional int64 expirationSeconds = 2;</code>
     * @return Whether the expirationSeconds field is set.
     */
    @java.lang.Override
    public boolean hasExpirationSeconds() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * expirationSeconds is the requested duration of validity of the service
     * account token. As the token approaches expiration, the kubelet volume
     * plugin will proactively rotate the service account token. The kubelet will
     * start trying to rotate the token if the token is older than 80 percent of
     * its time to live or if the token is older than 24 hours.Defaults to 1 hour
     * and must be at least 10 minutes.
     * +optional
     * </pre>
     *
     * <code>optional int64 expirationSeconds = 2;</code>
     * @return The expirationSeconds.
     */
    @java.lang.Override
    public long getExpirationSeconds() {
      return expirationSeconds_;
    }

    public static final int PATH_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * path is the path relative to the mount point of the file to project the
     * token into.
     * </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 the path relative to the mount point of the file to project the
     * token into.
     * </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 the path relative to the mount point of the file to project the
     * token into.
     * </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;
      }
    }

    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, audience_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt64(2, expirationSeconds_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, path_);
      }
      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, audience_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, expirationSeconds_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, path_);
      }
      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.V1.ServiceAccountTokenProjection)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ServiceAccountTokenProjection other = (io.kubernetes.client.proto.V1.ServiceAccountTokenProjection) obj;

      if (hasAudience() != other.hasAudience()) return false;
      if (hasAudience()) {
        if (!getAudience()
            .equals(other.getAudience())) return false;
      }
      if (hasExpirationSeconds() != other.hasExpirationSeconds()) return false;
      if (hasExpirationSeconds()) {
        if (getExpirationSeconds()
            != other.getExpirationSeconds()) return false;
      }
      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) 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 (hasAudience()) {
        hash = (37 * hash) + AUDIENCE_FIELD_NUMBER;
        hash = (53 * hash) + getAudience().hashCode();
      }
      if (hasExpirationSeconds()) {
        hash = (37 * hash) + EXPIRATIONSECONDS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getExpirationSeconds());
      }
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ServiceAccountTokenProjection parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountTokenProjection 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.V1.ServiceAccountTokenProjection parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountTokenProjection 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.V1.ServiceAccountTokenProjection parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountTokenProjection parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountTokenProjection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountTokenProjection 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.V1.ServiceAccountTokenProjection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ServiceAccountTokenProjection 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.V1.ServiceAccountTokenProjection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceAccountTokenProjection 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.V1.ServiceAccountTokenProjection 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>
     * ServiceAccountTokenProjection represents a projected service account token
     * volume. This projection can be used to insert a service account token into
     * the pods runtime filesystem for use against APIs (Kubernetes API Server or
     * otherwise).
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ServiceAccountTokenProjection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ServiceAccountTokenProjection)
        io.kubernetes.client.proto.V1.ServiceAccountTokenProjectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccountTokenProjection_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccountTokenProjection_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.class, io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        audience_ = "";
        expirationSeconds_ = 0L;
        path_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceAccountTokenProjection_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceAccountTokenProjection getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceAccountTokenProjection build() {
        io.kubernetes.client.proto.V1.ServiceAccountTokenProjection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceAccountTokenProjection buildPartial() {
        io.kubernetes.client.proto.V1.ServiceAccountTokenProjection result = new io.kubernetes.client.proto.V1.ServiceAccountTokenProjection(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ServiceAccountTokenProjection result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.audience_ = audience_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.expirationSeconds_ = expirationSeconds_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.path_ = path_;
          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.V1.ServiceAccountTokenProjection) {
          return mergeFrom((io.kubernetes.client.proto.V1.ServiceAccountTokenProjection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ServiceAccountTokenProjection other) {
        if (other == io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.getDefaultInstance()) return this;
        if (other.hasAudience()) {
          audience_ = other.audience_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasExpirationSeconds()) {
          setExpirationSeconds(other.getExpirationSeconds());
        }
        if (other.hasPath()) {
          path_ = other.path_;
          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: {
                audience_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                expirationSeconds_ = input.readInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                path_ = 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 audience_ = "";
      /**
       * <pre>
       * audience is the intended audience of the token. A recipient of a token
       * must identify itself with an identifier specified in the audience of the
       * token, and otherwise should reject the token. The audience defaults to the
       * identifier of the apiserver.
       * +optional
       * </pre>
       *
       * <code>optional string audience = 1;</code>
       * @return Whether the audience field is set.
       */
      public boolean hasAudience() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * audience is the intended audience of the token. A recipient of a token
       * must identify itself with an identifier specified in the audience of the
       * token, and otherwise should reject the token. The audience defaults to the
       * identifier of the apiserver.
       * +optional
       * </pre>
       *
       * <code>optional string audience = 1;</code>
       * @return The audience.
       */
      public java.lang.String getAudience() {
        java.lang.Object ref = audience_;
        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()) {
            audience_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * audience is the intended audience of the token. A recipient of a token
       * must identify itself with an identifier specified in the audience of the
       * token, and otherwise should reject the token. The audience defaults to the
       * identifier of the apiserver.
       * +optional
       * </pre>
       *
       * <code>optional string audience = 1;</code>
       * @return The bytes for audience.
       */
      public com.google.protobuf.ByteString
          getAudienceBytes() {
        java.lang.Object ref = audience_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          audience_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * audience is the intended audience of the token. A recipient of a token
       * must identify itself with an identifier specified in the audience of the
       * token, and otherwise should reject the token. The audience defaults to the
       * identifier of the apiserver.
       * +optional
       * </pre>
       *
       * <code>optional string audience = 1;</code>
       * @param value The audience to set.
       * @return This builder for chaining.
       */
      public Builder setAudience(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        audience_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * audience is the intended audience of the token. A recipient of a token
       * must identify itself with an identifier specified in the audience of the
       * token, and otherwise should reject the token. The audience defaults to the
       * identifier of the apiserver.
       * +optional
       * </pre>
       *
       * <code>optional string audience = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAudience() {
        audience_ = getDefaultInstance().getAudience();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * audience is the intended audience of the token. A recipient of a token
       * must identify itself with an identifier specified in the audience of the
       * token, and otherwise should reject the token. The audience defaults to the
       * identifier of the apiserver.
       * +optional
       * </pre>
       *
       * <code>optional string audience = 1;</code>
       * @param value The bytes for audience to set.
       * @return This builder for chaining.
       */
      public Builder setAudienceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        audience_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private long expirationSeconds_ ;
      /**
       * <pre>
       * expirationSeconds is the requested duration of validity of the service
       * account token. As the token approaches expiration, the kubelet volume
       * plugin will proactively rotate the service account token. The kubelet will
       * start trying to rotate the token if the token is older than 80 percent of
       * its time to live or if the token is older than 24 hours.Defaults to 1 hour
       * and must be at least 10 minutes.
       * +optional
       * </pre>
       *
       * <code>optional int64 expirationSeconds = 2;</code>
       * @return Whether the expirationSeconds field is set.
       */
      @java.lang.Override
      public boolean hasExpirationSeconds() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * expirationSeconds is the requested duration of validity of the service
       * account token. As the token approaches expiration, the kubelet volume
       * plugin will proactively rotate the service account token. The kubelet will
       * start trying to rotate the token if the token is older than 80 percent of
       * its time to live or if the token is older than 24 hours.Defaults to 1 hour
       * and must be at least 10 minutes.
       * +optional
       * </pre>
       *
       * <code>optional int64 expirationSeconds = 2;</code>
       * @return The expirationSeconds.
       */
      @java.lang.Override
      public long getExpirationSeconds() {
        return expirationSeconds_;
      }
      /**
       * <pre>
       * expirationSeconds is the requested duration of validity of the service
       * account token. As the token approaches expiration, the kubelet volume
       * plugin will proactively rotate the service account token. The kubelet will
       * start trying to rotate the token if the token is older than 80 percent of
       * its time to live or if the token is older than 24 hours.Defaults to 1 hour
       * and must be at least 10 minutes.
       * +optional
       * </pre>
       *
       * <code>optional int64 expirationSeconds = 2;</code>
       * @param value The expirationSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setExpirationSeconds(long value) {

        expirationSeconds_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * expirationSeconds is the requested duration of validity of the service
       * account token. As the token approaches expiration, the kubelet volume
       * plugin will proactively rotate the service account token. The kubelet will
       * start trying to rotate the token if the token is older than 80 percent of
       * its time to live or if the token is older than 24 hours.Defaults to 1 hour
       * and must be at least 10 minutes.
       * +optional
       * </pre>
       *
       * <code>optional int64 expirationSeconds = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearExpirationSeconds() {
        bitField0_ = (bitField0_ & ~0x00000002);
        expirationSeconds_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * path is the path relative to the mount point of the file to project the
       * token into.
       * </pre>
       *
       * <code>optional string path = 3;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * path is the path relative to the mount point of the file to project the
       * token into.
       * </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 the path relative to the mount point of the file to project the
       * token into.
       * </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 the path relative to the mount point of the file to project the
       * token into.
       * </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 the path relative to the mount point of the file to project the
       * token into.
       * </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 the path relative to the mount point of the file to project the
       * token into.
       * </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;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ServiceAccountTokenProjection)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ServiceAccountTokenProjection)
    private static final io.kubernetes.client.proto.V1.ServiceAccountTokenProjection DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ServiceAccountTokenProjection();
    }

    public static io.kubernetes.client.proto.V1.ServiceAccountTokenProjection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServiceAccountTokenProjection>
        PARSER = new com.google.protobuf.AbstractParser<ServiceAccountTokenProjection>() {
      @java.lang.Override
      public ServiceAccountTokenProjection 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<ServiceAccountTokenProjection> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServiceAccountTokenProjection> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceAccountTokenProjection getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ServiceList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * List of services
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.Service> 
        getItemsList();
    /**
     * <pre>
     * List of services
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
     */
    io.kubernetes.client.proto.V1.Service getItems(int index);
    /**
     * <pre>
     * List of services
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * List of services
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ServiceOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * List of services
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
     */
    io.kubernetes.client.proto.V1.ServiceOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ServiceList holds a list of services.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ServiceList}
   */
  public static final class ServiceList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ServiceList)
      ServiceListOrBuilder {
  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= */ "",
        ServiceList.class.getName());
    }
    // Use ServiceList.newBuilder() to construct.
    private ServiceList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ServiceList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ServiceList.class, io.kubernetes.client.proto.V1.ServiceList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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 list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
     * +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.V1.Service> items_;
    /**
     * <pre>
     * List of services
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.Service> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * List of services
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ServiceOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * List of services
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * List of services
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.Service getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * List of services
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceOrBuilder 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.V1.ServiceList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ServiceList other = (io.kubernetes.client.proto.V1.ServiceList) 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.V1.ServiceList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceList 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.V1.ServiceList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceList 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.V1.ServiceList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ServiceList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceList 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.V1.ServiceList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ServiceList 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.V1.ServiceList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceList 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.V1.ServiceList 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>
     * ServiceList holds a list of services.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ServiceList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ServiceList)
        io.kubernetes.client.proto.V1.ServiceListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ServiceList.class, io.kubernetes.client.proto.V1.ServiceList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ServiceList.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.V1.internal_static_k8s_io_api_core_v1_ServiceList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ServiceList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceList build() {
        io.kubernetes.client.proto.V1.ServiceList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceList buildPartial() {
        io.kubernetes.client.proto.V1.ServiceList result = new io.kubernetes.client.proto.V1.ServiceList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ServiceList 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.V1.ServiceList 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.V1.ServiceList) {
          return mergeFrom((io.kubernetes.client.proto.V1.ServiceList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ServiceList other) {
        if (other == io.kubernetes.client.proto.V1.ServiceList.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.V1.Service m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.Service.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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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 list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
       * +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.V1.Service> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.Service>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Service, io.kubernetes.client.proto.V1.Service.Builder, io.kubernetes.client.proto.V1.ServiceOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Service> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Service getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.Service value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1.Service.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1.Service value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.Service value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1.Service.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1.Service.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.Service> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Service.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ServiceOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Service.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.Service.getDefaultInstance());
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public io.kubernetes.client.proto.V1.Service.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.Service.getDefaultInstance());
      }
      /**
       * <pre>
       * List of services
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.Service items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.Service.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.Service, io.kubernetes.client.proto.V1.Service.Builder, io.kubernetes.client.proto.V1.ServiceOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.Service, io.kubernetes.client.proto.V1.Service.Builder, io.kubernetes.client.proto.V1.ServiceOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ServiceList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ServiceList)
    private static final io.kubernetes.client.proto.V1.ServiceList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ServiceList();
    }

    public static io.kubernetes.client.proto.V1.ServiceList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServiceList>
        PARSER = new com.google.protobuf.AbstractParser<ServiceList>() {
      @java.lang.Override
      public ServiceList 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<ServiceList> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServiceList> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServicePortOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ServicePort)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The name of this port within the service. This must be a DNS_LABEL.
     * All ports within a ServiceSpec must have unique names. When considering
     * the endpoints for a Service, this must match the 'name' field in the
     * EndpointPort.
     * Optional if only one ServicePort is defined on this service.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * The name of this port within the service. This must be a DNS_LABEL.
     * All ports within a ServiceSpec must have unique names. When considering
     * the endpoints for a Service, this must match the 'name' field in the
     * EndpointPort.
     * Optional if only one ServicePort is defined on this service.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * The name of this port within the service. This must be a DNS_LABEL.
     * All ports within a ServiceSpec must have unique names. When considering
     * the endpoints for a Service, this must match the 'name' field in the
     * EndpointPort.
     * Optional if only one ServicePort is defined on this service.
     * +optional
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
     * Default is TCP.
     * +default="TCP"
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return Whether the protocol field is set.
     */
    boolean hasProtocol();
    /**
     * <pre>
     * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
     * Default is TCP.
     * +default="TCP"
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return The protocol.
     */
    java.lang.String getProtocol();
    /**
     * <pre>
     * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
     * Default is TCP.
     * +default="TCP"
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return The bytes for protocol.
     */
    com.google.protobuf.ByteString
        getProtocolBytes();

    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 6;</code>
     * @return Whether the appProtocol field is set.
     */
    boolean hasAppProtocol();
    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 6;</code>
     * @return The appProtocol.
     */
    java.lang.String getAppProtocol();
    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 6;</code>
     * @return The bytes for appProtocol.
     */
    com.google.protobuf.ByteString
        getAppProtocolBytes();

    /**
     * <pre>
     * The port that will be exposed by this service.
     * </pre>
     *
     * <code>optional int32 port = 3;</code>
     * @return Whether the port field is set.
     */
    boolean hasPort();
    /**
     * <pre>
     * The port that will be exposed by this service.
     * </pre>
     *
     * <code>optional int32 port = 3;</code>
     * @return The port.
     */
    int getPort();

    /**
     * <pre>
     * Number or name of the port to access on the pods targeted by the service.
     * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
     * If this is a string, it will be looked up as a named port in the
     * target Pod's container ports. If this is not specified, the value
     * of the 'port' field is used (an identity map).
     * This field is ignored for services with clusterIP=None, and should be
     * omitted or set equal to the 'port' field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
     * @return Whether the targetPort field is set.
     */
    boolean hasTargetPort();
    /**
     * <pre>
     * Number or name of the port to access on the pods targeted by the service.
     * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
     * If this is a string, it will be looked up as a named port in the
     * target Pod's container ports. If this is not specified, the value
     * of the 'port' field is used (an identity map).
     * This field is ignored for services with clusterIP=None, and should be
     * omitted or set equal to the 'port' field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
     * @return The targetPort.
     */
    io.kubernetes.client.proto.IntStr.IntOrString getTargetPort();
    /**
     * <pre>
     * Number or name of the port to access on the pods targeted by the service.
     * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
     * If this is a string, it will be looked up as a named port in the
     * target Pod's container ports. If this is not specified, the value
     * of the 'port' field is used (an identity map).
     * This field is ignored for services with clusterIP=None, and should be
     * omitted or set equal to the 'port' field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
     */
    io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder getTargetPortOrBuilder();

    /**
     * <pre>
     * The port on each node on which this service is exposed when type is
     * NodePort or LoadBalancer.  Usually assigned by the system. If a value is
     * specified, in-range, and not in use it will be used, otherwise the
     * operation will fail.  If not specified, a port will be allocated if this
     * Service requires one.  If this field is specified when creating a
     * Service which does not need it, creation will fail. This field will be
     * wiped when updating a Service to no longer need it (e.g. changing type
     * from NodePort to ClusterIP).
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
     * +optional
     * </pre>
     *
     * <code>optional int32 nodePort = 5;</code>
     * @return Whether the nodePort field is set.
     */
    boolean hasNodePort();
    /**
     * <pre>
     * The port on each node on which this service is exposed when type is
     * NodePort or LoadBalancer.  Usually assigned by the system. If a value is
     * specified, in-range, and not in use it will be used, otherwise the
     * operation will fail.  If not specified, a port will be allocated if this
     * Service requires one.  If this field is specified when creating a
     * Service which does not need it, creation will fail. This field will be
     * wiped when updating a Service to no longer need it (e.g. changing type
     * from NodePort to ClusterIP).
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
     * +optional
     * </pre>
     *
     * <code>optional int32 nodePort = 5;</code>
     * @return The nodePort.
     */
    int getNodePort();
  }
  /**
   * <pre>
   * ServicePort contains information on service's port.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ServicePort}
   */
  public static final class ServicePort extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ServicePort)
      ServicePortOrBuilder {
  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= */ "",
        ServicePort.class.getName());
    }
    // Use ServicePort.newBuilder() to construct.
    private ServicePort(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ServicePort() {
      name_ = "";
      protocol_ = "";
      appProtocol_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServicePort_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServicePort_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ServicePort.class, io.kubernetes.client.proto.V1.ServicePort.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * The name of this port within the service. This must be a DNS_LABEL.
     * All ports within a ServiceSpec must have unique names. When considering
     * the endpoints for a Service, this must match the 'name' field in the
     * EndpointPort.
     * Optional if only one ServicePort is defined on this service.
     * +optional
     * </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>
     * The name of this port within the service. This must be a DNS_LABEL.
     * All ports within a ServiceSpec must have unique names. When considering
     * the endpoints for a Service, this must match the 'name' field in the
     * EndpointPort.
     * Optional if only one ServicePort is defined on this service.
     * +optional
     * </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>
     * The name of this port within the service. This must be a DNS_LABEL.
     * All ports within a ServiceSpec must have unique names. When considering
     * the endpoints for a Service, this must match the 'name' field in the
     * EndpointPort.
     * Optional if only one ServicePort is defined on this service.
     * +optional
     * </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 PROTOCOL_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object protocol_ = "";
    /**
     * <pre>
     * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
     * Default is TCP.
     * +default="TCP"
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return Whether the protocol field is set.
     */
    @java.lang.Override
    public boolean hasProtocol() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
     * Default is TCP.
     * +default="TCP"
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return The protocol.
     */
    @java.lang.Override
    public java.lang.String getProtocol() {
      java.lang.Object ref = protocol_;
      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()) {
          protocol_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
     * Default is TCP.
     * +default="TCP"
     * +optional
     * </pre>
     *
     * <code>optional string protocol = 2;</code>
     * @return The bytes for protocol.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getProtocolBytes() {
      java.lang.Object ref = protocol_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        protocol_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int APPPROTOCOL_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object appProtocol_ = "";
    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 6;</code>
     * @return Whether the appProtocol field is set.
     */
    @java.lang.Override
    public boolean hasAppProtocol() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 6;</code>
     * @return The appProtocol.
     */
    @java.lang.Override
    public java.lang.String getAppProtocol() {
      java.lang.Object ref = appProtocol_;
      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()) {
          appProtocol_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The application protocol for this port.
     * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
     * This field follows standard Kubernetes label syntax.
     * Valid values are either:
     *
     * * Un-prefixed protocol names - reserved for IANA standard service names (as per
     * RFC-6335 and https://www.iana.org/assignments/service-names).
     *
     * * Kubernetes-defined prefixed names:
     * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
     * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
     * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
     *
     * * Other protocols should use implementation-defined prefixed names such as
     * mycompany.com/my-custom-protocol.
     * +optional
     * </pre>
     *
     * <code>optional string appProtocol = 6;</code>
     * @return The bytes for appProtocol.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAppProtocolBytes() {
      java.lang.Object ref = appProtocol_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        appProtocol_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PORT_FIELD_NUMBER = 3;
    private int port_ = 0;
    /**
     * <pre>
     * The port that will be exposed by this service.
     * </pre>
     *
     * <code>optional int32 port = 3;</code>
     * @return Whether the port field is set.
     */
    @java.lang.Override
    public boolean hasPort() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * The port that will be exposed by this service.
     * </pre>
     *
     * <code>optional int32 port = 3;</code>
     * @return The port.
     */
    @java.lang.Override
    public int getPort() {
      return port_;
    }

    public static final int TARGETPORT_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.IntStr.IntOrString targetPort_;
    /**
     * <pre>
     * Number or name of the port to access on the pods targeted by the service.
     * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
     * If this is a string, it will be looked up as a named port in the
     * target Pod's container ports. If this is not specified, the value
     * of the 'port' field is used (an identity map).
     * This field is ignored for services with clusterIP=None, and should be
     * omitted or set equal to the 'port' field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
     * @return Whether the targetPort field is set.
     */
    @java.lang.Override
    public boolean hasTargetPort() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * Number or name of the port to access on the pods targeted by the service.
     * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
     * If this is a string, it will be looked up as a named port in the
     * target Pod's container ports. If this is not specified, the value
     * of the 'port' field is used (an identity map).
     * This field is ignored for services with clusterIP=None, and should be
     * omitted or set equal to the 'port' field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
     * @return The targetPort.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.IntStr.IntOrString getTargetPort() {
      return targetPort_ == null ? io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : targetPort_;
    }
    /**
     * <pre>
     * Number or name of the port to access on the pods targeted by the service.
     * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
     * If this is a string, it will be looked up as a named port in the
     * target Pod's container ports. If this is not specified, the value
     * of the 'port' field is used (an identity map).
     * This field is ignored for services with clusterIP=None, and should be
     * omitted or set equal to the 'port' field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder getTargetPortOrBuilder() {
      return targetPort_ == null ? io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : targetPort_;
    }

    public static final int NODEPORT_FIELD_NUMBER = 5;
    private int nodePort_ = 0;
    /**
     * <pre>
     * The port on each node on which this service is exposed when type is
     * NodePort or LoadBalancer.  Usually assigned by the system. If a value is
     * specified, in-range, and not in use it will be used, otherwise the
     * operation will fail.  If not specified, a port will be allocated if this
     * Service requires one.  If this field is specified when creating a
     * Service which does not need it, creation will fail. This field will be
     * wiped when updating a Service to no longer need it (e.g. changing type
     * from NodePort to ClusterIP).
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
     * +optional
     * </pre>
     *
     * <code>optional int32 nodePort = 5;</code>
     * @return Whether the nodePort field is set.
     */
    @java.lang.Override
    public boolean hasNodePort() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * The port on each node on which this service is exposed when type is
     * NodePort or LoadBalancer.  Usually assigned by the system. If a value is
     * specified, in-range, and not in use it will be used, otherwise the
     * operation will fail.  If not specified, a port will be allocated if this
     * Service requires one.  If this field is specified when creating a
     * Service which does not need it, creation will fail. This field will be
     * wiped when updating a Service to no longer need it (e.g. changing type
     * from NodePort to ClusterIP).
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
     * +optional
     * </pre>
     *
     * <code>optional int32 nodePort = 5;</code>
     * @return The nodePort.
     */
    @java.lang.Override
    public int getNodePort() {
      return nodePort_;
    }

    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, protocol_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt32(3, port_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(4, getTargetPort());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeInt32(5, nodePort_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, appProtocol_);
      }
      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, protocol_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, port_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getTargetPort());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, nodePort_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, appProtocol_);
      }
      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.V1.ServicePort)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ServicePort other = (io.kubernetes.client.proto.V1.ServicePort) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasProtocol() != other.hasProtocol()) return false;
      if (hasProtocol()) {
        if (!getProtocol()
            .equals(other.getProtocol())) return false;
      }
      if (hasAppProtocol() != other.hasAppProtocol()) return false;
      if (hasAppProtocol()) {
        if (!getAppProtocol()
            .equals(other.getAppProtocol())) return false;
      }
      if (hasPort() != other.hasPort()) return false;
      if (hasPort()) {
        if (getPort()
            != other.getPort()) return false;
      }
      if (hasTargetPort() != other.hasTargetPort()) return false;
      if (hasTargetPort()) {
        if (!getTargetPort()
            .equals(other.getTargetPort())) return false;
      }
      if (hasNodePort() != other.hasNodePort()) return false;
      if (hasNodePort()) {
        if (getNodePort()
            != other.getNodePort()) 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 (hasProtocol()) {
        hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
        hash = (53 * hash) + getProtocol().hashCode();
      }
      if (hasAppProtocol()) {
        hash = (37 * hash) + APPPROTOCOL_FIELD_NUMBER;
        hash = (53 * hash) + getAppProtocol().hashCode();
      }
      if (hasPort()) {
        hash = (37 * hash) + PORT_FIELD_NUMBER;
        hash = (53 * hash) + getPort();
      }
      if (hasTargetPort()) {
        hash = (37 * hash) + TARGETPORT_FIELD_NUMBER;
        hash = (53 * hash) + getTargetPort().hashCode();
      }
      if (hasNodePort()) {
        hash = (37 * hash) + NODEPORT_FIELD_NUMBER;
        hash = (53 * hash) + getNodePort();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ServicePort parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServicePort 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.V1.ServicePort parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServicePort 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.V1.ServicePort parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServicePort parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ServicePort parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServicePort 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.V1.ServicePort parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ServicePort 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.V1.ServicePort parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServicePort 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.V1.ServicePort 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>
     * ServicePort contains information on service's port.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ServicePort}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ServicePort)
        io.kubernetes.client.proto.V1.ServicePortOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServicePort_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServicePort_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ServicePort.class, io.kubernetes.client.proto.V1.ServicePort.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ServicePort.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getTargetPortFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        protocol_ = "";
        appProtocol_ = "";
        port_ = 0;
        targetPort_ = null;
        if (targetPortBuilder_ != null) {
          targetPortBuilder_.dispose();
          targetPortBuilder_ = null;
        }
        nodePort_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServicePort_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServicePort getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ServicePort.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServicePort build() {
        io.kubernetes.client.proto.V1.ServicePort result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServicePort buildPartial() {
        io.kubernetes.client.proto.V1.ServicePort result = new io.kubernetes.client.proto.V1.ServicePort(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ServicePort 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.protocol_ = protocol_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.appProtocol_ = appProtocol_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.port_ = port_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.targetPort_ = targetPortBuilder_ == null
              ? targetPort_
              : targetPortBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.nodePort_ = nodePort_;
          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.V1.ServicePort) {
          return mergeFrom((io.kubernetes.client.proto.V1.ServicePort)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ServicePort other) {
        if (other == io.kubernetes.client.proto.V1.ServicePort.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasProtocol()) {
          protocol_ = other.protocol_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasAppProtocol()) {
          appProtocol_ = other.appProtocol_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasPort()) {
          setPort(other.getPort());
        }
        if (other.hasTargetPort()) {
          mergeTargetPort(other.getTargetPort());
        }
        if (other.hasNodePort()) {
          setNodePort(other.getNodePort());
        }
        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: {
                protocol_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                port_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 24
              case 34: {
                input.readMessage(
                    getTargetPortFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 34
              case 40: {
                nodePort_ = input.readInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 40
              case 50: {
                appProtocol_ = input.readBytes();
                bitField0_ |= 0x00000004;
                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>
       * The name of this port within the service. This must be a DNS_LABEL.
       * All ports within a ServiceSpec must have unique names. When considering
       * the endpoints for a Service, this must match the 'name' field in the
       * EndpointPort.
       * Optional if only one ServicePort is defined on this service.
       * +optional
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The name of this port within the service. This must be a DNS_LABEL.
       * All ports within a ServiceSpec must have unique names. When considering
       * the endpoints for a Service, this must match the 'name' field in the
       * EndpointPort.
       * Optional if only one ServicePort is defined on this service.
       * +optional
       * </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>
       * The name of this port within the service. This must be a DNS_LABEL.
       * All ports within a ServiceSpec must have unique names. When considering
       * the endpoints for a Service, this must match the 'name' field in the
       * EndpointPort.
       * Optional if only one ServicePort is defined on this service.
       * +optional
       * </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>
       * The name of this port within the service. This must be a DNS_LABEL.
       * All ports within a ServiceSpec must have unique names. When considering
       * the endpoints for a Service, this must match the 'name' field in the
       * EndpointPort.
       * Optional if only one ServicePort is defined on this service.
       * +optional
       * </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>
       * The name of this port within the service. This must be a DNS_LABEL.
       * All ports within a ServiceSpec must have unique names. When considering
       * the endpoints for a Service, this must match the 'name' field in the
       * EndpointPort.
       * Optional if only one ServicePort is defined on this service.
       * +optional
       * </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>
       * The name of this port within the service. This must be a DNS_LABEL.
       * All ports within a ServiceSpec must have unique names. When considering
       * the endpoints for a Service, this must match the 'name' field in the
       * EndpointPort.
       * Optional if only one ServicePort is defined on this service.
       * +optional
       * </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 protocol_ = "";
      /**
       * <pre>
       * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
       * Default is TCP.
       * +default="TCP"
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @return Whether the protocol field is set.
       */
      public boolean hasProtocol() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
       * Default is TCP.
       * +default="TCP"
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @return The protocol.
       */
      public java.lang.String getProtocol() {
        java.lang.Object ref = protocol_;
        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()) {
            protocol_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
       * Default is TCP.
       * +default="TCP"
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @return The bytes for protocol.
       */
      public com.google.protobuf.ByteString
          getProtocolBytes() {
        java.lang.Object ref = protocol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          protocol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
       * Default is TCP.
       * +default="TCP"
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @param value The protocol to set.
       * @return This builder for chaining.
       */
      public Builder setProtocol(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        protocol_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
       * Default is TCP.
       * +default="TCP"
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearProtocol() {
        protocol_ = getDefaultInstance().getProtocol();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
       * Default is TCP.
       * +default="TCP"
       * +optional
       * </pre>
       *
       * <code>optional string protocol = 2;</code>
       * @param value The bytes for protocol to set.
       * @return This builder for chaining.
       */
      public Builder setProtocolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        protocol_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object appProtocol_ = "";
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 6;</code>
       * @return Whether the appProtocol field is set.
       */
      public boolean hasAppProtocol() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 6;</code>
       * @return The appProtocol.
       */
      public java.lang.String getAppProtocol() {
        java.lang.Object ref = appProtocol_;
        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()) {
            appProtocol_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 6;</code>
       * @return The bytes for appProtocol.
       */
      public com.google.protobuf.ByteString
          getAppProtocolBytes() {
        java.lang.Object ref = appProtocol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          appProtocol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 6;</code>
       * @param value The appProtocol to set.
       * @return This builder for chaining.
       */
      public Builder setAppProtocol(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        appProtocol_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearAppProtocol() {
        appProtocol_ = getDefaultInstance().getAppProtocol();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The application protocol for this port.
       * This is used as a hint for implementations to offer richer behavior for protocols that they understand.
       * This field follows standard Kubernetes label syntax.
       * Valid values are either:
       *
       * * Un-prefixed protocol names - reserved for IANA standard service names (as per
       * RFC-6335 and https://www.iana.org/assignments/service-names).
       *
       * * Kubernetes-defined prefixed names:
       * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
       * * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
       * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
       *
       * * Other protocols should use implementation-defined prefixed names such as
       * mycompany.com/my-custom-protocol.
       * +optional
       * </pre>
       *
       * <code>optional string appProtocol = 6;</code>
       * @param value The bytes for appProtocol to set.
       * @return This builder for chaining.
       */
      public Builder setAppProtocolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        appProtocol_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private int port_ ;
      /**
       * <pre>
       * The port that will be exposed by this service.
       * </pre>
       *
       * <code>optional int32 port = 3;</code>
       * @return Whether the port field is set.
       */
      @java.lang.Override
      public boolean hasPort() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The port that will be exposed by this service.
       * </pre>
       *
       * <code>optional int32 port = 3;</code>
       * @return The port.
       */
      @java.lang.Override
      public int getPort() {
        return port_;
      }
      /**
       * <pre>
       * The port that will be exposed by this service.
       * </pre>
       *
       * <code>optional int32 port = 3;</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>
       * The port that will be exposed by this service.
       * </pre>
       *
       * <code>optional int32 port = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        bitField0_ = (bitField0_ & ~0x00000008);
        port_ = 0;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.IntStr.IntOrString targetPort_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.IntStr.IntOrString, io.kubernetes.client.proto.IntStr.IntOrString.Builder, io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder> targetPortBuilder_;
      /**
       * <pre>
       * Number or name of the port to access on the pods targeted by the service.
       * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
       * If this is a string, it will be looked up as a named port in the
       * target Pod's container ports. If this is not specified, the value
       * of the 'port' field is used (an identity map).
       * This field is ignored for services with clusterIP=None, and should be
       * omitted or set equal to the 'port' field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
       * @return Whether the targetPort field is set.
       */
      public boolean hasTargetPort() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Number or name of the port to access on the pods targeted by the service.
       * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
       * If this is a string, it will be looked up as a named port in the
       * target Pod's container ports. If this is not specified, the value
       * of the 'port' field is used (an identity map).
       * This field is ignored for services with clusterIP=None, and should be
       * omitted or set equal to the 'port' field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
       * @return The targetPort.
       */
      public io.kubernetes.client.proto.IntStr.IntOrString getTargetPort() {
        if (targetPortBuilder_ == null) {
          return targetPort_ == null ? io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : targetPort_;
        } else {
          return targetPortBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Number or name of the port to access on the pods targeted by the service.
       * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
       * If this is a string, it will be looked up as a named port in the
       * target Pod's container ports. If this is not specified, the value
       * of the 'port' field is used (an identity map).
       * This field is ignored for services with clusterIP=None, and should be
       * omitted or set equal to the 'port' field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
       */
      public Builder setTargetPort(io.kubernetes.client.proto.IntStr.IntOrString value) {
        if (targetPortBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          targetPort_ = value;
        } else {
          targetPortBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number or name of the port to access on the pods targeted by the service.
       * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
       * If this is a string, it will be looked up as a named port in the
       * target Pod's container ports. If this is not specified, the value
       * of the 'port' field is used (an identity map).
       * This field is ignored for services with clusterIP=None, and should be
       * omitted or set equal to the 'port' field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
       */
      public Builder setTargetPort(
          io.kubernetes.client.proto.IntStr.IntOrString.Builder builderForValue) {
        if (targetPortBuilder_ == null) {
          targetPort_ = builderForValue.build();
        } else {
          targetPortBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number or name of the port to access on the pods targeted by the service.
       * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
       * If this is a string, it will be looked up as a named port in the
       * target Pod's container ports. If this is not specified, the value
       * of the 'port' field is used (an identity map).
       * This field is ignored for services with clusterIP=None, and should be
       * omitted or set equal to the 'port' field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
       */
      public Builder mergeTargetPort(io.kubernetes.client.proto.IntStr.IntOrString value) {
        if (targetPortBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            targetPort_ != null &&
            targetPort_ != io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance()) {
            getTargetPortBuilder().mergeFrom(value);
          } else {
            targetPort_ = value;
          }
        } else {
          targetPortBuilder_.mergeFrom(value);
        }
        if (targetPort_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Number or name of the port to access on the pods targeted by the service.
       * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
       * If this is a string, it will be looked up as a named port in the
       * target Pod's container ports. If this is not specified, the value
       * of the 'port' field is used (an identity map).
       * This field is ignored for services with clusterIP=None, and should be
       * omitted or set equal to the 'port' field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
       */
      public Builder clearTargetPort() {
        bitField0_ = (bitField0_ & ~0x00000010);
        targetPort_ = null;
        if (targetPortBuilder_ != null) {
          targetPortBuilder_.dispose();
          targetPortBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number or name of the port to access on the pods targeted by the service.
       * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
       * If this is a string, it will be looked up as a named port in the
       * target Pod's container ports. If this is not specified, the value
       * of the 'port' field is used (an identity map).
       * This field is ignored for services with clusterIP=None, and should be
       * omitted or set equal to the 'port' field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
       */
      public io.kubernetes.client.proto.IntStr.IntOrString.Builder getTargetPortBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getTargetPortFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Number or name of the port to access on the pods targeted by the service.
       * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
       * If this is a string, it will be looked up as a named port in the
       * target Pod's container ports. If this is not specified, the value
       * of the 'port' field is used (an identity map).
       * This field is ignored for services with clusterIP=None, and should be
       * omitted or set equal to the 'port' field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
       */
      public io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder getTargetPortOrBuilder() {
        if (targetPortBuilder_ != null) {
          return targetPortBuilder_.getMessageOrBuilder();
        } else {
          return targetPort_ == null ?
              io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : targetPort_;
        }
      }
      /**
       * <pre>
       * Number or name of the port to access on the pods targeted by the service.
       * Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
       * If this is a string, it will be looked up as a named port in the
       * target Pod's container ports. If this is not specified, the value
       * of the 'port' field is used (an identity map).
       * This field is ignored for services with clusterIP=None, and should be
       * omitted or set equal to the 'port' field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.IntStr.IntOrString, io.kubernetes.client.proto.IntStr.IntOrString.Builder, io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder> 
          getTargetPortFieldBuilder() {
        if (targetPortBuilder_ == null) {
          targetPortBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.IntStr.IntOrString, io.kubernetes.client.proto.IntStr.IntOrString.Builder, io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder>(
                  getTargetPort(),
                  getParentForChildren(),
                  isClean());
          targetPort_ = null;
        }
        return targetPortBuilder_;
      }

      private int nodePort_ ;
      /**
       * <pre>
       * The port on each node on which this service is exposed when type is
       * NodePort or LoadBalancer.  Usually assigned by the system. If a value is
       * specified, in-range, and not in use it will be used, otherwise the
       * operation will fail.  If not specified, a port will be allocated if this
       * Service requires one.  If this field is specified when creating a
       * Service which does not need it, creation will fail. This field will be
       * wiped when updating a Service to no longer need it (e.g. changing type
       * from NodePort to ClusterIP).
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
       * +optional
       * </pre>
       *
       * <code>optional int32 nodePort = 5;</code>
       * @return Whether the nodePort field is set.
       */
      @java.lang.Override
      public boolean hasNodePort() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * The port on each node on which this service is exposed when type is
       * NodePort or LoadBalancer.  Usually assigned by the system. If a value is
       * specified, in-range, and not in use it will be used, otherwise the
       * operation will fail.  If not specified, a port will be allocated if this
       * Service requires one.  If this field is specified when creating a
       * Service which does not need it, creation will fail. This field will be
       * wiped when updating a Service to no longer need it (e.g. changing type
       * from NodePort to ClusterIP).
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
       * +optional
       * </pre>
       *
       * <code>optional int32 nodePort = 5;</code>
       * @return The nodePort.
       */
      @java.lang.Override
      public int getNodePort() {
        return nodePort_;
      }
      /**
       * <pre>
       * The port on each node on which this service is exposed when type is
       * NodePort or LoadBalancer.  Usually assigned by the system. If a value is
       * specified, in-range, and not in use it will be used, otherwise the
       * operation will fail.  If not specified, a port will be allocated if this
       * Service requires one.  If this field is specified when creating a
       * Service which does not need it, creation will fail. This field will be
       * wiped when updating a Service to no longer need it (e.g. changing type
       * from NodePort to ClusterIP).
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
       * +optional
       * </pre>
       *
       * <code>optional int32 nodePort = 5;</code>
       * @param value The nodePort to set.
       * @return This builder for chaining.
       */
      public Builder setNodePort(int value) {

        nodePort_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The port on each node on which this service is exposed when type is
       * NodePort or LoadBalancer.  Usually assigned by the system. If a value is
       * specified, in-range, and not in use it will be used, otherwise the
       * operation will fail.  If not specified, a port will be allocated if this
       * Service requires one.  If this field is specified when creating a
       * Service which does not need it, creation will fail. This field will be
       * wiped when updating a Service to no longer need it (e.g. changing type
       * from NodePort to ClusterIP).
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
       * +optional
       * </pre>
       *
       * <code>optional int32 nodePort = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearNodePort() {
        bitField0_ = (bitField0_ & ~0x00000020);
        nodePort_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ServicePort)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ServicePort)
    private static final io.kubernetes.client.proto.V1.ServicePort DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ServicePort();
    }

    public static io.kubernetes.client.proto.V1.ServicePort getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServicePort>
        PARSER = new com.google.protobuf.AbstractParser<ServicePort>() {
      @java.lang.Override
      public ServicePort 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<ServicePort> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServicePort> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServicePort getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceProxyOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ServiceProxyOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Path is the part of URLs that include service endpoints, suffixes,
     * and parameters to use for the current proxy request to service.
     * For example, the whole request URL is
     * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
     * Path is _search?q=user:kimchy.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * Path is the part of URLs that include service endpoints, suffixes,
     * and parameters to use for the current proxy request to service.
     * For example, the whole request URL is
     * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
     * Path is _search?q=user:kimchy.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Path is the part of URLs that include service endpoints, suffixes,
     * and parameters to use for the current proxy request to service.
     * For example, the whole request URL is
     * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
     * Path is _search?q=user:kimchy.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();
  }
  /**
   * <pre>
   * ServiceProxyOptions is the query options to a Service's proxy call.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ServiceProxyOptions}
   */
  public static final class ServiceProxyOptions extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ServiceProxyOptions)
      ServiceProxyOptionsOrBuilder {
  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= */ "",
        ServiceProxyOptions.class.getName());
    }
    // Use ServiceProxyOptions.newBuilder() to construct.
    private ServiceProxyOptions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ServiceProxyOptions() {
      path_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceProxyOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceProxyOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ServiceProxyOptions.class, io.kubernetes.client.proto.V1.ServiceProxyOptions.Builder.class);
    }

    private int bitField0_;
    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * Path is the part of URLs that include service endpoints, suffixes,
     * and parameters to use for the current proxy request to service.
     * For example, the whole request URL is
     * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
     * Path is _search?q=user:kimchy.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Path is the part of URLs that include service endpoints, suffixes,
     * and parameters to use for the current proxy request to service.
     * For example, the whole request URL is
     * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
     * Path is _search?q=user:kimchy.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</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 the part of URLs that include service endpoints, suffixes,
     * and parameters to use for the current proxy request to service.
     * For example, the whole request URL is
     * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
     * Path is _search?q=user:kimchy.
     * +optional
     * </pre>
     *
     * <code>optional string path = 1;</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;
      }
    }

    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, path_);
      }
      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, path_);
      }
      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.V1.ServiceProxyOptions)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ServiceProxyOptions other = (io.kubernetes.client.proto.V1.ServiceProxyOptions) obj;

      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) 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 (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ServiceProxyOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceProxyOptions 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.V1.ServiceProxyOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceProxyOptions 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.V1.ServiceProxyOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceProxyOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ServiceProxyOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceProxyOptions 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.V1.ServiceProxyOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ServiceProxyOptions 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.V1.ServiceProxyOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceProxyOptions 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.V1.ServiceProxyOptions 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>
     * ServiceProxyOptions is the query options to a Service's proxy call.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ServiceProxyOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ServiceProxyOptions)
        io.kubernetes.client.proto.V1.ServiceProxyOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceProxyOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceProxyOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ServiceProxyOptions.class, io.kubernetes.client.proto.V1.ServiceProxyOptions.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ServiceProxyOptions.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceProxyOptions_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceProxyOptions getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ServiceProxyOptions.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceProxyOptions build() {
        io.kubernetes.client.proto.V1.ServiceProxyOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceProxyOptions buildPartial() {
        io.kubernetes.client.proto.V1.ServiceProxyOptions result = new io.kubernetes.client.proto.V1.ServiceProxyOptions(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ServiceProxyOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
          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.V1.ServiceProxyOptions) {
          return mergeFrom((io.kubernetes.client.proto.V1.ServiceProxyOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ServiceProxyOptions other) {
        if (other == io.kubernetes.client.proto.V1.ServiceProxyOptions.getDefaultInstance()) return this;
        if (other.hasPath()) {
          path_ = other.path_;
          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: {
                path_ = 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 path_ = "";
      /**
       * <pre>
       * Path is the part of URLs that include service endpoints, suffixes,
       * and parameters to use for the current proxy request to service.
       * For example, the whole request URL is
       * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
       * Path is _search?q=user:kimchy.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Path is the part of URLs that include service endpoints, suffixes,
       * and parameters to use for the current proxy request to service.
       * For example, the whole request URL is
       * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
       * Path is _search?q=user:kimchy.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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 the part of URLs that include service endpoints, suffixes,
       * and parameters to use for the current proxy request to service.
       * For example, the whole request URL is
       * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
       * Path is _search?q=user:kimchy.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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 the part of URLs that include service endpoints, suffixes,
       * and parameters to use for the current proxy request to service.
       * For example, the whole request URL is
       * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
       * Path is _search?q=user:kimchy.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path is the part of URLs that include service endpoints, suffixes,
       * and parameters to use for the current proxy request to service.
       * For example, the whole request URL is
       * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
       * Path is _search?q=user:kimchy.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path is the part of URLs that include service endpoints, suffixes,
       * and parameters to use for the current proxy request to service.
       * For example, the whole request URL is
       * http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
       * Path is _search?q=user:kimchy.
       * +optional
       * </pre>
       *
       * <code>optional string path = 1;</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_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ServiceProxyOptions)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ServiceProxyOptions)
    private static final io.kubernetes.client.proto.V1.ServiceProxyOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ServiceProxyOptions();
    }

    public static io.kubernetes.client.proto.V1.ServiceProxyOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServiceProxyOptions>
        PARSER = new com.google.protobuf.AbstractParser<ServiceProxyOptions>() {
      @java.lang.Override
      public ServiceProxyOptions 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<ServiceProxyOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServiceProxyOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceProxyOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ServiceSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The list of ports that are exposed by this service.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +patchMergeKey=port
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=port
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ServicePort> 
        getPortsList();
    /**
     * <pre>
     * The list of ports that are exposed by this service.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +patchMergeKey=port
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=port
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
     */
    io.kubernetes.client.proto.V1.ServicePort getPorts(int index);
    /**
     * <pre>
     * The list of ports that are exposed by this service.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +patchMergeKey=port
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=port
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
     */
    int getPortsCount();
    /**
     * <pre>
     * The list of ports that are exposed by this service.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +patchMergeKey=port
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=port
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ServicePortOrBuilder> 
        getPortsOrBuilderList();
    /**
     * <pre>
     * The list of ports that are exposed by this service.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +patchMergeKey=port
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=port
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
     */
    io.kubernetes.client.proto.V1.ServicePortOrBuilder getPortsOrBuilder(
        int index);

    /**
     * <pre>
     * Route service traffic to pods with label keys and values matching this
     * selector. If empty or not present, the service is assumed to have an
     * external process managing its endpoints, which Kubernetes will not
     * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
     * Ignored if type is ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    int getSelectorCount();
    /**
     * <pre>
     * Route service traffic to pods with label keys and values matching this
     * selector. If empty or not present, the service is assumed to have an
     * external process managing its endpoints, which Kubernetes will not
     * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
     * Ignored if type is ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    boolean containsSelector(
        java.lang.String key);
    /**
     * Use {@link #getSelectorMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getSelector();
    /**
     * <pre>
     * Route service traffic to pods with label keys and values matching this
     * selector. If empty or not present, the service is assumed to have an
     * external process managing its endpoints, which Kubernetes will not
     * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
     * Ignored if type is ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getSelectorMap();
    /**
     * <pre>
     * Route service traffic to pods with label keys and values matching this
     * selector. If empty or not present, the service is assumed to have an
     * external process managing its endpoints, which Kubernetes will not
     * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
     * Ignored if type is ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    /* nullable */
java.lang.String getSelectorOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * Route service traffic to pods with label keys and values matching this
     * selector. If empty or not present, the service is assumed to have an
     * external process managing its endpoints, which Kubernetes will not
     * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
     * Ignored if type is ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    java.lang.String getSelectorOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * clusterIP is the IP address of the service and is usually assigned
     * randomly. If an address is specified manually, is in-range (as per
     * system configuration), and is not in use, it will be allocated to the
     * service; otherwise creation of the service will fail. This field may not
     * be changed through updates unless the type field is also being changed
     * to ExternalName (which requires this field to be blank) or the type
     * field is being changed from ExternalName (in which case this field may
     * optionally be specified, as describe above).  Valid values are "None",
     * empty string (""), or a valid IP address. Setting this to "None" makes a
     * "headless service" (no virtual IP), which is useful when direct endpoint
     * connections are preferred and proxying is not required.  Only applies to
     * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
     * when creating a Service of type ExternalName, creation will fail. This
     * field will be wiped when updating a Service to type ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string clusterIP = 3;</code>
     * @return Whether the clusterIP field is set.
     */
    boolean hasClusterIP();
    /**
     * <pre>
     * clusterIP is the IP address of the service and is usually assigned
     * randomly. If an address is specified manually, is in-range (as per
     * system configuration), and is not in use, it will be allocated to the
     * service; otherwise creation of the service will fail. This field may not
     * be changed through updates unless the type field is also being changed
     * to ExternalName (which requires this field to be blank) or the type
     * field is being changed from ExternalName (in which case this field may
     * optionally be specified, as describe above).  Valid values are "None",
     * empty string (""), or a valid IP address. Setting this to "None" makes a
     * "headless service" (no virtual IP), which is useful when direct endpoint
     * connections are preferred and proxying is not required.  Only applies to
     * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
     * when creating a Service of type ExternalName, creation will fail. This
     * field will be wiped when updating a Service to type ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string clusterIP = 3;</code>
     * @return The clusterIP.
     */
    java.lang.String getClusterIP();
    /**
     * <pre>
     * clusterIP is the IP address of the service and is usually assigned
     * randomly. If an address is specified manually, is in-range (as per
     * system configuration), and is not in use, it will be allocated to the
     * service; otherwise creation of the service will fail. This field may not
     * be changed through updates unless the type field is also being changed
     * to ExternalName (which requires this field to be blank) or the type
     * field is being changed from ExternalName (in which case this field may
     * optionally be specified, as describe above).  Valid values are "None",
     * empty string (""), or a valid IP address. Setting this to "None" makes a
     * "headless service" (no virtual IP), which is useful when direct endpoint
     * connections are preferred and proxying is not required.  Only applies to
     * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
     * when creating a Service of type ExternalName, creation will fail. This
     * field will be wiped when updating a Service to type ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string clusterIP = 3;</code>
     * @return The bytes for clusterIP.
     */
    com.google.protobuf.ByteString
        getClusterIPBytes();

    /**
     * <pre>
     * ClusterIPs is a list of IP addresses assigned to this service, and are
     * usually assigned randomly.  If an address is specified manually, is
     * in-range (as per system configuration), and is not in use, it will be
     * allocated to the service; otherwise creation of the service will fail.
     * This field may not be changed through updates unless the type field is
     * also being changed to ExternalName (which requires this field to be
     * empty) or the type field is being changed from ExternalName (in which
     * case this field may optionally be specified, as describe above).  Valid
     * values are "None", empty string (""), or a valid IP address.  Setting
     * this to "None" makes a "headless service" (no virtual IP), which is
     * useful when direct endpoint connections are preferred and proxying is
     * not required.  Only applies to types ClusterIP, NodePort, and
     * LoadBalancer. If this field is specified when creating a Service of type
     * ExternalName, creation will fail. This field will be wiped when updating
     * a Service to type ExternalName.  If this field is not specified, it will
     * be initialized from the clusterIP field.  If this field is specified,
     * clients must ensure that clusterIPs[0] and clusterIP have the same
     * value.
     *
     * This field may hold a maximum of two entries (dual-stack IPs, in either order).
     * These IPs must correspond to the values of the ipFamilies field. Both
     * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string clusterIPs = 18;</code>
     * @return A list containing the clusterIPs.
     */
    java.util.List<java.lang.String>
        getClusterIPsList();
    /**
     * <pre>
     * ClusterIPs is a list of IP addresses assigned to this service, and are
     * usually assigned randomly.  If an address is specified manually, is
     * in-range (as per system configuration), and is not in use, it will be
     * allocated to the service; otherwise creation of the service will fail.
     * This field may not be changed through updates unless the type field is
     * also being changed to ExternalName (which requires this field to be
     * empty) or the type field is being changed from ExternalName (in which
     * case this field may optionally be specified, as describe above).  Valid
     * values are "None", empty string (""), or a valid IP address.  Setting
     * this to "None" makes a "headless service" (no virtual IP), which is
     * useful when direct endpoint connections are preferred and proxying is
     * not required.  Only applies to types ClusterIP, NodePort, and
     * LoadBalancer. If this field is specified when creating a Service of type
     * ExternalName, creation will fail. This field will be wiped when updating
     * a Service to type ExternalName.  If this field is not specified, it will
     * be initialized from the clusterIP field.  If this field is specified,
     * clients must ensure that clusterIPs[0] and clusterIP have the same
     * value.
     *
     * This field may hold a maximum of two entries (dual-stack IPs, in either order).
     * These IPs must correspond to the values of the ipFamilies field. Both
     * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string clusterIPs = 18;</code>
     * @return The count of clusterIPs.
     */
    int getClusterIPsCount();
    /**
     * <pre>
     * ClusterIPs is a list of IP addresses assigned to this service, and are
     * usually assigned randomly.  If an address is specified manually, is
     * in-range (as per system configuration), and is not in use, it will be
     * allocated to the service; otherwise creation of the service will fail.
     * This field may not be changed through updates unless the type field is
     * also being changed to ExternalName (which requires this field to be
     * empty) or the type field is being changed from ExternalName (in which
     * case this field may optionally be specified, as describe above).  Valid
     * values are "None", empty string (""), or a valid IP address.  Setting
     * this to "None" makes a "headless service" (no virtual IP), which is
     * useful when direct endpoint connections are preferred and proxying is
     * not required.  Only applies to types ClusterIP, NodePort, and
     * LoadBalancer. If this field is specified when creating a Service of type
     * ExternalName, creation will fail. This field will be wiped when updating
     * a Service to type ExternalName.  If this field is not specified, it will
     * be initialized from the clusterIP field.  If this field is specified,
     * clients must ensure that clusterIPs[0] and clusterIP have the same
     * value.
     *
     * This field may hold a maximum of two entries (dual-stack IPs, in either order).
     * These IPs must correspond to the values of the ipFamilies field. Both
     * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string clusterIPs = 18;</code>
     * @param index The index of the element to return.
     * @return The clusterIPs at the given index.
     */
    java.lang.String getClusterIPs(int index);
    /**
     * <pre>
     * ClusterIPs is a list of IP addresses assigned to this service, and are
     * usually assigned randomly.  If an address is specified manually, is
     * in-range (as per system configuration), and is not in use, it will be
     * allocated to the service; otherwise creation of the service will fail.
     * This field may not be changed through updates unless the type field is
     * also being changed to ExternalName (which requires this field to be
     * empty) or the type field is being changed from ExternalName (in which
     * case this field may optionally be specified, as describe above).  Valid
     * values are "None", empty string (""), or a valid IP address.  Setting
     * this to "None" makes a "headless service" (no virtual IP), which is
     * useful when direct endpoint connections are preferred and proxying is
     * not required.  Only applies to types ClusterIP, NodePort, and
     * LoadBalancer. If this field is specified when creating a Service of type
     * ExternalName, creation will fail. This field will be wiped when updating
     * a Service to type ExternalName.  If this field is not specified, it will
     * be initialized from the clusterIP field.  If this field is specified,
     * clients must ensure that clusterIPs[0] and clusterIP have the same
     * value.
     *
     * This field may hold a maximum of two entries (dual-stack IPs, in either order).
     * These IPs must correspond to the values of the ipFamilies field. Both
     * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string clusterIPs = 18;</code>
     * @param index The index of the value to return.
     * @return The bytes of the clusterIPs at the given index.
     */
    com.google.protobuf.ByteString
        getClusterIPsBytes(int index);

    /**
     * <pre>
     * type determines how the Service is exposed. Defaults to ClusterIP. Valid
     * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
     * "ClusterIP" allocates a cluster-internal IP address for load-balancing
     * to endpoints. Endpoints are determined by the selector or if that is not
     * specified, by manual construction of an Endpoints object or
     * EndpointSlice objects. If clusterIP is "None", no virtual IP is
     * allocated and the endpoints are published as a set of endpoints rather
     * than a virtual IP.
     * "NodePort" builds on ClusterIP and allocates a port on every node which
     * routes to the same endpoints as the clusterIP.
     * "LoadBalancer" builds on NodePort and creates an external load-balancer
     * (if supported in the current cloud) which routes to the same endpoints
     * as the clusterIP.
     * "ExternalName" aliases this service to the specified externalName.
     * Several other fields do not apply to ExternalName services.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 4;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * type determines how the Service is exposed. Defaults to ClusterIP. Valid
     * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
     * "ClusterIP" allocates a cluster-internal IP address for load-balancing
     * to endpoints. Endpoints are determined by the selector or if that is not
     * specified, by manual construction of an Endpoints object or
     * EndpointSlice objects. If clusterIP is "None", no virtual IP is
     * allocated and the endpoints are published as a set of endpoints rather
     * than a virtual IP.
     * "NodePort" builds on ClusterIP and allocates a port on every node which
     * routes to the same endpoints as the clusterIP.
     * "LoadBalancer" builds on NodePort and creates an external load-balancer
     * (if supported in the current cloud) which routes to the same endpoints
     * as the clusterIP.
     * "ExternalName" aliases this service to the specified externalName.
     * Several other fields do not apply to ExternalName services.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 4;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * type determines how the Service is exposed. Defaults to ClusterIP. Valid
     * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
     * "ClusterIP" allocates a cluster-internal IP address for load-balancing
     * to endpoints. Endpoints are determined by the selector or if that is not
     * specified, by manual construction of an Endpoints object or
     * EndpointSlice objects. If clusterIP is "None", no virtual IP is
     * allocated and the endpoints are published as a set of endpoints rather
     * than a virtual IP.
     * "NodePort" builds on ClusterIP and allocates a port on every node which
     * routes to the same endpoints as the clusterIP.
     * "LoadBalancer" builds on NodePort and creates an external load-balancer
     * (if supported in the current cloud) which routes to the same endpoints
     * as the clusterIP.
     * "ExternalName" aliases this service to the specified externalName.
     * Several other fields do not apply to ExternalName services.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 4;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * externalIPs is a list of IP addresses for which nodes in the cluster
     * will also accept traffic for this service.  These IPs are not managed by
     * Kubernetes.  The user is responsible for ensuring that traffic arrives
     * at a node with this IP.  A common example is external load-balancers
     * that are not part of the Kubernetes system.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string externalIPs = 5;</code>
     * @return A list containing the externalIPs.
     */
    java.util.List<java.lang.String>
        getExternalIPsList();
    /**
     * <pre>
     * externalIPs is a list of IP addresses for which nodes in the cluster
     * will also accept traffic for this service.  These IPs are not managed by
     * Kubernetes.  The user is responsible for ensuring that traffic arrives
     * at a node with this IP.  A common example is external load-balancers
     * that are not part of the Kubernetes system.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string externalIPs = 5;</code>
     * @return The count of externalIPs.
     */
    int getExternalIPsCount();
    /**
     * <pre>
     * externalIPs is a list of IP addresses for which nodes in the cluster
     * will also accept traffic for this service.  These IPs are not managed by
     * Kubernetes.  The user is responsible for ensuring that traffic arrives
     * at a node with this IP.  A common example is external load-balancers
     * that are not part of the Kubernetes system.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string externalIPs = 5;</code>
     * @param index The index of the element to return.
     * @return The externalIPs at the given index.
     */
    java.lang.String getExternalIPs(int index);
    /**
     * <pre>
     * externalIPs is a list of IP addresses for which nodes in the cluster
     * will also accept traffic for this service.  These IPs are not managed by
     * Kubernetes.  The user is responsible for ensuring that traffic arrives
     * at a node with this IP.  A common example is external load-balancers
     * that are not part of the Kubernetes system.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string externalIPs = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the externalIPs at the given index.
     */
    com.google.protobuf.ByteString
        getExternalIPsBytes(int index);

    /**
     * <pre>
     * Supports "ClientIP" and "None". Used to maintain session affinity.
     * Enable client IP based session affinity.
     * Must be ClientIP or None.
     * Defaults to None.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string sessionAffinity = 7;</code>
     * @return Whether the sessionAffinity field is set.
     */
    boolean hasSessionAffinity();
    /**
     * <pre>
     * Supports "ClientIP" and "None". Used to maintain session affinity.
     * Enable client IP based session affinity.
     * Must be ClientIP or None.
     * Defaults to None.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string sessionAffinity = 7;</code>
     * @return The sessionAffinity.
     */
    java.lang.String getSessionAffinity();
    /**
     * <pre>
     * Supports "ClientIP" and "None". Used to maintain session affinity.
     * Enable client IP based session affinity.
     * Must be ClientIP or None.
     * Defaults to None.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string sessionAffinity = 7;</code>
     * @return The bytes for sessionAffinity.
     */
    com.google.protobuf.ByteString
        getSessionAffinityBytes();

    /**
     * <pre>
     * Only applies to Service Type: LoadBalancer.
     * This feature depends on whether the underlying cloud-provider supports specifying
     * the loadBalancerIP when a load balancer is created.
     * This field will be ignored if the cloud-provider does not support the feature.
     * Deprecated: This field was under-specified and its meaning varies across implementations.
     * Using it is non-portable and it may not support dual-stack.
     * Users are encouraged to use implementation-specific annotations when available.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerIP = 8;</code>
     * @return Whether the loadBalancerIP field is set.
     */
    boolean hasLoadBalancerIP();
    /**
     * <pre>
     * Only applies to Service Type: LoadBalancer.
     * This feature depends on whether the underlying cloud-provider supports specifying
     * the loadBalancerIP when a load balancer is created.
     * This field will be ignored if the cloud-provider does not support the feature.
     * Deprecated: This field was under-specified and its meaning varies across implementations.
     * Using it is non-portable and it may not support dual-stack.
     * Users are encouraged to use implementation-specific annotations when available.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerIP = 8;</code>
     * @return The loadBalancerIP.
     */
    java.lang.String getLoadBalancerIP();
    /**
     * <pre>
     * Only applies to Service Type: LoadBalancer.
     * This feature depends on whether the underlying cloud-provider supports specifying
     * the loadBalancerIP when a load balancer is created.
     * This field will be ignored if the cloud-provider does not support the feature.
     * Deprecated: This field was under-specified and its meaning varies across implementations.
     * Using it is non-portable and it may not support dual-stack.
     * Users are encouraged to use implementation-specific annotations when available.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerIP = 8;</code>
     * @return The bytes for loadBalancerIP.
     */
    com.google.protobuf.ByteString
        getLoadBalancerIPBytes();

    /**
     * <pre>
     * If specified and supported by the platform, this will restrict traffic through the cloud-provider
     * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
     * cloud-provider does not support the feature."
     * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string loadBalancerSourceRanges = 9;</code>
     * @return A list containing the loadBalancerSourceRanges.
     */
    java.util.List<java.lang.String>
        getLoadBalancerSourceRangesList();
    /**
     * <pre>
     * If specified and supported by the platform, this will restrict traffic through the cloud-provider
     * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
     * cloud-provider does not support the feature."
     * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string loadBalancerSourceRanges = 9;</code>
     * @return The count of loadBalancerSourceRanges.
     */
    int getLoadBalancerSourceRangesCount();
    /**
     * <pre>
     * If specified and supported by the platform, this will restrict traffic through the cloud-provider
     * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
     * cloud-provider does not support the feature."
     * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string loadBalancerSourceRanges = 9;</code>
     * @param index The index of the element to return.
     * @return The loadBalancerSourceRanges at the given index.
     */
    java.lang.String getLoadBalancerSourceRanges(int index);
    /**
     * <pre>
     * If specified and supported by the platform, this will restrict traffic through the cloud-provider
     * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
     * cloud-provider does not support the feature."
     * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string loadBalancerSourceRanges = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the loadBalancerSourceRanges at the given index.
     */
    com.google.protobuf.ByteString
        getLoadBalancerSourceRangesBytes(int index);

    /**
     * <pre>
     * externalName is the external reference that discovery mechanisms will
     * return as an alias for this service (e.g. a DNS CNAME record). No
     * proxying will be involved.  Must be a lowercase RFC-1123 hostname
     * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
     * +optional
     * </pre>
     *
     * <code>optional string externalName = 10;</code>
     * @return Whether the externalName field is set.
     */
    boolean hasExternalName();
    /**
     * <pre>
     * externalName is the external reference that discovery mechanisms will
     * return as an alias for this service (e.g. a DNS CNAME record). No
     * proxying will be involved.  Must be a lowercase RFC-1123 hostname
     * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
     * +optional
     * </pre>
     *
     * <code>optional string externalName = 10;</code>
     * @return The externalName.
     */
    java.lang.String getExternalName();
    /**
     * <pre>
     * externalName is the external reference that discovery mechanisms will
     * return as an alias for this service (e.g. a DNS CNAME record). No
     * proxying will be involved.  Must be a lowercase RFC-1123 hostname
     * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
     * +optional
     * </pre>
     *
     * <code>optional string externalName = 10;</code>
     * @return The bytes for externalName.
     */
    com.google.protobuf.ByteString
        getExternalNameBytes();

    /**
     * <pre>
     * externalTrafficPolicy describes how nodes distribute service traffic they
     * receive on one of the Service's "externally-facing" addresses (NodePorts,
     * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
     * the service in a way that assumes that external load balancers will take care
     * of balancing the service traffic between nodes, and so each node will deliver
     * traffic only to the node-local endpoints of the service, without masquerading
     * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
     * be dropped.) The default value, "Cluster", uses the standard behavior of
     * routing to all endpoints evenly (possibly modified by topology and other
     * features). Note that traffic sent to an External IP or LoadBalancer IP from
     * within the cluster will always get "Cluster" semantics, but clients sending to
     * a NodePort from within the cluster may need to take traffic policy into account
     * when picking a node.
     * +optional
     * </pre>
     *
     * <code>optional string externalTrafficPolicy = 11;</code>
     * @return Whether the externalTrafficPolicy field is set.
     */
    boolean hasExternalTrafficPolicy();
    /**
     * <pre>
     * externalTrafficPolicy describes how nodes distribute service traffic they
     * receive on one of the Service's "externally-facing" addresses (NodePorts,
     * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
     * the service in a way that assumes that external load balancers will take care
     * of balancing the service traffic between nodes, and so each node will deliver
     * traffic only to the node-local endpoints of the service, without masquerading
     * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
     * be dropped.) The default value, "Cluster", uses the standard behavior of
     * routing to all endpoints evenly (possibly modified by topology and other
     * features). Note that traffic sent to an External IP or LoadBalancer IP from
     * within the cluster will always get "Cluster" semantics, but clients sending to
     * a NodePort from within the cluster may need to take traffic policy into account
     * when picking a node.
     * +optional
     * </pre>
     *
     * <code>optional string externalTrafficPolicy = 11;</code>
     * @return The externalTrafficPolicy.
     */
    java.lang.String getExternalTrafficPolicy();
    /**
     * <pre>
     * externalTrafficPolicy describes how nodes distribute service traffic they
     * receive on one of the Service's "externally-facing" addresses (NodePorts,
     * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
     * the service in a way that assumes that external load balancers will take care
     * of balancing the service traffic between nodes, and so each node will deliver
     * traffic only to the node-local endpoints of the service, without masquerading
     * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
     * be dropped.) The default value, "Cluster", uses the standard behavior of
     * routing to all endpoints evenly (possibly modified by topology and other
     * features). Note that traffic sent to an External IP or LoadBalancer IP from
     * within the cluster will always get "Cluster" semantics, but clients sending to
     * a NodePort from within the cluster may need to take traffic policy into account
     * when picking a node.
     * +optional
     * </pre>
     *
     * <code>optional string externalTrafficPolicy = 11;</code>
     * @return The bytes for externalTrafficPolicy.
     */
    com.google.protobuf.ByteString
        getExternalTrafficPolicyBytes();

    /**
     * <pre>
     * healthCheckNodePort specifies the healthcheck nodePort for the service.
     * This only applies when type is set to LoadBalancer and
     * externalTrafficPolicy is set to Local. If a value is specified, is
     * in-range, and is not in use, it will be used.  If not specified, a value
     * will be automatically allocated.  External systems (e.g. load-balancers)
     * can use this port to determine if a given node holds endpoints for this
     * service or not.  If this field is specified when creating a Service
     * which does not need it, creation will fail. This field will be wiped
     * when updating a Service to no longer need it (e.g. changing type).
     * This field cannot be updated once set.
     * +optional
     * </pre>
     *
     * <code>optional int32 healthCheckNodePort = 12;</code>
     * @return Whether the healthCheckNodePort field is set.
     */
    boolean hasHealthCheckNodePort();
    /**
     * <pre>
     * healthCheckNodePort specifies the healthcheck nodePort for the service.
     * This only applies when type is set to LoadBalancer and
     * externalTrafficPolicy is set to Local. If a value is specified, is
     * in-range, and is not in use, it will be used.  If not specified, a value
     * will be automatically allocated.  External systems (e.g. load-balancers)
     * can use this port to determine if a given node holds endpoints for this
     * service or not.  If this field is specified when creating a Service
     * which does not need it, creation will fail. This field will be wiped
     * when updating a Service to no longer need it (e.g. changing type).
     * This field cannot be updated once set.
     * +optional
     * </pre>
     *
     * <code>optional int32 healthCheckNodePort = 12;</code>
     * @return The healthCheckNodePort.
     */
    int getHealthCheckNodePort();

    /**
     * <pre>
     * publishNotReadyAddresses indicates that any agent which deals with endpoints for this
     * Service should disregard any indications of ready/not-ready.
     * The primary use case for setting this field is for a StatefulSet's Headless Service to
     * propagate SRV DNS records for its Pods for the purpose of peer discovery.
     * The Kubernetes controllers that generate Endpoints and EndpointSlice resources for
     * Services interpret this to mean that all endpoints are considered "ready" even if the
     * Pods themselves are not. Agents which consume only Kubernetes generated endpoints
     * through the Endpoints or EndpointSlice resources can safely assume this behavior.
     * +optional
     * </pre>
     *
     * <code>optional bool publishNotReadyAddresses = 13;</code>
     * @return Whether the publishNotReadyAddresses field is set.
     */
    boolean hasPublishNotReadyAddresses();
    /**
     * <pre>
     * publishNotReadyAddresses indicates that any agent which deals with endpoints for this
     * Service should disregard any indications of ready/not-ready.
     * The primary use case for setting this field is for a StatefulSet's Headless Service to
     * propagate SRV DNS records for its Pods for the purpose of peer discovery.
     * The Kubernetes controllers that generate Endpoints and EndpointSlice resources for
     * Services interpret this to mean that all endpoints are considered "ready" even if the
     * Pods themselves are not. Agents which consume only Kubernetes generated endpoints
     * through the Endpoints or EndpointSlice resources can safely assume this behavior.
     * +optional
     * </pre>
     *
     * <code>optional bool publishNotReadyAddresses = 13;</code>
     * @return The publishNotReadyAddresses.
     */
    boolean getPublishNotReadyAddresses();

    /**
     * <pre>
     * sessionAffinityConfig contains the configurations of session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
     * @return Whether the sessionAffinityConfig field is set.
     */
    boolean hasSessionAffinityConfig();
    /**
     * <pre>
     * sessionAffinityConfig contains the configurations of session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
     * @return The sessionAffinityConfig.
     */
    io.kubernetes.client.proto.V1.SessionAffinityConfig getSessionAffinityConfig();
    /**
     * <pre>
     * sessionAffinityConfig contains the configurations of session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
     */
    io.kubernetes.client.proto.V1.SessionAffinityConfigOrBuilder getSessionAffinityConfigOrBuilder();

    /**
     * <pre>
     * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
     * service. This field is usually assigned automatically based on cluster
     * configuration and the ipFamilyPolicy field. If this field is specified
     * manually, the requested family is available in the cluster,
     * and ipFamilyPolicy allows it, it will be used; otherwise creation of
     * the service will fail. This field is conditionally mutable: it allows
     * for adding or removing a secondary IP family, but it does not allow
     * changing the primary IP family of the Service. Valid values are "IPv4"
     * and "IPv6".  This field only applies to Services of types ClusterIP,
     * NodePort, and LoadBalancer, and does apply to "headless" services.
     * This field will be wiped when updating a Service to type ExternalName.
     *
     * This field may hold a maximum of two entries (dual-stack families, in
     * either order).  These families must correspond to the values of the
     * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
     * governed by the ipFamilyPolicy field.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string ipFamilies = 19;</code>
     * @return A list containing the ipFamilies.
     */
    java.util.List<java.lang.String>
        getIpFamiliesList();
    /**
     * <pre>
     * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
     * service. This field is usually assigned automatically based on cluster
     * configuration and the ipFamilyPolicy field. If this field is specified
     * manually, the requested family is available in the cluster,
     * and ipFamilyPolicy allows it, it will be used; otherwise creation of
     * the service will fail. This field is conditionally mutable: it allows
     * for adding or removing a secondary IP family, but it does not allow
     * changing the primary IP family of the Service. Valid values are "IPv4"
     * and "IPv6".  This field only applies to Services of types ClusterIP,
     * NodePort, and LoadBalancer, and does apply to "headless" services.
     * This field will be wiped when updating a Service to type ExternalName.
     *
     * This field may hold a maximum of two entries (dual-stack families, in
     * either order).  These families must correspond to the values of the
     * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
     * governed by the ipFamilyPolicy field.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string ipFamilies = 19;</code>
     * @return The count of ipFamilies.
     */
    int getIpFamiliesCount();
    /**
     * <pre>
     * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
     * service. This field is usually assigned automatically based on cluster
     * configuration and the ipFamilyPolicy field. If this field is specified
     * manually, the requested family is available in the cluster,
     * and ipFamilyPolicy allows it, it will be used; otherwise creation of
     * the service will fail. This field is conditionally mutable: it allows
     * for adding or removing a secondary IP family, but it does not allow
     * changing the primary IP family of the Service. Valid values are "IPv4"
     * and "IPv6".  This field only applies to Services of types ClusterIP,
     * NodePort, and LoadBalancer, and does apply to "headless" services.
     * This field will be wiped when updating a Service to type ExternalName.
     *
     * This field may hold a maximum of two entries (dual-stack families, in
     * either order).  These families must correspond to the values of the
     * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
     * governed by the ipFamilyPolicy field.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string ipFamilies = 19;</code>
     * @param index The index of the element to return.
     * @return The ipFamilies at the given index.
     */
    java.lang.String getIpFamilies(int index);
    /**
     * <pre>
     * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
     * service. This field is usually assigned automatically based on cluster
     * configuration and the ipFamilyPolicy field. If this field is specified
     * manually, the requested family is available in the cluster,
     * and ipFamilyPolicy allows it, it will be used; otherwise creation of
     * the service will fail. This field is conditionally mutable: it allows
     * for adding or removing a secondary IP family, but it does not allow
     * changing the primary IP family of the Service. Valid values are "IPv4"
     * and "IPv6".  This field only applies to Services of types ClusterIP,
     * NodePort, and LoadBalancer, and does apply to "headless" services.
     * This field will be wiped when updating a Service to type ExternalName.
     *
     * This field may hold a maximum of two entries (dual-stack families, in
     * either order).  These families must correspond to the values of the
     * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
     * governed by the ipFamilyPolicy field.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string ipFamilies = 19;</code>
     * @param index The index of the value to return.
     * @return The bytes of the ipFamilies at the given index.
     */
    com.google.protobuf.ByteString
        getIpFamiliesBytes(int index);

    /**
     * <pre>
     * IPFamilyPolicy represents the dual-stack-ness requested or required by
     * this Service. If there is no value provided, then this field will be set
     * to SingleStack. Services can be "SingleStack" (a single IP family),
     * "PreferDualStack" (two IP families on dual-stack configured clusters or
     * a single IP family on single-stack clusters), or "RequireDualStack"
     * (two IP families on dual-stack configured clusters, otherwise fail). The
     * ipFamilies and clusterIPs fields depend on the value of this field. This
     * field will be wiped when updating a service to type ExternalName.
     * +optional
     * </pre>
     *
     * <code>optional string ipFamilyPolicy = 17;</code>
     * @return Whether the ipFamilyPolicy field is set.
     */
    boolean hasIpFamilyPolicy();
    /**
     * <pre>
     * IPFamilyPolicy represents the dual-stack-ness requested or required by
     * this Service. If there is no value provided, then this field will be set
     * to SingleStack. Services can be "SingleStack" (a single IP family),
     * "PreferDualStack" (two IP families on dual-stack configured clusters or
     * a single IP family on single-stack clusters), or "RequireDualStack"
     * (two IP families on dual-stack configured clusters, otherwise fail). The
     * ipFamilies and clusterIPs fields depend on the value of this field. This
     * field will be wiped when updating a service to type ExternalName.
     * +optional
     * </pre>
     *
     * <code>optional string ipFamilyPolicy = 17;</code>
     * @return The ipFamilyPolicy.
     */
    java.lang.String getIpFamilyPolicy();
    /**
     * <pre>
     * IPFamilyPolicy represents the dual-stack-ness requested or required by
     * this Service. If there is no value provided, then this field will be set
     * to SingleStack. Services can be "SingleStack" (a single IP family),
     * "PreferDualStack" (two IP families on dual-stack configured clusters or
     * a single IP family on single-stack clusters), or "RequireDualStack"
     * (two IP families on dual-stack configured clusters, otherwise fail). The
     * ipFamilies and clusterIPs fields depend on the value of this field. This
     * field will be wiped when updating a service to type ExternalName.
     * +optional
     * </pre>
     *
     * <code>optional string ipFamilyPolicy = 17;</code>
     * @return The bytes for ipFamilyPolicy.
     */
    com.google.protobuf.ByteString
        getIpFamilyPolicyBytes();

    /**
     * <pre>
     * allocateLoadBalancerNodePorts defines if NodePorts will be automatically
     * allocated for services with type LoadBalancer.  Default is "true". It
     * may be set to "false" if the cluster load-balancer does not rely on
     * NodePorts.  If the caller requests specific NodePorts (by specifying a
     * value), those requests will be respected, regardless of this field.
     * This field may only be set for services with type LoadBalancer and will
     * be cleared if the type is changed to any other type.
     * +optional
     * </pre>
     *
     * <code>optional bool allocateLoadBalancerNodePorts = 20;</code>
     * @return Whether the allocateLoadBalancerNodePorts field is set.
     */
    boolean hasAllocateLoadBalancerNodePorts();
    /**
     * <pre>
     * allocateLoadBalancerNodePorts defines if NodePorts will be automatically
     * allocated for services with type LoadBalancer.  Default is "true". It
     * may be set to "false" if the cluster load-balancer does not rely on
     * NodePorts.  If the caller requests specific NodePorts (by specifying a
     * value), those requests will be respected, regardless of this field.
     * This field may only be set for services with type LoadBalancer and will
     * be cleared if the type is changed to any other type.
     * +optional
     * </pre>
     *
     * <code>optional bool allocateLoadBalancerNodePorts = 20;</code>
     * @return The allocateLoadBalancerNodePorts.
     */
    boolean getAllocateLoadBalancerNodePorts();

    /**
     * <pre>
     * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
     * If specified, the value of this field must be a label-style identifier, with an optional prefix,
     * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
     * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
     * balancer implementation is used, today this is typically done through the cloud provider integration,
     * but should apply for any default implementation. If set, it is assumed that a load balancer
     * implementation is watching for Services with a matching class. Any default load balancer
     * implementation (e.g. cloud providers) should ignore Services that set this field.
     * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
     * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerClass = 21;</code>
     * @return Whether the loadBalancerClass field is set.
     */
    boolean hasLoadBalancerClass();
    /**
     * <pre>
     * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
     * If specified, the value of this field must be a label-style identifier, with an optional prefix,
     * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
     * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
     * balancer implementation is used, today this is typically done through the cloud provider integration,
     * but should apply for any default implementation. If set, it is assumed that a load balancer
     * implementation is watching for Services with a matching class. Any default load balancer
     * implementation (e.g. cloud providers) should ignore Services that set this field.
     * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
     * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerClass = 21;</code>
     * @return The loadBalancerClass.
     */
    java.lang.String getLoadBalancerClass();
    /**
     * <pre>
     * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
     * If specified, the value of this field must be a label-style identifier, with an optional prefix,
     * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
     * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
     * balancer implementation is used, today this is typically done through the cloud provider integration,
     * but should apply for any default implementation. If set, it is assumed that a load balancer
     * implementation is watching for Services with a matching class. Any default load balancer
     * implementation (e.g. cloud providers) should ignore Services that set this field.
     * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
     * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerClass = 21;</code>
     * @return The bytes for loadBalancerClass.
     */
    com.google.protobuf.ByteString
        getLoadBalancerClassBytes();

    /**
     * <pre>
     * InternalTrafficPolicy describes how nodes distribute service traffic they
     * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
     * only want to talk to endpoints of the service on the same node as the pod,
     * dropping the traffic if there are no local endpoints. The default value,
     * "Cluster", uses the standard behavior of routing to all endpoints evenly
     * (possibly modified by topology and other features).
     * +optional
     * </pre>
     *
     * <code>optional string internalTrafficPolicy = 22;</code>
     * @return Whether the internalTrafficPolicy field is set.
     */
    boolean hasInternalTrafficPolicy();
    /**
     * <pre>
     * InternalTrafficPolicy describes how nodes distribute service traffic they
     * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
     * only want to talk to endpoints of the service on the same node as the pod,
     * dropping the traffic if there are no local endpoints. The default value,
     * "Cluster", uses the standard behavior of routing to all endpoints evenly
     * (possibly modified by topology and other features).
     * +optional
     * </pre>
     *
     * <code>optional string internalTrafficPolicy = 22;</code>
     * @return The internalTrafficPolicy.
     */
    java.lang.String getInternalTrafficPolicy();
    /**
     * <pre>
     * InternalTrafficPolicy describes how nodes distribute service traffic they
     * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
     * only want to talk to endpoints of the service on the same node as the pod,
     * dropping the traffic if there are no local endpoints. The default value,
     * "Cluster", uses the standard behavior of routing to all endpoints evenly
     * (possibly modified by topology and other features).
     * +optional
     * </pre>
     *
     * <code>optional string internalTrafficPolicy = 22;</code>
     * @return The bytes for internalTrafficPolicy.
     */
    com.google.protobuf.ByteString
        getInternalTrafficPolicyBytes();

    /**
     * <pre>
     * TrafficDistribution offers a way to express preferences for how traffic is
     * distributed to Service endpoints. Implementations can use this field as a
     * hint, but are not required to guarantee strict adherence. If the field is
     * not set, the implementation will apply its default routing strategy. If set
     * to "PreferClose", implementations should prioritize endpoints that are
     * topologically close (e.g., same zone).
     * +optional
     * </pre>
     *
     * <code>optional string trafficDistribution = 23;</code>
     * @return Whether the trafficDistribution field is set.
     */
    boolean hasTrafficDistribution();
    /**
     * <pre>
     * TrafficDistribution offers a way to express preferences for how traffic is
     * distributed to Service endpoints. Implementations can use this field as a
     * hint, but are not required to guarantee strict adherence. If the field is
     * not set, the implementation will apply its default routing strategy. If set
     * to "PreferClose", implementations should prioritize endpoints that are
     * topologically close (e.g., same zone).
     * +optional
     * </pre>
     *
     * <code>optional string trafficDistribution = 23;</code>
     * @return The trafficDistribution.
     */
    java.lang.String getTrafficDistribution();
    /**
     * <pre>
     * TrafficDistribution offers a way to express preferences for how traffic is
     * distributed to Service endpoints. Implementations can use this field as a
     * hint, but are not required to guarantee strict adherence. If the field is
     * not set, the implementation will apply its default routing strategy. If set
     * to "PreferClose", implementations should prioritize endpoints that are
     * topologically close (e.g., same zone).
     * +optional
     * </pre>
     *
     * <code>optional string trafficDistribution = 23;</code>
     * @return The bytes for trafficDistribution.
     */
    com.google.protobuf.ByteString
        getTrafficDistributionBytes();
  }
  /**
   * <pre>
   * ServiceSpec describes the attributes that a user creates on a service.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ServiceSpec}
   */
  public static final class ServiceSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ServiceSpec)
      ServiceSpecOrBuilder {
  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= */ "",
        ServiceSpec.class.getName());
    }
    // Use ServiceSpec.newBuilder() to construct.
    private ServiceSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ServiceSpec() {
      ports_ = java.util.Collections.emptyList();
      clusterIP_ = "";
      clusterIPs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      type_ = "";
      externalIPs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      sessionAffinity_ = "";
      loadBalancerIP_ = "";
      loadBalancerSourceRanges_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      externalName_ = "";
      externalTrafficPolicy_ = "";
      ipFamilies_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      ipFamilyPolicy_ = "";
      loadBalancerClass_ = "";
      internalTrafficPolicy_ = "";
      trafficDistribution_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceSpec_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 2:
          return internalGetSelector();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ServiceSpec.class, io.kubernetes.client.proto.V1.ServiceSpec.Builder.class);
    }

    private int bitField0_;
    public static final int PORTS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.ServicePort> ports_;
    /**
     * <pre>
     * The list of ports that are exposed by this service.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +patchMergeKey=port
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=port
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.ServicePort> getPortsList() {
      return ports_;
    }
    /**
     * <pre>
     * The list of ports that are exposed by this service.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +patchMergeKey=port
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=port
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.ServicePortOrBuilder> 
        getPortsOrBuilderList() {
      return ports_;
    }
    /**
     * <pre>
     * The list of ports that are exposed by this service.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +patchMergeKey=port
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=port
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
     */
    @java.lang.Override
    public int getPortsCount() {
      return ports_.size();
    }
    /**
     * <pre>
     * The list of ports that are exposed by this service.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +patchMergeKey=port
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=port
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServicePort getPorts(int index) {
      return ports_.get(index);
    }
    /**
     * <pre>
     * The list of ports that are exposed by this service.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +patchMergeKey=port
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=port
     * +listMapKey=protocol
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServicePortOrBuilder getPortsOrBuilder(
        int index) {
      return ports_.get(index);
    }

    public static final int SELECTOR_FIELD_NUMBER = 2;
    private static final class SelectorDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceSpec_SelectorEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> selector_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetSelector() {
      if (selector_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            SelectorDefaultEntryHolder.defaultEntry);
      }
      return selector_;
    }
    public int getSelectorCount() {
      return internalGetSelector().getMap().size();
    }
    /**
     * <pre>
     * Route service traffic to pods with label keys and values matching this
     * selector. If empty or not present, the service is assumed to have an
     * external process managing its endpoints, which Kubernetes will not
     * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
     * Ignored if type is ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    @java.lang.Override
    public boolean containsSelector(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetSelector().getMap().containsKey(key);
    }
    /**
     * Use {@link #getSelectorMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getSelector() {
      return getSelectorMap();
    }
    /**
     * <pre>
     * Route service traffic to pods with label keys and values matching this
     * selector. If empty or not present, the service is assumed to have an
     * external process managing its endpoints, which Kubernetes will not
     * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
     * Ignored if type is ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getSelectorMap() {
      return internalGetSelector().getMap();
    }
    /**
     * <pre>
     * Route service traffic to pods with label keys and values matching this
     * selector. If empty or not present, the service is assumed to have an
     * external process managing its endpoints, which Kubernetes will not
     * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
     * Ignored if type is ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getSelectorOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetSelector().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Route service traffic to pods with label keys and values matching this
     * selector. If empty or not present, the service is assumed to have an
     * external process managing its endpoints, which Kubernetes will not
     * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
     * Ignored if type is ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/
     * +optional
     * +mapType=atomic
     * </pre>
     *
     * <code>map&lt;string, string&gt; selector = 2;</code>
     */
    @java.lang.Override
    public java.lang.String getSelectorOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetSelector().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int CLUSTERIP_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object clusterIP_ = "";
    /**
     * <pre>
     * clusterIP is the IP address of the service and is usually assigned
     * randomly. If an address is specified manually, is in-range (as per
     * system configuration), and is not in use, it will be allocated to the
     * service; otherwise creation of the service will fail. This field may not
     * be changed through updates unless the type field is also being changed
     * to ExternalName (which requires this field to be blank) or the type
     * field is being changed from ExternalName (in which case this field may
     * optionally be specified, as describe above).  Valid values are "None",
     * empty string (""), or a valid IP address. Setting this to "None" makes a
     * "headless service" (no virtual IP), which is useful when direct endpoint
     * connections are preferred and proxying is not required.  Only applies to
     * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
     * when creating a Service of type ExternalName, creation will fail. This
     * field will be wiped when updating a Service to type ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string clusterIP = 3;</code>
     * @return Whether the clusterIP field is set.
     */
    @java.lang.Override
    public boolean hasClusterIP() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * clusterIP is the IP address of the service and is usually assigned
     * randomly. If an address is specified manually, is in-range (as per
     * system configuration), and is not in use, it will be allocated to the
     * service; otherwise creation of the service will fail. This field may not
     * be changed through updates unless the type field is also being changed
     * to ExternalName (which requires this field to be blank) or the type
     * field is being changed from ExternalName (in which case this field may
     * optionally be specified, as describe above).  Valid values are "None",
     * empty string (""), or a valid IP address. Setting this to "None" makes a
     * "headless service" (no virtual IP), which is useful when direct endpoint
     * connections are preferred and proxying is not required.  Only applies to
     * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
     * when creating a Service of type ExternalName, creation will fail. This
     * field will be wiped when updating a Service to type ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string clusterIP = 3;</code>
     * @return The clusterIP.
     */
    @java.lang.Override
    public java.lang.String getClusterIP() {
      java.lang.Object ref = clusterIP_;
      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()) {
          clusterIP_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * clusterIP is the IP address of the service and is usually assigned
     * randomly. If an address is specified manually, is in-range (as per
     * system configuration), and is not in use, it will be allocated to the
     * service; otherwise creation of the service will fail. This field may not
     * be changed through updates unless the type field is also being changed
     * to ExternalName (which requires this field to be blank) or the type
     * field is being changed from ExternalName (in which case this field may
     * optionally be specified, as describe above).  Valid values are "None",
     * empty string (""), or a valid IP address. Setting this to "None" makes a
     * "headless service" (no virtual IP), which is useful when direct endpoint
     * connections are preferred and proxying is not required.  Only applies to
     * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
     * when creating a Service of type ExternalName, creation will fail. This
     * field will be wiped when updating a Service to type ExternalName.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string clusterIP = 3;</code>
     * @return The bytes for clusterIP.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getClusterIPBytes() {
      java.lang.Object ref = clusterIP_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        clusterIP_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CLUSTERIPS_FIELD_NUMBER = 18;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList clusterIPs_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * ClusterIPs is a list of IP addresses assigned to this service, and are
     * usually assigned randomly.  If an address is specified manually, is
     * in-range (as per system configuration), and is not in use, it will be
     * allocated to the service; otherwise creation of the service will fail.
     * This field may not be changed through updates unless the type field is
     * also being changed to ExternalName (which requires this field to be
     * empty) or the type field is being changed from ExternalName (in which
     * case this field may optionally be specified, as describe above).  Valid
     * values are "None", empty string (""), or a valid IP address.  Setting
     * this to "None" makes a "headless service" (no virtual IP), which is
     * useful when direct endpoint connections are preferred and proxying is
     * not required.  Only applies to types ClusterIP, NodePort, and
     * LoadBalancer. If this field is specified when creating a Service of type
     * ExternalName, creation will fail. This field will be wiped when updating
     * a Service to type ExternalName.  If this field is not specified, it will
     * be initialized from the clusterIP field.  If this field is specified,
     * clients must ensure that clusterIPs[0] and clusterIP have the same
     * value.
     *
     * This field may hold a maximum of two entries (dual-stack IPs, in either order).
     * These IPs must correspond to the values of the ipFamilies field. Both
     * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string clusterIPs = 18;</code>
     * @return A list containing the clusterIPs.
     */
    public com.google.protobuf.ProtocolStringList
        getClusterIPsList() {
      return clusterIPs_;
    }
    /**
     * <pre>
     * ClusterIPs is a list of IP addresses assigned to this service, and are
     * usually assigned randomly.  If an address is specified manually, is
     * in-range (as per system configuration), and is not in use, it will be
     * allocated to the service; otherwise creation of the service will fail.
     * This field may not be changed through updates unless the type field is
     * also being changed to ExternalName (which requires this field to be
     * empty) or the type field is being changed from ExternalName (in which
     * case this field may optionally be specified, as describe above).  Valid
     * values are "None", empty string (""), or a valid IP address.  Setting
     * this to "None" makes a "headless service" (no virtual IP), which is
     * useful when direct endpoint connections are preferred and proxying is
     * not required.  Only applies to types ClusterIP, NodePort, and
     * LoadBalancer. If this field is specified when creating a Service of type
     * ExternalName, creation will fail. This field will be wiped when updating
     * a Service to type ExternalName.  If this field is not specified, it will
     * be initialized from the clusterIP field.  If this field is specified,
     * clients must ensure that clusterIPs[0] and clusterIP have the same
     * value.
     *
     * This field may hold a maximum of two entries (dual-stack IPs, in either order).
     * These IPs must correspond to the values of the ipFamilies field. Both
     * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string clusterIPs = 18;</code>
     * @return The count of clusterIPs.
     */
    public int getClusterIPsCount() {
      return clusterIPs_.size();
    }
    /**
     * <pre>
     * ClusterIPs is a list of IP addresses assigned to this service, and are
     * usually assigned randomly.  If an address is specified manually, is
     * in-range (as per system configuration), and is not in use, it will be
     * allocated to the service; otherwise creation of the service will fail.
     * This field may not be changed through updates unless the type field is
     * also being changed to ExternalName (which requires this field to be
     * empty) or the type field is being changed from ExternalName (in which
     * case this field may optionally be specified, as describe above).  Valid
     * values are "None", empty string (""), or a valid IP address.  Setting
     * this to "None" makes a "headless service" (no virtual IP), which is
     * useful when direct endpoint connections are preferred and proxying is
     * not required.  Only applies to types ClusterIP, NodePort, and
     * LoadBalancer. If this field is specified when creating a Service of type
     * ExternalName, creation will fail. This field will be wiped when updating
     * a Service to type ExternalName.  If this field is not specified, it will
     * be initialized from the clusterIP field.  If this field is specified,
     * clients must ensure that clusterIPs[0] and clusterIP have the same
     * value.
     *
     * This field may hold a maximum of two entries (dual-stack IPs, in either order).
     * These IPs must correspond to the values of the ipFamilies field. Both
     * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string clusterIPs = 18;</code>
     * @param index The index of the element to return.
     * @return The clusterIPs at the given index.
     */
    public java.lang.String getClusterIPs(int index) {
      return clusterIPs_.get(index);
    }
    /**
     * <pre>
     * ClusterIPs is a list of IP addresses assigned to this service, and are
     * usually assigned randomly.  If an address is specified manually, is
     * in-range (as per system configuration), and is not in use, it will be
     * allocated to the service; otherwise creation of the service will fail.
     * This field may not be changed through updates unless the type field is
     * also being changed to ExternalName (which requires this field to be
     * empty) or the type field is being changed from ExternalName (in which
     * case this field may optionally be specified, as describe above).  Valid
     * values are "None", empty string (""), or a valid IP address.  Setting
     * this to "None" makes a "headless service" (no virtual IP), which is
     * useful when direct endpoint connections are preferred and proxying is
     * not required.  Only applies to types ClusterIP, NodePort, and
     * LoadBalancer. If this field is specified when creating a Service of type
     * ExternalName, creation will fail. This field will be wiped when updating
     * a Service to type ExternalName.  If this field is not specified, it will
     * be initialized from the clusterIP field.  If this field is specified,
     * clients must ensure that clusterIPs[0] and clusterIP have the same
     * value.
     *
     * This field may hold a maximum of two entries (dual-stack IPs, in either order).
     * These IPs must correspond to the values of the ipFamilies field. Both
     * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string clusterIPs = 18;</code>
     * @param index The index of the value to return.
     * @return The bytes of the clusterIPs at the given index.
     */
    public com.google.protobuf.ByteString
        getClusterIPsBytes(int index) {
      return clusterIPs_.getByteString(index);
    }

    public static final int TYPE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * type determines how the Service is exposed. Defaults to ClusterIP. Valid
     * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
     * "ClusterIP" allocates a cluster-internal IP address for load-balancing
     * to endpoints. Endpoints are determined by the selector or if that is not
     * specified, by manual construction of an Endpoints object or
     * EndpointSlice objects. If clusterIP is "None", no virtual IP is
     * allocated and the endpoints are published as a set of endpoints rather
     * than a virtual IP.
     * "NodePort" builds on ClusterIP and allocates a port on every node which
     * routes to the same endpoints as the clusterIP.
     * "LoadBalancer" builds on NodePort and creates an external load-balancer
     * (if supported in the current cloud) which routes to the same endpoints
     * as the clusterIP.
     * "ExternalName" aliases this service to the specified externalName.
     * Several other fields do not apply to ExternalName services.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 4;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * type determines how the Service is exposed. Defaults to ClusterIP. Valid
     * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
     * "ClusterIP" allocates a cluster-internal IP address for load-balancing
     * to endpoints. Endpoints are determined by the selector or if that is not
     * specified, by manual construction of an Endpoints object or
     * EndpointSlice objects. If clusterIP is "None", no virtual IP is
     * allocated and the endpoints are published as a set of endpoints rather
     * than a virtual IP.
     * "NodePort" builds on ClusterIP and allocates a port on every node which
     * routes to the same endpoints as the clusterIP.
     * "LoadBalancer" builds on NodePort and creates an external load-balancer
     * (if supported in the current cloud) which routes to the same endpoints
     * as the clusterIP.
     * "ExternalName" aliases this service to the specified externalName.
     * Several other fields do not apply to ExternalName services.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 4;</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 determines how the Service is exposed. Defaults to ClusterIP. Valid
     * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
     * "ClusterIP" allocates a cluster-internal IP address for load-balancing
     * to endpoints. Endpoints are determined by the selector or if that is not
     * specified, by manual construction of an Endpoints object or
     * EndpointSlice objects. If clusterIP is "None", no virtual IP is
     * allocated and the endpoints are published as a set of endpoints rather
     * than a virtual IP.
     * "NodePort" builds on ClusterIP and allocates a port on every node which
     * routes to the same endpoints as the clusterIP.
     * "LoadBalancer" builds on NodePort and creates an external load-balancer
     * (if supported in the current cloud) which routes to the same endpoints
     * as the clusterIP.
     * "ExternalName" aliases this service to the specified externalName.
     * Several other fields do not apply to ExternalName services.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
     * +optional
     * </pre>
     *
     * <code>optional string type = 4;</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 EXTERNALIPS_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList externalIPs_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * externalIPs is a list of IP addresses for which nodes in the cluster
     * will also accept traffic for this service.  These IPs are not managed by
     * Kubernetes.  The user is responsible for ensuring that traffic arrives
     * at a node with this IP.  A common example is external load-balancers
     * that are not part of the Kubernetes system.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string externalIPs = 5;</code>
     * @return A list containing the externalIPs.
     */
    public com.google.protobuf.ProtocolStringList
        getExternalIPsList() {
      return externalIPs_;
    }
    /**
     * <pre>
     * externalIPs is a list of IP addresses for which nodes in the cluster
     * will also accept traffic for this service.  These IPs are not managed by
     * Kubernetes.  The user is responsible for ensuring that traffic arrives
     * at a node with this IP.  A common example is external load-balancers
     * that are not part of the Kubernetes system.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string externalIPs = 5;</code>
     * @return The count of externalIPs.
     */
    public int getExternalIPsCount() {
      return externalIPs_.size();
    }
    /**
     * <pre>
     * externalIPs is a list of IP addresses for which nodes in the cluster
     * will also accept traffic for this service.  These IPs are not managed by
     * Kubernetes.  The user is responsible for ensuring that traffic arrives
     * at a node with this IP.  A common example is external load-balancers
     * that are not part of the Kubernetes system.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string externalIPs = 5;</code>
     * @param index The index of the element to return.
     * @return The externalIPs at the given index.
     */
    public java.lang.String getExternalIPs(int index) {
      return externalIPs_.get(index);
    }
    /**
     * <pre>
     * externalIPs is a list of IP addresses for which nodes in the cluster
     * will also accept traffic for this service.  These IPs are not managed by
     * Kubernetes.  The user is responsible for ensuring that traffic arrives
     * at a node with this IP.  A common example is external load-balancers
     * that are not part of the Kubernetes system.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string externalIPs = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the externalIPs at the given index.
     */
    public com.google.protobuf.ByteString
        getExternalIPsBytes(int index) {
      return externalIPs_.getByteString(index);
    }

    public static final int SESSIONAFFINITY_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object sessionAffinity_ = "";
    /**
     * <pre>
     * Supports "ClientIP" and "None". Used to maintain session affinity.
     * Enable client IP based session affinity.
     * Must be ClientIP or None.
     * Defaults to None.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string sessionAffinity = 7;</code>
     * @return Whether the sessionAffinity field is set.
     */
    @java.lang.Override
    public boolean hasSessionAffinity() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Supports "ClientIP" and "None". Used to maintain session affinity.
     * Enable client IP based session affinity.
     * Must be ClientIP or None.
     * Defaults to None.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string sessionAffinity = 7;</code>
     * @return The sessionAffinity.
     */
    @java.lang.Override
    public java.lang.String getSessionAffinity() {
      java.lang.Object ref = sessionAffinity_;
      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()) {
          sessionAffinity_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Supports "ClientIP" and "None". Used to maintain session affinity.
     * Enable client IP based session affinity.
     * Must be ClientIP or None.
     * Defaults to None.
     * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
     * +optional
     * </pre>
     *
     * <code>optional string sessionAffinity = 7;</code>
     * @return The bytes for sessionAffinity.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSessionAffinityBytes() {
      java.lang.Object ref = sessionAffinity_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sessionAffinity_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOADBALANCERIP_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object loadBalancerIP_ = "";
    /**
     * <pre>
     * Only applies to Service Type: LoadBalancer.
     * This feature depends on whether the underlying cloud-provider supports specifying
     * the loadBalancerIP when a load balancer is created.
     * This field will be ignored if the cloud-provider does not support the feature.
     * Deprecated: This field was under-specified and its meaning varies across implementations.
     * Using it is non-portable and it may not support dual-stack.
     * Users are encouraged to use implementation-specific annotations when available.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerIP = 8;</code>
     * @return Whether the loadBalancerIP field is set.
     */
    @java.lang.Override
    public boolean hasLoadBalancerIP() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Only applies to Service Type: LoadBalancer.
     * This feature depends on whether the underlying cloud-provider supports specifying
     * the loadBalancerIP when a load balancer is created.
     * This field will be ignored if the cloud-provider does not support the feature.
     * Deprecated: This field was under-specified and its meaning varies across implementations.
     * Using it is non-portable and it may not support dual-stack.
     * Users are encouraged to use implementation-specific annotations when available.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerIP = 8;</code>
     * @return The loadBalancerIP.
     */
    @java.lang.Override
    public java.lang.String getLoadBalancerIP() {
      java.lang.Object ref = loadBalancerIP_;
      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()) {
          loadBalancerIP_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Only applies to Service Type: LoadBalancer.
     * This feature depends on whether the underlying cloud-provider supports specifying
     * the loadBalancerIP when a load balancer is created.
     * This field will be ignored if the cloud-provider does not support the feature.
     * Deprecated: This field was under-specified and its meaning varies across implementations.
     * Using it is non-portable and it may not support dual-stack.
     * Users are encouraged to use implementation-specific annotations when available.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerIP = 8;</code>
     * @return The bytes for loadBalancerIP.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLoadBalancerIPBytes() {
      java.lang.Object ref = loadBalancerIP_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        loadBalancerIP_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOADBALANCERSOURCERANGES_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList loadBalancerSourceRanges_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * If specified and supported by the platform, this will restrict traffic through the cloud-provider
     * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
     * cloud-provider does not support the feature."
     * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string loadBalancerSourceRanges = 9;</code>
     * @return A list containing the loadBalancerSourceRanges.
     */
    public com.google.protobuf.ProtocolStringList
        getLoadBalancerSourceRangesList() {
      return loadBalancerSourceRanges_;
    }
    /**
     * <pre>
     * If specified and supported by the platform, this will restrict traffic through the cloud-provider
     * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
     * cloud-provider does not support the feature."
     * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string loadBalancerSourceRanges = 9;</code>
     * @return The count of loadBalancerSourceRanges.
     */
    public int getLoadBalancerSourceRangesCount() {
      return loadBalancerSourceRanges_.size();
    }
    /**
     * <pre>
     * If specified and supported by the platform, this will restrict traffic through the cloud-provider
     * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
     * cloud-provider does not support the feature."
     * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string loadBalancerSourceRanges = 9;</code>
     * @param index The index of the element to return.
     * @return The loadBalancerSourceRanges at the given index.
     */
    public java.lang.String getLoadBalancerSourceRanges(int index) {
      return loadBalancerSourceRanges_.get(index);
    }
    /**
     * <pre>
     * If specified and supported by the platform, this will restrict traffic through the cloud-provider
     * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
     * cloud-provider does not support the feature."
     * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string loadBalancerSourceRanges = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the loadBalancerSourceRanges at the given index.
     */
    public com.google.protobuf.ByteString
        getLoadBalancerSourceRangesBytes(int index) {
      return loadBalancerSourceRanges_.getByteString(index);
    }

    public static final int EXTERNALNAME_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private volatile java.lang.Object externalName_ = "";
    /**
     * <pre>
     * externalName is the external reference that discovery mechanisms will
     * return as an alias for this service (e.g. a DNS CNAME record). No
     * proxying will be involved.  Must be a lowercase RFC-1123 hostname
     * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
     * +optional
     * </pre>
     *
     * <code>optional string externalName = 10;</code>
     * @return Whether the externalName field is set.
     */
    @java.lang.Override
    public boolean hasExternalName() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * externalName is the external reference that discovery mechanisms will
     * return as an alias for this service (e.g. a DNS CNAME record). No
     * proxying will be involved.  Must be a lowercase RFC-1123 hostname
     * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
     * +optional
     * </pre>
     *
     * <code>optional string externalName = 10;</code>
     * @return The externalName.
     */
    @java.lang.Override
    public java.lang.String getExternalName() {
      java.lang.Object ref = externalName_;
      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()) {
          externalName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * externalName is the external reference that discovery mechanisms will
     * return as an alias for this service (e.g. a DNS CNAME record). No
     * proxying will be involved.  Must be a lowercase RFC-1123 hostname
     * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
     * +optional
     * </pre>
     *
     * <code>optional string externalName = 10;</code>
     * @return The bytes for externalName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getExternalNameBytes() {
      java.lang.Object ref = externalName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        externalName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXTERNALTRAFFICPOLICY_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private volatile java.lang.Object externalTrafficPolicy_ = "";
    /**
     * <pre>
     * externalTrafficPolicy describes how nodes distribute service traffic they
     * receive on one of the Service's "externally-facing" addresses (NodePorts,
     * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
     * the service in a way that assumes that external load balancers will take care
     * of balancing the service traffic between nodes, and so each node will deliver
     * traffic only to the node-local endpoints of the service, without masquerading
     * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
     * be dropped.) The default value, "Cluster", uses the standard behavior of
     * routing to all endpoints evenly (possibly modified by topology and other
     * features). Note that traffic sent to an External IP or LoadBalancer IP from
     * within the cluster will always get "Cluster" semantics, but clients sending to
     * a NodePort from within the cluster may need to take traffic policy into account
     * when picking a node.
     * +optional
     * </pre>
     *
     * <code>optional string externalTrafficPolicy = 11;</code>
     * @return Whether the externalTrafficPolicy field is set.
     */
    @java.lang.Override
    public boolean hasExternalTrafficPolicy() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * externalTrafficPolicy describes how nodes distribute service traffic they
     * receive on one of the Service's "externally-facing" addresses (NodePorts,
     * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
     * the service in a way that assumes that external load balancers will take care
     * of balancing the service traffic between nodes, and so each node will deliver
     * traffic only to the node-local endpoints of the service, without masquerading
     * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
     * be dropped.) The default value, "Cluster", uses the standard behavior of
     * routing to all endpoints evenly (possibly modified by topology and other
     * features). Note that traffic sent to an External IP or LoadBalancer IP from
     * within the cluster will always get "Cluster" semantics, but clients sending to
     * a NodePort from within the cluster may need to take traffic policy into account
     * when picking a node.
     * +optional
     * </pre>
     *
     * <code>optional string externalTrafficPolicy = 11;</code>
     * @return The externalTrafficPolicy.
     */
    @java.lang.Override
    public java.lang.String getExternalTrafficPolicy() {
      java.lang.Object ref = externalTrafficPolicy_;
      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()) {
          externalTrafficPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * externalTrafficPolicy describes how nodes distribute service traffic they
     * receive on one of the Service's "externally-facing" addresses (NodePorts,
     * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
     * the service in a way that assumes that external load balancers will take care
     * of balancing the service traffic between nodes, and so each node will deliver
     * traffic only to the node-local endpoints of the service, without masquerading
     * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
     * be dropped.) The default value, "Cluster", uses the standard behavior of
     * routing to all endpoints evenly (possibly modified by topology and other
     * features). Note that traffic sent to an External IP or LoadBalancer IP from
     * within the cluster will always get "Cluster" semantics, but clients sending to
     * a NodePort from within the cluster may need to take traffic policy into account
     * when picking a node.
     * +optional
     * </pre>
     *
     * <code>optional string externalTrafficPolicy = 11;</code>
     * @return The bytes for externalTrafficPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getExternalTrafficPolicyBytes() {
      java.lang.Object ref = externalTrafficPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        externalTrafficPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HEALTHCHECKNODEPORT_FIELD_NUMBER = 12;
    private int healthCheckNodePort_ = 0;
    /**
     * <pre>
     * healthCheckNodePort specifies the healthcheck nodePort for the service.
     * This only applies when type is set to LoadBalancer and
     * externalTrafficPolicy is set to Local. If a value is specified, is
     * in-range, and is not in use, it will be used.  If not specified, a value
     * will be automatically allocated.  External systems (e.g. load-balancers)
     * can use this port to determine if a given node holds endpoints for this
     * service or not.  If this field is specified when creating a Service
     * which does not need it, creation will fail. This field will be wiped
     * when updating a Service to no longer need it (e.g. changing type).
     * This field cannot be updated once set.
     * +optional
     * </pre>
     *
     * <code>optional int32 healthCheckNodePort = 12;</code>
     * @return Whether the healthCheckNodePort field is set.
     */
    @java.lang.Override
    public boolean hasHealthCheckNodePort() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * healthCheckNodePort specifies the healthcheck nodePort for the service.
     * This only applies when type is set to LoadBalancer and
     * externalTrafficPolicy is set to Local. If a value is specified, is
     * in-range, and is not in use, it will be used.  If not specified, a value
     * will be automatically allocated.  External systems (e.g. load-balancers)
     * can use this port to determine if a given node holds endpoints for this
     * service or not.  If this field is specified when creating a Service
     * which does not need it, creation will fail. This field will be wiped
     * when updating a Service to no longer need it (e.g. changing type).
     * This field cannot be updated once set.
     * +optional
     * </pre>
     *
     * <code>optional int32 healthCheckNodePort = 12;</code>
     * @return The healthCheckNodePort.
     */
    @java.lang.Override
    public int getHealthCheckNodePort() {
      return healthCheckNodePort_;
    }

    public static final int PUBLISHNOTREADYADDRESSES_FIELD_NUMBER = 13;
    private boolean publishNotReadyAddresses_ = false;
    /**
     * <pre>
     * publishNotReadyAddresses indicates that any agent which deals with endpoints for this
     * Service should disregard any indications of ready/not-ready.
     * The primary use case for setting this field is for a StatefulSet's Headless Service to
     * propagate SRV DNS records for its Pods for the purpose of peer discovery.
     * The Kubernetes controllers that generate Endpoints and EndpointSlice resources for
     * Services interpret this to mean that all endpoints are considered "ready" even if the
     * Pods themselves are not. Agents which consume only Kubernetes generated endpoints
     * through the Endpoints or EndpointSlice resources can safely assume this behavior.
     * +optional
     * </pre>
     *
     * <code>optional bool publishNotReadyAddresses = 13;</code>
     * @return Whether the publishNotReadyAddresses field is set.
     */
    @java.lang.Override
    public boolean hasPublishNotReadyAddresses() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * publishNotReadyAddresses indicates that any agent which deals with endpoints for this
     * Service should disregard any indications of ready/not-ready.
     * The primary use case for setting this field is for a StatefulSet's Headless Service to
     * propagate SRV DNS records for its Pods for the purpose of peer discovery.
     * The Kubernetes controllers that generate Endpoints and EndpointSlice resources for
     * Services interpret this to mean that all endpoints are considered "ready" even if the
     * Pods themselves are not. Agents which consume only Kubernetes generated endpoints
     * through the Endpoints or EndpointSlice resources can safely assume this behavior.
     * +optional
     * </pre>
     *
     * <code>optional bool publishNotReadyAddresses = 13;</code>
     * @return The publishNotReadyAddresses.
     */
    @java.lang.Override
    public boolean getPublishNotReadyAddresses() {
      return publishNotReadyAddresses_;
    }

    public static final int SESSIONAFFINITYCONFIG_FIELD_NUMBER = 14;
    private io.kubernetes.client.proto.V1.SessionAffinityConfig sessionAffinityConfig_;
    /**
     * <pre>
     * sessionAffinityConfig contains the configurations of session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
     * @return Whether the sessionAffinityConfig field is set.
     */
    @java.lang.Override
    public boolean hasSessionAffinityConfig() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * sessionAffinityConfig contains the configurations of session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
     * @return The sessionAffinityConfig.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SessionAffinityConfig getSessionAffinityConfig() {
      return sessionAffinityConfig_ == null ? io.kubernetes.client.proto.V1.SessionAffinityConfig.getDefaultInstance() : sessionAffinityConfig_;
    }
    /**
     * <pre>
     * sessionAffinityConfig contains the configurations of session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SessionAffinityConfigOrBuilder getSessionAffinityConfigOrBuilder() {
      return sessionAffinityConfig_ == null ? io.kubernetes.client.proto.V1.SessionAffinityConfig.getDefaultInstance() : sessionAffinityConfig_;
    }

    public static final int IPFAMILIES_FIELD_NUMBER = 19;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList ipFamilies_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
     * service. This field is usually assigned automatically based on cluster
     * configuration and the ipFamilyPolicy field. If this field is specified
     * manually, the requested family is available in the cluster,
     * and ipFamilyPolicy allows it, it will be used; otherwise creation of
     * the service will fail. This field is conditionally mutable: it allows
     * for adding or removing a secondary IP family, but it does not allow
     * changing the primary IP family of the Service. Valid values are "IPv4"
     * and "IPv6".  This field only applies to Services of types ClusterIP,
     * NodePort, and LoadBalancer, and does apply to "headless" services.
     * This field will be wiped when updating a Service to type ExternalName.
     *
     * This field may hold a maximum of two entries (dual-stack families, in
     * either order).  These families must correspond to the values of the
     * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
     * governed by the ipFamilyPolicy field.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string ipFamilies = 19;</code>
     * @return A list containing the ipFamilies.
     */
    public com.google.protobuf.ProtocolStringList
        getIpFamiliesList() {
      return ipFamilies_;
    }
    /**
     * <pre>
     * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
     * service. This field is usually assigned automatically based on cluster
     * configuration and the ipFamilyPolicy field. If this field is specified
     * manually, the requested family is available in the cluster,
     * and ipFamilyPolicy allows it, it will be used; otherwise creation of
     * the service will fail. This field is conditionally mutable: it allows
     * for adding or removing a secondary IP family, but it does not allow
     * changing the primary IP family of the Service. Valid values are "IPv4"
     * and "IPv6".  This field only applies to Services of types ClusterIP,
     * NodePort, and LoadBalancer, and does apply to "headless" services.
     * This field will be wiped when updating a Service to type ExternalName.
     *
     * This field may hold a maximum of two entries (dual-stack families, in
     * either order).  These families must correspond to the values of the
     * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
     * governed by the ipFamilyPolicy field.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string ipFamilies = 19;</code>
     * @return The count of ipFamilies.
     */
    public int getIpFamiliesCount() {
      return ipFamilies_.size();
    }
    /**
     * <pre>
     * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
     * service. This field is usually assigned automatically based on cluster
     * configuration and the ipFamilyPolicy field. If this field is specified
     * manually, the requested family is available in the cluster,
     * and ipFamilyPolicy allows it, it will be used; otherwise creation of
     * the service will fail. This field is conditionally mutable: it allows
     * for adding or removing a secondary IP family, but it does not allow
     * changing the primary IP family of the Service. Valid values are "IPv4"
     * and "IPv6".  This field only applies to Services of types ClusterIP,
     * NodePort, and LoadBalancer, and does apply to "headless" services.
     * This field will be wiped when updating a Service to type ExternalName.
     *
     * This field may hold a maximum of two entries (dual-stack families, in
     * either order).  These families must correspond to the values of the
     * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
     * governed by the ipFamilyPolicy field.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string ipFamilies = 19;</code>
     * @param index The index of the element to return.
     * @return The ipFamilies at the given index.
     */
    public java.lang.String getIpFamilies(int index) {
      return ipFamilies_.get(index);
    }
    /**
     * <pre>
     * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
     * service. This field is usually assigned automatically based on cluster
     * configuration and the ipFamilyPolicy field. If this field is specified
     * manually, the requested family is available in the cluster,
     * and ipFamilyPolicy allows it, it will be used; otherwise creation of
     * the service will fail. This field is conditionally mutable: it allows
     * for adding or removing a secondary IP family, but it does not allow
     * changing the primary IP family of the Service. Valid values are "IPv4"
     * and "IPv6".  This field only applies to Services of types ClusterIP,
     * NodePort, and LoadBalancer, and does apply to "headless" services.
     * This field will be wiped when updating a Service to type ExternalName.
     *
     * This field may hold a maximum of two entries (dual-stack families, in
     * either order).  These families must correspond to the values of the
     * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
     * governed by the ipFamilyPolicy field.
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string ipFamilies = 19;</code>
     * @param index The index of the value to return.
     * @return The bytes of the ipFamilies at the given index.
     */
    public com.google.protobuf.ByteString
        getIpFamiliesBytes(int index) {
      return ipFamilies_.getByteString(index);
    }

    public static final int IPFAMILYPOLICY_FIELD_NUMBER = 17;
    @SuppressWarnings("serial")
    private volatile java.lang.Object ipFamilyPolicy_ = "";
    /**
     * <pre>
     * IPFamilyPolicy represents the dual-stack-ness requested or required by
     * this Service. If there is no value provided, then this field will be set
     * to SingleStack. Services can be "SingleStack" (a single IP family),
     * "PreferDualStack" (two IP families on dual-stack configured clusters or
     * a single IP family on single-stack clusters), or "RequireDualStack"
     * (two IP families on dual-stack configured clusters, otherwise fail). The
     * ipFamilies and clusterIPs fields depend on the value of this field. This
     * field will be wiped when updating a service to type ExternalName.
     * +optional
     * </pre>
     *
     * <code>optional string ipFamilyPolicy = 17;</code>
     * @return Whether the ipFamilyPolicy field is set.
     */
    @java.lang.Override
    public boolean hasIpFamilyPolicy() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * IPFamilyPolicy represents the dual-stack-ness requested or required by
     * this Service. If there is no value provided, then this field will be set
     * to SingleStack. Services can be "SingleStack" (a single IP family),
     * "PreferDualStack" (two IP families on dual-stack configured clusters or
     * a single IP family on single-stack clusters), or "RequireDualStack"
     * (two IP families on dual-stack configured clusters, otherwise fail). The
     * ipFamilies and clusterIPs fields depend on the value of this field. This
     * field will be wiped when updating a service to type ExternalName.
     * +optional
     * </pre>
     *
     * <code>optional string ipFamilyPolicy = 17;</code>
     * @return The ipFamilyPolicy.
     */
    @java.lang.Override
    public java.lang.String getIpFamilyPolicy() {
      java.lang.Object ref = ipFamilyPolicy_;
      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()) {
          ipFamilyPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * IPFamilyPolicy represents the dual-stack-ness requested or required by
     * this Service. If there is no value provided, then this field will be set
     * to SingleStack. Services can be "SingleStack" (a single IP family),
     * "PreferDualStack" (two IP families on dual-stack configured clusters or
     * a single IP family on single-stack clusters), or "RequireDualStack"
     * (two IP families on dual-stack configured clusters, otherwise fail). The
     * ipFamilies and clusterIPs fields depend on the value of this field. This
     * field will be wiped when updating a service to type ExternalName.
     * +optional
     * </pre>
     *
     * <code>optional string ipFamilyPolicy = 17;</code>
     * @return The bytes for ipFamilyPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIpFamilyPolicyBytes() {
      java.lang.Object ref = ipFamilyPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ipFamilyPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ALLOCATELOADBALANCERNODEPORTS_FIELD_NUMBER = 20;
    private boolean allocateLoadBalancerNodePorts_ = false;
    /**
     * <pre>
     * allocateLoadBalancerNodePorts defines if NodePorts will be automatically
     * allocated for services with type LoadBalancer.  Default is "true". It
     * may be set to "false" if the cluster load-balancer does not rely on
     * NodePorts.  If the caller requests specific NodePorts (by specifying a
     * value), those requests will be respected, regardless of this field.
     * This field may only be set for services with type LoadBalancer and will
     * be cleared if the type is changed to any other type.
     * +optional
     * </pre>
     *
     * <code>optional bool allocateLoadBalancerNodePorts = 20;</code>
     * @return Whether the allocateLoadBalancerNodePorts field is set.
     */
    @java.lang.Override
    public boolean hasAllocateLoadBalancerNodePorts() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * allocateLoadBalancerNodePorts defines if NodePorts will be automatically
     * allocated for services with type LoadBalancer.  Default is "true". It
     * may be set to "false" if the cluster load-balancer does not rely on
     * NodePorts.  If the caller requests specific NodePorts (by specifying a
     * value), those requests will be respected, regardless of this field.
     * This field may only be set for services with type LoadBalancer and will
     * be cleared if the type is changed to any other type.
     * +optional
     * </pre>
     *
     * <code>optional bool allocateLoadBalancerNodePorts = 20;</code>
     * @return The allocateLoadBalancerNodePorts.
     */
    @java.lang.Override
    public boolean getAllocateLoadBalancerNodePorts() {
      return allocateLoadBalancerNodePorts_;
    }

    public static final int LOADBALANCERCLASS_FIELD_NUMBER = 21;
    @SuppressWarnings("serial")
    private volatile java.lang.Object loadBalancerClass_ = "";
    /**
     * <pre>
     * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
     * If specified, the value of this field must be a label-style identifier, with an optional prefix,
     * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
     * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
     * balancer implementation is used, today this is typically done through the cloud provider integration,
     * but should apply for any default implementation. If set, it is assumed that a load balancer
     * implementation is watching for Services with a matching class. Any default load balancer
     * implementation (e.g. cloud providers) should ignore Services that set this field.
     * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
     * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerClass = 21;</code>
     * @return Whether the loadBalancerClass field is set.
     */
    @java.lang.Override
    public boolean hasLoadBalancerClass() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
     * If specified, the value of this field must be a label-style identifier, with an optional prefix,
     * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
     * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
     * balancer implementation is used, today this is typically done through the cloud provider integration,
     * but should apply for any default implementation. If set, it is assumed that a load balancer
     * implementation is watching for Services with a matching class. Any default load balancer
     * implementation (e.g. cloud providers) should ignore Services that set this field.
     * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
     * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerClass = 21;</code>
     * @return The loadBalancerClass.
     */
    @java.lang.Override
    public java.lang.String getLoadBalancerClass() {
      java.lang.Object ref = loadBalancerClass_;
      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()) {
          loadBalancerClass_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
     * If specified, the value of this field must be a label-style identifier, with an optional prefix,
     * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
     * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
     * balancer implementation is used, today this is typically done through the cloud provider integration,
     * but should apply for any default implementation. If set, it is assumed that a load balancer
     * implementation is watching for Services with a matching class. Any default load balancer
     * implementation (e.g. cloud providers) should ignore Services that set this field.
     * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
     * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
     * +optional
     * </pre>
     *
     * <code>optional string loadBalancerClass = 21;</code>
     * @return The bytes for loadBalancerClass.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLoadBalancerClassBytes() {
      java.lang.Object ref = loadBalancerClass_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        loadBalancerClass_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INTERNALTRAFFICPOLICY_FIELD_NUMBER = 22;
    @SuppressWarnings("serial")
    private volatile java.lang.Object internalTrafficPolicy_ = "";
    /**
     * <pre>
     * InternalTrafficPolicy describes how nodes distribute service traffic they
     * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
     * only want to talk to endpoints of the service on the same node as the pod,
     * dropping the traffic if there are no local endpoints. The default value,
     * "Cluster", uses the standard behavior of routing to all endpoints evenly
     * (possibly modified by topology and other features).
     * +optional
     * </pre>
     *
     * <code>optional string internalTrafficPolicy = 22;</code>
     * @return Whether the internalTrafficPolicy field is set.
     */
    @java.lang.Override
    public boolean hasInternalTrafficPolicy() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <pre>
     * InternalTrafficPolicy describes how nodes distribute service traffic they
     * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
     * only want to talk to endpoints of the service on the same node as the pod,
     * dropping the traffic if there are no local endpoints. The default value,
     * "Cluster", uses the standard behavior of routing to all endpoints evenly
     * (possibly modified by topology and other features).
     * +optional
     * </pre>
     *
     * <code>optional string internalTrafficPolicy = 22;</code>
     * @return The internalTrafficPolicy.
     */
    @java.lang.Override
    public java.lang.String getInternalTrafficPolicy() {
      java.lang.Object ref = internalTrafficPolicy_;
      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()) {
          internalTrafficPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * InternalTrafficPolicy describes how nodes distribute service traffic they
     * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
     * only want to talk to endpoints of the service on the same node as the pod,
     * dropping the traffic if there are no local endpoints. The default value,
     * "Cluster", uses the standard behavior of routing to all endpoints evenly
     * (possibly modified by topology and other features).
     * +optional
     * </pre>
     *
     * <code>optional string internalTrafficPolicy = 22;</code>
     * @return The bytes for internalTrafficPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getInternalTrafficPolicyBytes() {
      java.lang.Object ref = internalTrafficPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        internalTrafficPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TRAFFICDISTRIBUTION_FIELD_NUMBER = 23;
    @SuppressWarnings("serial")
    private volatile java.lang.Object trafficDistribution_ = "";
    /**
     * <pre>
     * TrafficDistribution offers a way to express preferences for how traffic is
     * distributed to Service endpoints. Implementations can use this field as a
     * hint, but are not required to guarantee strict adherence. If the field is
     * not set, the implementation will apply its default routing strategy. If set
     * to "PreferClose", implementations should prioritize endpoints that are
     * topologically close (e.g., same zone).
     * +optional
     * </pre>
     *
     * <code>optional string trafficDistribution = 23;</code>
     * @return Whether the trafficDistribution field is set.
     */
    @java.lang.Override
    public boolean hasTrafficDistribution() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     * TrafficDistribution offers a way to express preferences for how traffic is
     * distributed to Service endpoints. Implementations can use this field as a
     * hint, but are not required to guarantee strict adherence. If the field is
     * not set, the implementation will apply its default routing strategy. If set
     * to "PreferClose", implementations should prioritize endpoints that are
     * topologically close (e.g., same zone).
     * +optional
     * </pre>
     *
     * <code>optional string trafficDistribution = 23;</code>
     * @return The trafficDistribution.
     */
    @java.lang.Override
    public java.lang.String getTrafficDistribution() {
      java.lang.Object ref = trafficDistribution_;
      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()) {
          trafficDistribution_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * TrafficDistribution offers a way to express preferences for how traffic is
     * distributed to Service endpoints. Implementations can use this field as a
     * hint, but are not required to guarantee strict adherence. If the field is
     * not set, the implementation will apply its default routing strategy. If set
     * to "PreferClose", implementations should prioritize endpoints that are
     * topologically close (e.g., same zone).
     * +optional
     * </pre>
     *
     * <code>optional string trafficDistribution = 23;</code>
     * @return The bytes for trafficDistribution.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTrafficDistributionBytes() {
      java.lang.Object ref = trafficDistribution_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        trafficDistribution_ = 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 {
      for (int i = 0; i < ports_.size(); i++) {
        output.writeMessage(1, ports_.get(i));
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetSelector(),
          SelectorDefaultEntryHolder.defaultEntry,
          2);
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, clusterIP_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, type_);
      }
      for (int i = 0; i < externalIPs_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, externalIPs_.getRaw(i));
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, sessionAffinity_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, loadBalancerIP_);
      }
      for (int i = 0; i < loadBalancerSourceRanges_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, loadBalancerSourceRanges_.getRaw(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 10, externalName_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 11, externalTrafficPolicy_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeInt32(12, healthCheckNodePort_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeBool(13, publishNotReadyAddresses_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeMessage(14, getSessionAffinityConfig());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 17, ipFamilyPolicy_);
      }
      for (int i = 0; i < clusterIPs_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 18, clusterIPs_.getRaw(i));
      }
      for (int i = 0; i < ipFamilies_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 19, ipFamilies_.getRaw(i));
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeBool(20, allocateLoadBalancerNodePorts_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 21, loadBalancerClass_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 22, internalTrafficPolicy_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 23, trafficDistribution_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < ports_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, ports_.get(i));
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetSelector().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        selector__ = SelectorDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, selector__);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, clusterIP_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, type_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < externalIPs_.size(); i++) {
          dataSize += computeStringSizeNoTag(externalIPs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getExternalIPsList().size();
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, sessionAffinity_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(8, loadBalancerIP_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < loadBalancerSourceRanges_.size(); i++) {
          dataSize += computeStringSizeNoTag(loadBalancerSourceRanges_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getLoadBalancerSourceRangesList().size();
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(10, externalName_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(11, externalTrafficPolicy_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(12, healthCheckNodePort_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, publishNotReadyAddresses_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, getSessionAffinityConfig());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(17, ipFamilyPolicy_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < clusterIPs_.size(); i++) {
          dataSize += computeStringSizeNoTag(clusterIPs_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getClusterIPsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < ipFamilies_.size(); i++) {
          dataSize += computeStringSizeNoTag(ipFamilies_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getIpFamiliesList().size();
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(20, allocateLoadBalancerNodePorts_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(21, loadBalancerClass_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(22, internalTrafficPolicy_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(23, trafficDistribution_);
      }
      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.V1.ServiceSpec)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ServiceSpec other = (io.kubernetes.client.proto.V1.ServiceSpec) obj;

      if (!getPortsList()
          .equals(other.getPortsList())) return false;
      if (!internalGetSelector().equals(
          other.internalGetSelector())) return false;
      if (hasClusterIP() != other.hasClusterIP()) return false;
      if (hasClusterIP()) {
        if (!getClusterIP()
            .equals(other.getClusterIP())) return false;
      }
      if (!getClusterIPsList()
          .equals(other.getClusterIPsList())) return false;
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (!getExternalIPsList()
          .equals(other.getExternalIPsList())) return false;
      if (hasSessionAffinity() != other.hasSessionAffinity()) return false;
      if (hasSessionAffinity()) {
        if (!getSessionAffinity()
            .equals(other.getSessionAffinity())) return false;
      }
      if (hasLoadBalancerIP() != other.hasLoadBalancerIP()) return false;
      if (hasLoadBalancerIP()) {
        if (!getLoadBalancerIP()
            .equals(other.getLoadBalancerIP())) return false;
      }
      if (!getLoadBalancerSourceRangesList()
          .equals(other.getLoadBalancerSourceRangesList())) return false;
      if (hasExternalName() != other.hasExternalName()) return false;
      if (hasExternalName()) {
        if (!getExternalName()
            .equals(other.getExternalName())) return false;
      }
      if (hasExternalTrafficPolicy() != other.hasExternalTrafficPolicy()) return false;
      if (hasExternalTrafficPolicy()) {
        if (!getExternalTrafficPolicy()
            .equals(other.getExternalTrafficPolicy())) return false;
      }
      if (hasHealthCheckNodePort() != other.hasHealthCheckNodePort()) return false;
      if (hasHealthCheckNodePort()) {
        if (getHealthCheckNodePort()
            != other.getHealthCheckNodePort()) return false;
      }
      if (hasPublishNotReadyAddresses() != other.hasPublishNotReadyAddresses()) return false;
      if (hasPublishNotReadyAddresses()) {
        if (getPublishNotReadyAddresses()
            != other.getPublishNotReadyAddresses()) return false;
      }
      if (hasSessionAffinityConfig() != other.hasSessionAffinityConfig()) return false;
      if (hasSessionAffinityConfig()) {
        if (!getSessionAffinityConfig()
            .equals(other.getSessionAffinityConfig())) return false;
      }
      if (!getIpFamiliesList()
          .equals(other.getIpFamiliesList())) return false;
      if (hasIpFamilyPolicy() != other.hasIpFamilyPolicy()) return false;
      if (hasIpFamilyPolicy()) {
        if (!getIpFamilyPolicy()
            .equals(other.getIpFamilyPolicy())) return false;
      }
      if (hasAllocateLoadBalancerNodePorts() != other.hasAllocateLoadBalancerNodePorts()) return false;
      if (hasAllocateLoadBalancerNodePorts()) {
        if (getAllocateLoadBalancerNodePorts()
            != other.getAllocateLoadBalancerNodePorts()) return false;
      }
      if (hasLoadBalancerClass() != other.hasLoadBalancerClass()) return false;
      if (hasLoadBalancerClass()) {
        if (!getLoadBalancerClass()
            .equals(other.getLoadBalancerClass())) return false;
      }
      if (hasInternalTrafficPolicy() != other.hasInternalTrafficPolicy()) return false;
      if (hasInternalTrafficPolicy()) {
        if (!getInternalTrafficPolicy()
            .equals(other.getInternalTrafficPolicy())) return false;
      }
      if (hasTrafficDistribution() != other.hasTrafficDistribution()) return false;
      if (hasTrafficDistribution()) {
        if (!getTrafficDistribution()
            .equals(other.getTrafficDistribution())) 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 (getPortsCount() > 0) {
        hash = (37 * hash) + PORTS_FIELD_NUMBER;
        hash = (53 * hash) + getPortsList().hashCode();
      }
      if (!internalGetSelector().getMap().isEmpty()) {
        hash = (37 * hash) + SELECTOR_FIELD_NUMBER;
        hash = (53 * hash) + internalGetSelector().hashCode();
      }
      if (hasClusterIP()) {
        hash = (37 * hash) + CLUSTERIP_FIELD_NUMBER;
        hash = (53 * hash) + getClusterIP().hashCode();
      }
      if (getClusterIPsCount() > 0) {
        hash = (37 * hash) + CLUSTERIPS_FIELD_NUMBER;
        hash = (53 * hash) + getClusterIPsList().hashCode();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      if (getExternalIPsCount() > 0) {
        hash = (37 * hash) + EXTERNALIPS_FIELD_NUMBER;
        hash = (53 * hash) + getExternalIPsList().hashCode();
      }
      if (hasSessionAffinity()) {
        hash = (37 * hash) + SESSIONAFFINITY_FIELD_NUMBER;
        hash = (53 * hash) + getSessionAffinity().hashCode();
      }
      if (hasLoadBalancerIP()) {
        hash = (37 * hash) + LOADBALANCERIP_FIELD_NUMBER;
        hash = (53 * hash) + getLoadBalancerIP().hashCode();
      }
      if (getLoadBalancerSourceRangesCount() > 0) {
        hash = (37 * hash) + LOADBALANCERSOURCERANGES_FIELD_NUMBER;
        hash = (53 * hash) + getLoadBalancerSourceRangesList().hashCode();
      }
      if (hasExternalName()) {
        hash = (37 * hash) + EXTERNALNAME_FIELD_NUMBER;
        hash = (53 * hash) + getExternalName().hashCode();
      }
      if (hasExternalTrafficPolicy()) {
        hash = (37 * hash) + EXTERNALTRAFFICPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getExternalTrafficPolicy().hashCode();
      }
      if (hasHealthCheckNodePort()) {
        hash = (37 * hash) + HEALTHCHECKNODEPORT_FIELD_NUMBER;
        hash = (53 * hash) + getHealthCheckNodePort();
      }
      if (hasPublishNotReadyAddresses()) {
        hash = (37 * hash) + PUBLISHNOTREADYADDRESSES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPublishNotReadyAddresses());
      }
      if (hasSessionAffinityConfig()) {
        hash = (37 * hash) + SESSIONAFFINITYCONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getSessionAffinityConfig().hashCode();
      }
      if (getIpFamiliesCount() > 0) {
        hash = (37 * hash) + IPFAMILIES_FIELD_NUMBER;
        hash = (53 * hash) + getIpFamiliesList().hashCode();
      }
      if (hasIpFamilyPolicy()) {
        hash = (37 * hash) + IPFAMILYPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getIpFamilyPolicy().hashCode();
      }
      if (hasAllocateLoadBalancerNodePorts()) {
        hash = (37 * hash) + ALLOCATELOADBALANCERNODEPORTS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getAllocateLoadBalancerNodePorts());
      }
      if (hasLoadBalancerClass()) {
        hash = (37 * hash) + LOADBALANCERCLASS_FIELD_NUMBER;
        hash = (53 * hash) + getLoadBalancerClass().hashCode();
      }
      if (hasInternalTrafficPolicy()) {
        hash = (37 * hash) + INTERNALTRAFFICPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getInternalTrafficPolicy().hashCode();
      }
      if (hasTrafficDistribution()) {
        hash = (37 * hash) + TRAFFICDISTRIBUTION_FIELD_NUMBER;
        hash = (53 * hash) + getTrafficDistribution().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ServiceSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceSpec 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.V1.ServiceSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceSpec 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.V1.ServiceSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ServiceSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceSpec 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.V1.ServiceSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ServiceSpec 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.V1.ServiceSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceSpec 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.V1.ServiceSpec 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>
     * ServiceSpec describes the attributes that a user creates on a service.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ServiceSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ServiceSpec)
        io.kubernetes.client.proto.V1.ServiceSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceSpec_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetSelector();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableSelector();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ServiceSpec.class, io.kubernetes.client.proto.V1.ServiceSpec.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ServiceSpec.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPortsFieldBuilder();
          getSessionAffinityConfigFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
        } else {
          ports_ = null;
          portsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableSelector().clear();
        clusterIP_ = "";
        clusterIPs_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        type_ = "";
        externalIPs_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        sessionAffinity_ = "";
        loadBalancerIP_ = "";
        loadBalancerSourceRanges_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        externalName_ = "";
        externalTrafficPolicy_ = "";
        healthCheckNodePort_ = 0;
        publishNotReadyAddresses_ = false;
        sessionAffinityConfig_ = null;
        if (sessionAffinityConfigBuilder_ != null) {
          sessionAffinityConfigBuilder_.dispose();
          sessionAffinityConfigBuilder_ = null;
        }
        ipFamilies_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        ipFamilyPolicy_ = "";
        allocateLoadBalancerNodePorts_ = false;
        loadBalancerClass_ = "";
        internalTrafficPolicy_ = "";
        trafficDistribution_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ServiceSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceSpec build() {
        io.kubernetes.client.proto.V1.ServiceSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceSpec buildPartial() {
        io.kubernetes.client.proto.V1.ServiceSpec result = new io.kubernetes.client.proto.V1.ServiceSpec(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ServiceSpec result) {
        if (portsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            ports_ = java.util.Collections.unmodifiableList(ports_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.ports_ = ports_;
        } else {
          result.ports_ = portsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ServiceSpec result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.selector_ = internalGetSelector();
          result.selector_.makeImmutable();
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.clusterIP_ = clusterIP_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          clusterIPs_.makeImmutable();
          result.clusterIPs_ = clusterIPs_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.type_ = type_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          externalIPs_.makeImmutable();
          result.externalIPs_ = externalIPs_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.sessionAffinity_ = sessionAffinity_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.loadBalancerIP_ = loadBalancerIP_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          loadBalancerSourceRanges_.makeImmutable();
          result.loadBalancerSourceRanges_ = loadBalancerSourceRanges_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.externalName_ = externalName_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.externalTrafficPolicy_ = externalTrafficPolicy_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.healthCheckNodePort_ = healthCheckNodePort_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.publishNotReadyAddresses_ = publishNotReadyAddresses_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.sessionAffinityConfig_ = sessionAffinityConfigBuilder_ == null
              ? sessionAffinityConfig_
              : sessionAffinityConfigBuilder_.build();
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          ipFamilies_.makeImmutable();
          result.ipFamilies_ = ipFamilies_;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.ipFamilyPolicy_ = ipFamilyPolicy_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.allocateLoadBalancerNodePorts_ = allocateLoadBalancerNodePorts_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.loadBalancerClass_ = loadBalancerClass_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.internalTrafficPolicy_ = internalTrafficPolicy_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.trafficDistribution_ = trafficDistribution_;
          to_bitField0_ |= 0x00002000;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.ServiceSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1.ServiceSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ServiceSpec other) {
        if (other == io.kubernetes.client.proto.V1.ServiceSpec.getDefaultInstance()) return this;
        if (portsBuilder_ == null) {
          if (!other.ports_.isEmpty()) {
            if (ports_.isEmpty()) {
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePortsIsMutable();
              ports_.addAll(other.ports_);
            }
            onChanged();
          }
        } else {
          if (!other.ports_.isEmpty()) {
            if (portsBuilder_.isEmpty()) {
              portsBuilder_.dispose();
              portsBuilder_ = null;
              ports_ = other.ports_;
              bitField0_ = (bitField0_ & ~0x00000001);
              portsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPortsFieldBuilder() : null;
            } else {
              portsBuilder_.addAllMessages(other.ports_);
            }
          }
        }
        internalGetMutableSelector().mergeFrom(
            other.internalGetSelector());
        bitField0_ |= 0x00000002;
        if (other.hasClusterIP()) {
          clusterIP_ = other.clusterIP_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.clusterIPs_.isEmpty()) {
          if (clusterIPs_.isEmpty()) {
            clusterIPs_ = other.clusterIPs_;
            bitField0_ |= 0x00000008;
          } else {
            ensureClusterIPsIsMutable();
            clusterIPs_.addAll(other.clusterIPs_);
          }
          onChanged();
        }
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (!other.externalIPs_.isEmpty()) {
          if (externalIPs_.isEmpty()) {
            externalIPs_ = other.externalIPs_;
            bitField0_ |= 0x00000020;
          } else {
            ensureExternalIPsIsMutable();
            externalIPs_.addAll(other.externalIPs_);
          }
          onChanged();
        }
        if (other.hasSessionAffinity()) {
          sessionAffinity_ = other.sessionAffinity_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasLoadBalancerIP()) {
          loadBalancerIP_ = other.loadBalancerIP_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (!other.loadBalancerSourceRanges_.isEmpty()) {
          if (loadBalancerSourceRanges_.isEmpty()) {
            loadBalancerSourceRanges_ = other.loadBalancerSourceRanges_;
            bitField0_ |= 0x00000100;
          } else {
            ensureLoadBalancerSourceRangesIsMutable();
            loadBalancerSourceRanges_.addAll(other.loadBalancerSourceRanges_);
          }
          onChanged();
        }
        if (other.hasExternalName()) {
          externalName_ = other.externalName_;
          bitField0_ |= 0x00000200;
          onChanged();
        }
        if (other.hasExternalTrafficPolicy()) {
          externalTrafficPolicy_ = other.externalTrafficPolicy_;
          bitField0_ |= 0x00000400;
          onChanged();
        }
        if (other.hasHealthCheckNodePort()) {
          setHealthCheckNodePort(other.getHealthCheckNodePort());
        }
        if (other.hasPublishNotReadyAddresses()) {
          setPublishNotReadyAddresses(other.getPublishNotReadyAddresses());
        }
        if (other.hasSessionAffinityConfig()) {
          mergeSessionAffinityConfig(other.getSessionAffinityConfig());
        }
        if (!other.ipFamilies_.isEmpty()) {
          if (ipFamilies_.isEmpty()) {
            ipFamilies_ = other.ipFamilies_;
            bitField0_ |= 0x00004000;
          } else {
            ensureIpFamiliesIsMutable();
            ipFamilies_.addAll(other.ipFamilies_);
          }
          onChanged();
        }
        if (other.hasIpFamilyPolicy()) {
          ipFamilyPolicy_ = other.ipFamilyPolicy_;
          bitField0_ |= 0x00008000;
          onChanged();
        }
        if (other.hasAllocateLoadBalancerNodePorts()) {
          setAllocateLoadBalancerNodePorts(other.getAllocateLoadBalancerNodePorts());
        }
        if (other.hasLoadBalancerClass()) {
          loadBalancerClass_ = other.loadBalancerClass_;
          bitField0_ |= 0x00020000;
          onChanged();
        }
        if (other.hasInternalTrafficPolicy()) {
          internalTrafficPolicy_ = other.internalTrafficPolicy_;
          bitField0_ |= 0x00040000;
          onChanged();
        }
        if (other.hasTrafficDistribution()) {
          trafficDistribution_ = other.trafficDistribution_;
          bitField0_ |= 0x00080000;
          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.V1.ServicePort m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.ServicePort.parser(),
                        extensionRegistry);
                if (portsBuilder_ == null) {
                  ensurePortsIsMutable();
                  ports_.add(m);
                } else {
                  portsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                selector__ = input.readMessage(
                    SelectorDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableSelector().getMutableMap().put(
                    selector__.getKey(), selector__.getValue());
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                clusterIP_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 34
              case 42: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureExternalIPsIsMutable();
                externalIPs_.add(bs);
                break;
              } // case 42
              case 58: {
                sessionAffinity_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                loadBalancerIP_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureLoadBalancerSourceRangesIsMutable();
                loadBalancerSourceRanges_.add(bs);
                break;
              } // case 74
              case 82: {
                externalName_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 90: {
                externalTrafficPolicy_ = input.readBytes();
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              case 96: {
                healthCheckNodePort_ = input.readInt32();
                bitField0_ |= 0x00000800;
                break;
              } // case 96
              case 104: {
                publishNotReadyAddresses_ = input.readBool();
                bitField0_ |= 0x00001000;
                break;
              } // case 104
              case 114: {
                input.readMessage(
                    getSessionAffinityConfigFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00002000;
                break;
              } // case 114
              case 138: {
                ipFamilyPolicy_ = input.readBytes();
                bitField0_ |= 0x00008000;
                break;
              } // case 138
              case 146: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureClusterIPsIsMutable();
                clusterIPs_.add(bs);
                break;
              } // case 146
              case 154: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureIpFamiliesIsMutable();
                ipFamilies_.add(bs);
                break;
              } // case 154
              case 160: {
                allocateLoadBalancerNodePorts_ = input.readBool();
                bitField0_ |= 0x00010000;
                break;
              } // case 160
              case 170: {
                loadBalancerClass_ = input.readBytes();
                bitField0_ |= 0x00020000;
                break;
              } // case 170
              case 178: {
                internalTrafficPolicy_ = input.readBytes();
                bitField0_ |= 0x00040000;
                break;
              } // case 178
              case 186: {
                trafficDistribution_ = input.readBytes();
                bitField0_ |= 0x00080000;
                break;
              } // case 186
              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.V1.ServicePort> ports_ =
        java.util.Collections.emptyList();
      private void ensurePortsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          ports_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ServicePort>(ports_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ServicePort, io.kubernetes.client.proto.V1.ServicePort.Builder, io.kubernetes.client.proto.V1.ServicePortOrBuilder> portsBuilder_;

      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ServicePort> getPortsList() {
        if (portsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ports_);
        } else {
          return portsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public int getPortsCount() {
        if (portsBuilder_ == null) {
          return ports_.size();
        } else {
          return portsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ServicePort getPorts(int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);
        } else {
          return portsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public Builder setPorts(
          int index, io.kubernetes.client.proto.V1.ServicePort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.set(index, value);
          onChanged();
        } else {
          portsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public Builder setPorts(
          int index, io.kubernetes.client.proto.V1.ServicePort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.set(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public Builder addPorts(io.kubernetes.client.proto.V1.ServicePort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(value);
          onChanged();
        } else {
          portsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public Builder addPorts(
          int index, io.kubernetes.client.proto.V1.ServicePort value) {
        if (portsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePortsIsMutable();
          ports_.add(index, value);
          onChanged();
        } else {
          portsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public Builder addPorts(
          io.kubernetes.client.proto.V1.ServicePort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public Builder addPorts(
          int index, io.kubernetes.client.proto.V1.ServicePort.Builder builderForValue) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.add(index, builderForValue.build());
          onChanged();
        } else {
          portsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public Builder addAllPorts(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ServicePort> values) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ports_);
          onChanged();
        } else {
          portsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public Builder clearPorts() {
        if (portsBuilder_ == null) {
          ports_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          portsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public Builder removePorts(int index) {
        if (portsBuilder_ == null) {
          ensurePortsIsMutable();
          ports_.remove(index);
          onChanged();
        } else {
          portsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ServicePort.Builder getPortsBuilder(
          int index) {
        return getPortsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ServicePortOrBuilder getPortsOrBuilder(
          int index) {
        if (portsBuilder_ == null) {
          return ports_.get(index);  } else {
          return portsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ServicePortOrBuilder> 
           getPortsOrBuilderList() {
        if (portsBuilder_ != null) {
          return portsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ports_);
        }
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ServicePort.Builder addPortsBuilder() {
        return getPortsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ServicePort.getDefaultInstance());
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ServicePort.Builder addPortsBuilder(
          int index) {
        return getPortsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ServicePort.getDefaultInstance());
      }
      /**
       * <pre>
       * The list of ports that are exposed by this service.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +patchMergeKey=port
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=port
       * +listMapKey=protocol
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ServicePort ports = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ServicePort.Builder> 
           getPortsBuilderList() {
        return getPortsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.ServicePort, io.kubernetes.client.proto.V1.ServicePort.Builder, io.kubernetes.client.proto.V1.ServicePortOrBuilder> 
          getPortsFieldBuilder() {
        if (portsBuilder_ == null) {
          portsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.ServicePort, io.kubernetes.client.proto.V1.ServicePort.Builder, io.kubernetes.client.proto.V1.ServicePortOrBuilder>(
                  ports_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          ports_ = null;
        }
        return portsBuilder_;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> selector_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetSelector() {
        if (selector_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              SelectorDefaultEntryHolder.defaultEntry);
        }
        return selector_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableSelector() {
        if (selector_ == null) {
          selector_ = com.google.protobuf.MapField.newMapField(
              SelectorDefaultEntryHolder.defaultEntry);
        }
        if (!selector_.isMutable()) {
          selector_ = selector_.copy();
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return selector_;
      }
      public int getSelectorCount() {
        return internalGetSelector().getMap().size();
      }
      /**
       * <pre>
       * Route service traffic to pods with label keys and values matching this
       * selector. If empty or not present, the service is assumed to have an
       * external process managing its endpoints, which Kubernetes will not
       * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
       * Ignored if type is ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      @java.lang.Override
      public boolean containsSelector(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetSelector().getMap().containsKey(key);
      }
      /**
       * Use {@link #getSelectorMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getSelector() {
        return getSelectorMap();
      }
      /**
       * <pre>
       * Route service traffic to pods with label keys and values matching this
       * selector. If empty or not present, the service is assumed to have an
       * external process managing its endpoints, which Kubernetes will not
       * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
       * Ignored if type is ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getSelectorMap() {
        return internalGetSelector().getMap();
      }
      /**
       * <pre>
       * Route service traffic to pods with label keys and values matching this
       * selector. If empty or not present, the service is assumed to have an
       * external process managing its endpoints, which Kubernetes will not
       * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
       * Ignored if type is ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getSelectorOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetSelector().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Route service traffic to pods with label keys and values matching this
       * selector. If empty or not present, the service is assumed to have an
       * external process managing its endpoints, which Kubernetes will not
       * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
       * Ignored if type is ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      @java.lang.Override
      public java.lang.String getSelectorOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetSelector().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearSelector() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableSelector().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Route service traffic to pods with label keys and values matching this
       * selector. If empty or not present, the service is assumed to have an
       * external process managing its endpoints, which Kubernetes will not
       * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
       * Ignored if type is ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      public Builder removeSelector(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableSelector().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableSelector() {
        bitField0_ |= 0x00000002;
        return internalGetMutableSelector().getMutableMap();
      }
      /**
       * <pre>
       * Route service traffic to pods with label keys and values matching this
       * selector. If empty or not present, the service is assumed to have an
       * external process managing its endpoints, which Kubernetes will not
       * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
       * Ignored if type is ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      public Builder putSelector(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableSelector().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Route service traffic to pods with label keys and values matching this
       * selector. If empty or not present, the service is assumed to have an
       * external process managing its endpoints, which Kubernetes will not
       * modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
       * Ignored if type is ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/
       * +optional
       * +mapType=atomic
       * </pre>
       *
       * <code>map&lt;string, string&gt; selector = 2;</code>
       */
      public Builder putAllSelector(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableSelector().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }

      private java.lang.Object clusterIP_ = "";
      /**
       * <pre>
       * clusterIP is the IP address of the service and is usually assigned
       * randomly. If an address is specified manually, is in-range (as per
       * system configuration), and is not in use, it will be allocated to the
       * service; otherwise creation of the service will fail. This field may not
       * be changed through updates unless the type field is also being changed
       * to ExternalName (which requires this field to be blank) or the type
       * field is being changed from ExternalName (in which case this field may
       * optionally be specified, as describe above).  Valid values are "None",
       * empty string (""), or a valid IP address. Setting this to "None" makes a
       * "headless service" (no virtual IP), which is useful when direct endpoint
       * connections are preferred and proxying is not required.  Only applies to
       * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
       * when creating a Service of type ExternalName, creation will fail. This
       * field will be wiped when updating a Service to type ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string clusterIP = 3;</code>
       * @return Whether the clusterIP field is set.
       */
      public boolean hasClusterIP() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * clusterIP is the IP address of the service and is usually assigned
       * randomly. If an address is specified manually, is in-range (as per
       * system configuration), and is not in use, it will be allocated to the
       * service; otherwise creation of the service will fail. This field may not
       * be changed through updates unless the type field is also being changed
       * to ExternalName (which requires this field to be blank) or the type
       * field is being changed from ExternalName (in which case this field may
       * optionally be specified, as describe above).  Valid values are "None",
       * empty string (""), or a valid IP address. Setting this to "None" makes a
       * "headless service" (no virtual IP), which is useful when direct endpoint
       * connections are preferred and proxying is not required.  Only applies to
       * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
       * when creating a Service of type ExternalName, creation will fail. This
       * field will be wiped when updating a Service to type ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string clusterIP = 3;</code>
       * @return The clusterIP.
       */
      public java.lang.String getClusterIP() {
        java.lang.Object ref = clusterIP_;
        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()) {
            clusterIP_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * clusterIP is the IP address of the service and is usually assigned
       * randomly. If an address is specified manually, is in-range (as per
       * system configuration), and is not in use, it will be allocated to the
       * service; otherwise creation of the service will fail. This field may not
       * be changed through updates unless the type field is also being changed
       * to ExternalName (which requires this field to be blank) or the type
       * field is being changed from ExternalName (in which case this field may
       * optionally be specified, as describe above).  Valid values are "None",
       * empty string (""), or a valid IP address. Setting this to "None" makes a
       * "headless service" (no virtual IP), which is useful when direct endpoint
       * connections are preferred and proxying is not required.  Only applies to
       * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
       * when creating a Service of type ExternalName, creation will fail. This
       * field will be wiped when updating a Service to type ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string clusterIP = 3;</code>
       * @return The bytes for clusterIP.
       */
      public com.google.protobuf.ByteString
          getClusterIPBytes() {
        java.lang.Object ref = clusterIP_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          clusterIP_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * clusterIP is the IP address of the service and is usually assigned
       * randomly. If an address is specified manually, is in-range (as per
       * system configuration), and is not in use, it will be allocated to the
       * service; otherwise creation of the service will fail. This field may not
       * be changed through updates unless the type field is also being changed
       * to ExternalName (which requires this field to be blank) or the type
       * field is being changed from ExternalName (in which case this field may
       * optionally be specified, as describe above).  Valid values are "None",
       * empty string (""), or a valid IP address. Setting this to "None" makes a
       * "headless service" (no virtual IP), which is useful when direct endpoint
       * connections are preferred and proxying is not required.  Only applies to
       * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
       * when creating a Service of type ExternalName, creation will fail. This
       * field will be wiped when updating a Service to type ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string clusterIP = 3;</code>
       * @param value The clusterIP to set.
       * @return This builder for chaining.
       */
      public Builder setClusterIP(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        clusterIP_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * clusterIP is the IP address of the service and is usually assigned
       * randomly. If an address is specified manually, is in-range (as per
       * system configuration), and is not in use, it will be allocated to the
       * service; otherwise creation of the service will fail. This field may not
       * be changed through updates unless the type field is also being changed
       * to ExternalName (which requires this field to be blank) or the type
       * field is being changed from ExternalName (in which case this field may
       * optionally be specified, as describe above).  Valid values are "None",
       * empty string (""), or a valid IP address. Setting this to "None" makes a
       * "headless service" (no virtual IP), which is useful when direct endpoint
       * connections are preferred and proxying is not required.  Only applies to
       * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
       * when creating a Service of type ExternalName, creation will fail. This
       * field will be wiped when updating a Service to type ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string clusterIP = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearClusterIP() {
        clusterIP_ = getDefaultInstance().getClusterIP();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * clusterIP is the IP address of the service and is usually assigned
       * randomly. If an address is specified manually, is in-range (as per
       * system configuration), and is not in use, it will be allocated to the
       * service; otherwise creation of the service will fail. This field may not
       * be changed through updates unless the type field is also being changed
       * to ExternalName (which requires this field to be blank) or the type
       * field is being changed from ExternalName (in which case this field may
       * optionally be specified, as describe above).  Valid values are "None",
       * empty string (""), or a valid IP address. Setting this to "None" makes a
       * "headless service" (no virtual IP), which is useful when direct endpoint
       * connections are preferred and proxying is not required.  Only applies to
       * types ClusterIP, NodePort, and LoadBalancer. If this field is specified
       * when creating a Service of type ExternalName, creation will fail. This
       * field will be wiped when updating a Service to type ExternalName.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string clusterIP = 3;</code>
       * @param value The bytes for clusterIP to set.
       * @return This builder for chaining.
       */
      public Builder setClusterIPBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        clusterIP_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList clusterIPs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureClusterIPsIsMutable() {
        if (!clusterIPs_.isModifiable()) {
          clusterIPs_ = new com.google.protobuf.LazyStringArrayList(clusterIPs_);
        }
        bitField0_ |= 0x00000008;
      }
      /**
       * <pre>
       * ClusterIPs is a list of IP addresses assigned to this service, and are
       * usually assigned randomly.  If an address is specified manually, is
       * in-range (as per system configuration), and is not in use, it will be
       * allocated to the service; otherwise creation of the service will fail.
       * This field may not be changed through updates unless the type field is
       * also being changed to ExternalName (which requires this field to be
       * empty) or the type field is being changed from ExternalName (in which
       * case this field may optionally be specified, as describe above).  Valid
       * values are "None", empty string (""), or a valid IP address.  Setting
       * this to "None" makes a "headless service" (no virtual IP), which is
       * useful when direct endpoint connections are preferred and proxying is
       * not required.  Only applies to types ClusterIP, NodePort, and
       * LoadBalancer. If this field is specified when creating a Service of type
       * ExternalName, creation will fail. This field will be wiped when updating
       * a Service to type ExternalName.  If this field is not specified, it will
       * be initialized from the clusterIP field.  If this field is specified,
       * clients must ensure that clusterIPs[0] and clusterIP have the same
       * value.
       *
       * This field may hold a maximum of two entries (dual-stack IPs, in either order).
       * These IPs must correspond to the values of the ipFamilies field. Both
       * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string clusterIPs = 18;</code>
       * @return A list containing the clusterIPs.
       */
      public com.google.protobuf.ProtocolStringList
          getClusterIPsList() {
        clusterIPs_.makeImmutable();
        return clusterIPs_;
      }
      /**
       * <pre>
       * ClusterIPs is a list of IP addresses assigned to this service, and are
       * usually assigned randomly.  If an address is specified manually, is
       * in-range (as per system configuration), and is not in use, it will be
       * allocated to the service; otherwise creation of the service will fail.
       * This field may not be changed through updates unless the type field is
       * also being changed to ExternalName (which requires this field to be
       * empty) or the type field is being changed from ExternalName (in which
       * case this field may optionally be specified, as describe above).  Valid
       * values are "None", empty string (""), or a valid IP address.  Setting
       * this to "None" makes a "headless service" (no virtual IP), which is
       * useful when direct endpoint connections are preferred and proxying is
       * not required.  Only applies to types ClusterIP, NodePort, and
       * LoadBalancer. If this field is specified when creating a Service of type
       * ExternalName, creation will fail. This field will be wiped when updating
       * a Service to type ExternalName.  If this field is not specified, it will
       * be initialized from the clusterIP field.  If this field is specified,
       * clients must ensure that clusterIPs[0] and clusterIP have the same
       * value.
       *
       * This field may hold a maximum of two entries (dual-stack IPs, in either order).
       * These IPs must correspond to the values of the ipFamilies field. Both
       * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string clusterIPs = 18;</code>
       * @return The count of clusterIPs.
       */
      public int getClusterIPsCount() {
        return clusterIPs_.size();
      }
      /**
       * <pre>
       * ClusterIPs is a list of IP addresses assigned to this service, and are
       * usually assigned randomly.  If an address is specified manually, is
       * in-range (as per system configuration), and is not in use, it will be
       * allocated to the service; otherwise creation of the service will fail.
       * This field may not be changed through updates unless the type field is
       * also being changed to ExternalName (which requires this field to be
       * empty) or the type field is being changed from ExternalName (in which
       * case this field may optionally be specified, as describe above).  Valid
       * values are "None", empty string (""), or a valid IP address.  Setting
       * this to "None" makes a "headless service" (no virtual IP), which is
       * useful when direct endpoint connections are preferred and proxying is
       * not required.  Only applies to types ClusterIP, NodePort, and
       * LoadBalancer. If this field is specified when creating a Service of type
       * ExternalName, creation will fail. This field will be wiped when updating
       * a Service to type ExternalName.  If this field is not specified, it will
       * be initialized from the clusterIP field.  If this field is specified,
       * clients must ensure that clusterIPs[0] and clusterIP have the same
       * value.
       *
       * This field may hold a maximum of two entries (dual-stack IPs, in either order).
       * These IPs must correspond to the values of the ipFamilies field. Both
       * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string clusterIPs = 18;</code>
       * @param index The index of the element to return.
       * @return The clusterIPs at the given index.
       */
      public java.lang.String getClusterIPs(int index) {
        return clusterIPs_.get(index);
      }
      /**
       * <pre>
       * ClusterIPs is a list of IP addresses assigned to this service, and are
       * usually assigned randomly.  If an address is specified manually, is
       * in-range (as per system configuration), and is not in use, it will be
       * allocated to the service; otherwise creation of the service will fail.
       * This field may not be changed through updates unless the type field is
       * also being changed to ExternalName (which requires this field to be
       * empty) or the type field is being changed from ExternalName (in which
       * case this field may optionally be specified, as describe above).  Valid
       * values are "None", empty string (""), or a valid IP address.  Setting
       * this to "None" makes a "headless service" (no virtual IP), which is
       * useful when direct endpoint connections are preferred and proxying is
       * not required.  Only applies to types ClusterIP, NodePort, and
       * LoadBalancer. If this field is specified when creating a Service of type
       * ExternalName, creation will fail. This field will be wiped when updating
       * a Service to type ExternalName.  If this field is not specified, it will
       * be initialized from the clusterIP field.  If this field is specified,
       * clients must ensure that clusterIPs[0] and clusterIP have the same
       * value.
       *
       * This field may hold a maximum of two entries (dual-stack IPs, in either order).
       * These IPs must correspond to the values of the ipFamilies field. Both
       * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string clusterIPs = 18;</code>
       * @param index The index of the value to return.
       * @return The bytes of the clusterIPs at the given index.
       */
      public com.google.protobuf.ByteString
          getClusterIPsBytes(int index) {
        return clusterIPs_.getByteString(index);
      }
      /**
       * <pre>
       * ClusterIPs is a list of IP addresses assigned to this service, and are
       * usually assigned randomly.  If an address is specified manually, is
       * in-range (as per system configuration), and is not in use, it will be
       * allocated to the service; otherwise creation of the service will fail.
       * This field may not be changed through updates unless the type field is
       * also being changed to ExternalName (which requires this field to be
       * empty) or the type field is being changed from ExternalName (in which
       * case this field may optionally be specified, as describe above).  Valid
       * values are "None", empty string (""), or a valid IP address.  Setting
       * this to "None" makes a "headless service" (no virtual IP), which is
       * useful when direct endpoint connections are preferred and proxying is
       * not required.  Only applies to types ClusterIP, NodePort, and
       * LoadBalancer. If this field is specified when creating a Service of type
       * ExternalName, creation will fail. This field will be wiped when updating
       * a Service to type ExternalName.  If this field is not specified, it will
       * be initialized from the clusterIP field.  If this field is specified,
       * clients must ensure that clusterIPs[0] and clusterIP have the same
       * value.
       *
       * This field may hold a maximum of two entries (dual-stack IPs, in either order).
       * These IPs must correspond to the values of the ipFamilies field. Both
       * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string clusterIPs = 18;</code>
       * @param index The index to set the value at.
       * @param value The clusterIPs to set.
       * @return This builder for chaining.
       */
      public Builder setClusterIPs(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureClusterIPsIsMutable();
        clusterIPs_.set(index, value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ClusterIPs is a list of IP addresses assigned to this service, and are
       * usually assigned randomly.  If an address is specified manually, is
       * in-range (as per system configuration), and is not in use, it will be
       * allocated to the service; otherwise creation of the service will fail.
       * This field may not be changed through updates unless the type field is
       * also being changed to ExternalName (which requires this field to be
       * empty) or the type field is being changed from ExternalName (in which
       * case this field may optionally be specified, as describe above).  Valid
       * values are "None", empty string (""), or a valid IP address.  Setting
       * this to "None" makes a "headless service" (no virtual IP), which is
       * useful when direct endpoint connections are preferred and proxying is
       * not required.  Only applies to types ClusterIP, NodePort, and
       * LoadBalancer. If this field is specified when creating a Service of type
       * ExternalName, creation will fail. This field will be wiped when updating
       * a Service to type ExternalName.  If this field is not specified, it will
       * be initialized from the clusterIP field.  If this field is specified,
       * clients must ensure that clusterIPs[0] and clusterIP have the same
       * value.
       *
       * This field may hold a maximum of two entries (dual-stack IPs, in either order).
       * These IPs must correspond to the values of the ipFamilies field. Both
       * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string clusterIPs = 18;</code>
       * @param value The clusterIPs to add.
       * @return This builder for chaining.
       */
      public Builder addClusterIPs(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureClusterIPsIsMutable();
        clusterIPs_.add(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ClusterIPs is a list of IP addresses assigned to this service, and are
       * usually assigned randomly.  If an address is specified manually, is
       * in-range (as per system configuration), and is not in use, it will be
       * allocated to the service; otherwise creation of the service will fail.
       * This field may not be changed through updates unless the type field is
       * also being changed to ExternalName (which requires this field to be
       * empty) or the type field is being changed from ExternalName (in which
       * case this field may optionally be specified, as describe above).  Valid
       * values are "None", empty string (""), or a valid IP address.  Setting
       * this to "None" makes a "headless service" (no virtual IP), which is
       * useful when direct endpoint connections are preferred and proxying is
       * not required.  Only applies to types ClusterIP, NodePort, and
       * LoadBalancer. If this field is specified when creating a Service of type
       * ExternalName, creation will fail. This field will be wiped when updating
       * a Service to type ExternalName.  If this field is not specified, it will
       * be initialized from the clusterIP field.  If this field is specified,
       * clients must ensure that clusterIPs[0] and clusterIP have the same
       * value.
       *
       * This field may hold a maximum of two entries (dual-stack IPs, in either order).
       * These IPs must correspond to the values of the ipFamilies field. Both
       * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string clusterIPs = 18;</code>
       * @param values The clusterIPs to add.
       * @return This builder for chaining.
       */
      public Builder addAllClusterIPs(
          java.lang.Iterable<java.lang.String> values) {
        ensureClusterIPsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, clusterIPs_);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ClusterIPs is a list of IP addresses assigned to this service, and are
       * usually assigned randomly.  If an address is specified manually, is
       * in-range (as per system configuration), and is not in use, it will be
       * allocated to the service; otherwise creation of the service will fail.
       * This field may not be changed through updates unless the type field is
       * also being changed to ExternalName (which requires this field to be
       * empty) or the type field is being changed from ExternalName (in which
       * case this field may optionally be specified, as describe above).  Valid
       * values are "None", empty string (""), or a valid IP address.  Setting
       * this to "None" makes a "headless service" (no virtual IP), which is
       * useful when direct endpoint connections are preferred and proxying is
       * not required.  Only applies to types ClusterIP, NodePort, and
       * LoadBalancer. If this field is specified when creating a Service of type
       * ExternalName, creation will fail. This field will be wiped when updating
       * a Service to type ExternalName.  If this field is not specified, it will
       * be initialized from the clusterIP field.  If this field is specified,
       * clients must ensure that clusterIPs[0] and clusterIP have the same
       * value.
       *
       * This field may hold a maximum of two entries (dual-stack IPs, in either order).
       * These IPs must correspond to the values of the ipFamilies field. Both
       * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string clusterIPs = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearClusterIPs() {
        clusterIPs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ClusterIPs is a list of IP addresses assigned to this service, and are
       * usually assigned randomly.  If an address is specified manually, is
       * in-range (as per system configuration), and is not in use, it will be
       * allocated to the service; otherwise creation of the service will fail.
       * This field may not be changed through updates unless the type field is
       * also being changed to ExternalName (which requires this field to be
       * empty) or the type field is being changed from ExternalName (in which
       * case this field may optionally be specified, as describe above).  Valid
       * values are "None", empty string (""), or a valid IP address.  Setting
       * this to "None" makes a "headless service" (no virtual IP), which is
       * useful when direct endpoint connections are preferred and proxying is
       * not required.  Only applies to types ClusterIP, NodePort, and
       * LoadBalancer. If this field is specified when creating a Service of type
       * ExternalName, creation will fail. This field will be wiped when updating
       * a Service to type ExternalName.  If this field is not specified, it will
       * be initialized from the clusterIP field.  If this field is specified,
       * clients must ensure that clusterIPs[0] and clusterIP have the same
       * value.
       *
       * This field may hold a maximum of two entries (dual-stack IPs, in either order).
       * These IPs must correspond to the values of the ipFamilies field. Both
       * clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string clusterIPs = 18;</code>
       * @param value The bytes of the clusterIPs to add.
       * @return This builder for chaining.
       */
      public Builder addClusterIPsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureClusterIPsIsMutable();
        clusterIPs_.add(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <pre>
       * type determines how the Service is exposed. Defaults to ClusterIP. Valid
       * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
       * "ClusterIP" allocates a cluster-internal IP address for load-balancing
       * to endpoints. Endpoints are determined by the selector or if that is not
       * specified, by manual construction of an Endpoints object or
       * EndpointSlice objects. If clusterIP is "None", no virtual IP is
       * allocated and the endpoints are published as a set of endpoints rather
       * than a virtual IP.
       * "NodePort" builds on ClusterIP and allocates a port on every node which
       * routes to the same endpoints as the clusterIP.
       * "LoadBalancer" builds on NodePort and creates an external load-balancer
       * (if supported in the current cloud) which routes to the same endpoints
       * as the clusterIP.
       * "ExternalName" aliases this service to the specified externalName.
       * Several other fields do not apply to ExternalName services.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 4;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * type determines how the Service is exposed. Defaults to ClusterIP. Valid
       * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
       * "ClusterIP" allocates a cluster-internal IP address for load-balancing
       * to endpoints. Endpoints are determined by the selector or if that is not
       * specified, by manual construction of an Endpoints object or
       * EndpointSlice objects. If clusterIP is "None", no virtual IP is
       * allocated and the endpoints are published as a set of endpoints rather
       * than a virtual IP.
       * "NodePort" builds on ClusterIP and allocates a port on every node which
       * routes to the same endpoints as the clusterIP.
       * "LoadBalancer" builds on NodePort and creates an external load-balancer
       * (if supported in the current cloud) which routes to the same endpoints
       * as the clusterIP.
       * "ExternalName" aliases this service to the specified externalName.
       * Several other fields do not apply to ExternalName services.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 4;</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 determines how the Service is exposed. Defaults to ClusterIP. Valid
       * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
       * "ClusterIP" allocates a cluster-internal IP address for load-balancing
       * to endpoints. Endpoints are determined by the selector or if that is not
       * specified, by manual construction of an Endpoints object or
       * EndpointSlice objects. If clusterIP is "None", no virtual IP is
       * allocated and the endpoints are published as a set of endpoints rather
       * than a virtual IP.
       * "NodePort" builds on ClusterIP and allocates a port on every node which
       * routes to the same endpoints as the clusterIP.
       * "LoadBalancer" builds on NodePort and creates an external load-balancer
       * (if supported in the current cloud) which routes to the same endpoints
       * as the clusterIP.
       * "ExternalName" aliases this service to the specified externalName.
       * Several other fields do not apply to ExternalName services.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 4;</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 determines how the Service is exposed. Defaults to ClusterIP. Valid
       * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
       * "ClusterIP" allocates a cluster-internal IP address for load-balancing
       * to endpoints. Endpoints are determined by the selector or if that is not
       * specified, by manual construction of an Endpoints object or
       * EndpointSlice objects. If clusterIP is "None", no virtual IP is
       * allocated and the endpoints are published as a set of endpoints rather
       * than a virtual IP.
       * "NodePort" builds on ClusterIP and allocates a port on every node which
       * routes to the same endpoints as the clusterIP.
       * "LoadBalancer" builds on NodePort and creates an external load-balancer
       * (if supported in the current cloud) which routes to the same endpoints
       * as the clusterIP.
       * "ExternalName" aliases this service to the specified externalName.
       * Several other fields do not apply to ExternalName services.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 4;</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;
      }
      /**
       * <pre>
       * type determines how the Service is exposed. Defaults to ClusterIP. Valid
       * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
       * "ClusterIP" allocates a cluster-internal IP address for load-balancing
       * to endpoints. Endpoints are determined by the selector or if that is not
       * specified, by manual construction of an Endpoints object or
       * EndpointSlice objects. If clusterIP is "None", no virtual IP is
       * allocated and the endpoints are published as a set of endpoints rather
       * than a virtual IP.
       * "NodePort" builds on ClusterIP and allocates a port on every node which
       * routes to the same endpoints as the clusterIP.
       * "LoadBalancer" builds on NodePort and creates an external load-balancer
       * (if supported in the current cloud) which routes to the same endpoints
       * as the clusterIP.
       * "ExternalName" aliases this service to the specified externalName.
       * Several other fields do not apply to ExternalName services.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * type determines how the Service is exposed. Defaults to ClusterIP. Valid
       * options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
       * "ClusterIP" allocates a cluster-internal IP address for load-balancing
       * to endpoints. Endpoints are determined by the selector or if that is not
       * specified, by manual construction of an Endpoints object or
       * EndpointSlice objects. If clusterIP is "None", no virtual IP is
       * allocated and the endpoints are published as a set of endpoints rather
       * than a virtual IP.
       * "NodePort" builds on ClusterIP and allocates a port on every node which
       * routes to the same endpoints as the clusterIP.
       * "LoadBalancer" builds on NodePort and creates an external load-balancer
       * (if supported in the current cloud) which routes to the same endpoints
       * as the clusterIP.
       * "ExternalName" aliases this service to the specified externalName.
       * Several other fields do not apply to ExternalName services.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
       * +optional
       * </pre>
       *
       * <code>optional string type = 4;</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 com.google.protobuf.LazyStringArrayList externalIPs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureExternalIPsIsMutable() {
        if (!externalIPs_.isModifiable()) {
          externalIPs_ = new com.google.protobuf.LazyStringArrayList(externalIPs_);
        }
        bitField0_ |= 0x00000020;
      }
      /**
       * <pre>
       * externalIPs is a list of IP addresses for which nodes in the cluster
       * will also accept traffic for this service.  These IPs are not managed by
       * Kubernetes.  The user is responsible for ensuring that traffic arrives
       * at a node with this IP.  A common example is external load-balancers
       * that are not part of the Kubernetes system.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string externalIPs = 5;</code>
       * @return A list containing the externalIPs.
       */
      public com.google.protobuf.ProtocolStringList
          getExternalIPsList() {
        externalIPs_.makeImmutable();
        return externalIPs_;
      }
      /**
       * <pre>
       * externalIPs is a list of IP addresses for which nodes in the cluster
       * will also accept traffic for this service.  These IPs are not managed by
       * Kubernetes.  The user is responsible for ensuring that traffic arrives
       * at a node with this IP.  A common example is external load-balancers
       * that are not part of the Kubernetes system.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string externalIPs = 5;</code>
       * @return The count of externalIPs.
       */
      public int getExternalIPsCount() {
        return externalIPs_.size();
      }
      /**
       * <pre>
       * externalIPs is a list of IP addresses for which nodes in the cluster
       * will also accept traffic for this service.  These IPs are not managed by
       * Kubernetes.  The user is responsible for ensuring that traffic arrives
       * at a node with this IP.  A common example is external load-balancers
       * that are not part of the Kubernetes system.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string externalIPs = 5;</code>
       * @param index The index of the element to return.
       * @return The externalIPs at the given index.
       */
      public java.lang.String getExternalIPs(int index) {
        return externalIPs_.get(index);
      }
      /**
       * <pre>
       * externalIPs is a list of IP addresses for which nodes in the cluster
       * will also accept traffic for this service.  These IPs are not managed by
       * Kubernetes.  The user is responsible for ensuring that traffic arrives
       * at a node with this IP.  A common example is external load-balancers
       * that are not part of the Kubernetes system.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string externalIPs = 5;</code>
       * @param index The index of the value to return.
       * @return The bytes of the externalIPs at the given index.
       */
      public com.google.protobuf.ByteString
          getExternalIPsBytes(int index) {
        return externalIPs_.getByteString(index);
      }
      /**
       * <pre>
       * externalIPs is a list of IP addresses for which nodes in the cluster
       * will also accept traffic for this service.  These IPs are not managed by
       * Kubernetes.  The user is responsible for ensuring that traffic arrives
       * at a node with this IP.  A common example is external load-balancers
       * that are not part of the Kubernetes system.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string externalIPs = 5;</code>
       * @param index The index to set the value at.
       * @param value The externalIPs to set.
       * @return This builder for chaining.
       */
      public Builder setExternalIPs(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureExternalIPsIsMutable();
        externalIPs_.set(index, value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * externalIPs is a list of IP addresses for which nodes in the cluster
       * will also accept traffic for this service.  These IPs are not managed by
       * Kubernetes.  The user is responsible for ensuring that traffic arrives
       * at a node with this IP.  A common example is external load-balancers
       * that are not part of the Kubernetes system.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string externalIPs = 5;</code>
       * @param value The externalIPs to add.
       * @return This builder for chaining.
       */
      public Builder addExternalIPs(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureExternalIPsIsMutable();
        externalIPs_.add(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * externalIPs is a list of IP addresses for which nodes in the cluster
       * will also accept traffic for this service.  These IPs are not managed by
       * Kubernetes.  The user is responsible for ensuring that traffic arrives
       * at a node with this IP.  A common example is external load-balancers
       * that are not part of the Kubernetes system.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string externalIPs = 5;</code>
       * @param values The externalIPs to add.
       * @return This builder for chaining.
       */
      public Builder addAllExternalIPs(
          java.lang.Iterable<java.lang.String> values) {
        ensureExternalIPsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, externalIPs_);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * externalIPs is a list of IP addresses for which nodes in the cluster
       * will also accept traffic for this service.  These IPs are not managed by
       * Kubernetes.  The user is responsible for ensuring that traffic arrives
       * at a node with this IP.  A common example is external load-balancers
       * that are not part of the Kubernetes system.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string externalIPs = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearExternalIPs() {
        externalIPs_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * externalIPs is a list of IP addresses for which nodes in the cluster
       * will also accept traffic for this service.  These IPs are not managed by
       * Kubernetes.  The user is responsible for ensuring that traffic arrives
       * at a node with this IP.  A common example is external load-balancers
       * that are not part of the Kubernetes system.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string externalIPs = 5;</code>
       * @param value The bytes of the externalIPs to add.
       * @return This builder for chaining.
       */
      public Builder addExternalIPsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureExternalIPsIsMutable();
        externalIPs_.add(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object sessionAffinity_ = "";
      /**
       * <pre>
       * Supports "ClientIP" and "None". Used to maintain session affinity.
       * Enable client IP based session affinity.
       * Must be ClientIP or None.
       * Defaults to None.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string sessionAffinity = 7;</code>
       * @return Whether the sessionAffinity field is set.
       */
      public boolean hasSessionAffinity() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Supports "ClientIP" and "None". Used to maintain session affinity.
       * Enable client IP based session affinity.
       * Must be ClientIP or None.
       * Defaults to None.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string sessionAffinity = 7;</code>
       * @return The sessionAffinity.
       */
      public java.lang.String getSessionAffinity() {
        java.lang.Object ref = sessionAffinity_;
        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()) {
            sessionAffinity_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Supports "ClientIP" and "None". Used to maintain session affinity.
       * Enable client IP based session affinity.
       * Must be ClientIP or None.
       * Defaults to None.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string sessionAffinity = 7;</code>
       * @return The bytes for sessionAffinity.
       */
      public com.google.protobuf.ByteString
          getSessionAffinityBytes() {
        java.lang.Object ref = sessionAffinity_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sessionAffinity_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Supports "ClientIP" and "None". Used to maintain session affinity.
       * Enable client IP based session affinity.
       * Must be ClientIP or None.
       * Defaults to None.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string sessionAffinity = 7;</code>
       * @param value The sessionAffinity to set.
       * @return This builder for chaining.
       */
      public Builder setSessionAffinity(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        sessionAffinity_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Supports "ClientIP" and "None". Used to maintain session affinity.
       * Enable client IP based session affinity.
       * Must be ClientIP or None.
       * Defaults to None.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string sessionAffinity = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearSessionAffinity() {
        sessionAffinity_ = getDefaultInstance().getSessionAffinity();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Supports "ClientIP" and "None". Used to maintain session affinity.
       * Enable client IP based session affinity.
       * Must be ClientIP or None.
       * Defaults to None.
       * More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
       * +optional
       * </pre>
       *
       * <code>optional string sessionAffinity = 7;</code>
       * @param value The bytes for sessionAffinity to set.
       * @return This builder for chaining.
       */
      public Builder setSessionAffinityBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        sessionAffinity_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object loadBalancerIP_ = "";
      /**
       * <pre>
       * Only applies to Service Type: LoadBalancer.
       * This feature depends on whether the underlying cloud-provider supports specifying
       * the loadBalancerIP when a load balancer is created.
       * This field will be ignored if the cloud-provider does not support the feature.
       * Deprecated: This field was under-specified and its meaning varies across implementations.
       * Using it is non-portable and it may not support dual-stack.
       * Users are encouraged to use implementation-specific annotations when available.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerIP = 8;</code>
       * @return Whether the loadBalancerIP field is set.
       */
      public boolean hasLoadBalancerIP() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * Only applies to Service Type: LoadBalancer.
       * This feature depends on whether the underlying cloud-provider supports specifying
       * the loadBalancerIP when a load balancer is created.
       * This field will be ignored if the cloud-provider does not support the feature.
       * Deprecated: This field was under-specified and its meaning varies across implementations.
       * Using it is non-portable and it may not support dual-stack.
       * Users are encouraged to use implementation-specific annotations when available.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerIP = 8;</code>
       * @return The loadBalancerIP.
       */
      public java.lang.String getLoadBalancerIP() {
        java.lang.Object ref = loadBalancerIP_;
        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()) {
            loadBalancerIP_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Only applies to Service Type: LoadBalancer.
       * This feature depends on whether the underlying cloud-provider supports specifying
       * the loadBalancerIP when a load balancer is created.
       * This field will be ignored if the cloud-provider does not support the feature.
       * Deprecated: This field was under-specified and its meaning varies across implementations.
       * Using it is non-portable and it may not support dual-stack.
       * Users are encouraged to use implementation-specific annotations when available.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerIP = 8;</code>
       * @return The bytes for loadBalancerIP.
       */
      public com.google.protobuf.ByteString
          getLoadBalancerIPBytes() {
        java.lang.Object ref = loadBalancerIP_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          loadBalancerIP_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Only applies to Service Type: LoadBalancer.
       * This feature depends on whether the underlying cloud-provider supports specifying
       * the loadBalancerIP when a load balancer is created.
       * This field will be ignored if the cloud-provider does not support the feature.
       * Deprecated: This field was under-specified and its meaning varies across implementations.
       * Using it is non-portable and it may not support dual-stack.
       * Users are encouraged to use implementation-specific annotations when available.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerIP = 8;</code>
       * @param value The loadBalancerIP to set.
       * @return This builder for chaining.
       */
      public Builder setLoadBalancerIP(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        loadBalancerIP_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only applies to Service Type: LoadBalancer.
       * This feature depends on whether the underlying cloud-provider supports specifying
       * the loadBalancerIP when a load balancer is created.
       * This field will be ignored if the cloud-provider does not support the feature.
       * Deprecated: This field was under-specified and its meaning varies across implementations.
       * Using it is non-portable and it may not support dual-stack.
       * Users are encouraged to use implementation-specific annotations when available.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerIP = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearLoadBalancerIP() {
        loadBalancerIP_ = getDefaultInstance().getLoadBalancerIP();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only applies to Service Type: LoadBalancer.
       * This feature depends on whether the underlying cloud-provider supports specifying
       * the loadBalancerIP when a load balancer is created.
       * This field will be ignored if the cloud-provider does not support the feature.
       * Deprecated: This field was under-specified and its meaning varies across implementations.
       * Using it is non-portable and it may not support dual-stack.
       * Users are encouraged to use implementation-specific annotations when available.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerIP = 8;</code>
       * @param value The bytes for loadBalancerIP to set.
       * @return This builder for chaining.
       */
      public Builder setLoadBalancerIPBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        loadBalancerIP_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList loadBalancerSourceRanges_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureLoadBalancerSourceRangesIsMutable() {
        if (!loadBalancerSourceRanges_.isModifiable()) {
          loadBalancerSourceRanges_ = new com.google.protobuf.LazyStringArrayList(loadBalancerSourceRanges_);
        }
        bitField0_ |= 0x00000100;
      }
      /**
       * <pre>
       * If specified and supported by the platform, this will restrict traffic through the cloud-provider
       * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
       * cloud-provider does not support the feature."
       * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string loadBalancerSourceRanges = 9;</code>
       * @return A list containing the loadBalancerSourceRanges.
       */
      public com.google.protobuf.ProtocolStringList
          getLoadBalancerSourceRangesList() {
        loadBalancerSourceRanges_.makeImmutable();
        return loadBalancerSourceRanges_;
      }
      /**
       * <pre>
       * If specified and supported by the platform, this will restrict traffic through the cloud-provider
       * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
       * cloud-provider does not support the feature."
       * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string loadBalancerSourceRanges = 9;</code>
       * @return The count of loadBalancerSourceRanges.
       */
      public int getLoadBalancerSourceRangesCount() {
        return loadBalancerSourceRanges_.size();
      }
      /**
       * <pre>
       * If specified and supported by the platform, this will restrict traffic through the cloud-provider
       * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
       * cloud-provider does not support the feature."
       * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string loadBalancerSourceRanges = 9;</code>
       * @param index The index of the element to return.
       * @return The loadBalancerSourceRanges at the given index.
       */
      public java.lang.String getLoadBalancerSourceRanges(int index) {
        return loadBalancerSourceRanges_.get(index);
      }
      /**
       * <pre>
       * If specified and supported by the platform, this will restrict traffic through the cloud-provider
       * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
       * cloud-provider does not support the feature."
       * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string loadBalancerSourceRanges = 9;</code>
       * @param index The index of the value to return.
       * @return The bytes of the loadBalancerSourceRanges at the given index.
       */
      public com.google.protobuf.ByteString
          getLoadBalancerSourceRangesBytes(int index) {
        return loadBalancerSourceRanges_.getByteString(index);
      }
      /**
       * <pre>
       * If specified and supported by the platform, this will restrict traffic through the cloud-provider
       * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
       * cloud-provider does not support the feature."
       * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string loadBalancerSourceRanges = 9;</code>
       * @param index The index to set the value at.
       * @param value The loadBalancerSourceRanges to set.
       * @return This builder for chaining.
       */
      public Builder setLoadBalancerSourceRanges(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureLoadBalancerSourceRangesIsMutable();
        loadBalancerSourceRanges_.set(index, value);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified and supported by the platform, this will restrict traffic through the cloud-provider
       * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
       * cloud-provider does not support the feature."
       * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string loadBalancerSourceRanges = 9;</code>
       * @param value The loadBalancerSourceRanges to add.
       * @return This builder for chaining.
       */
      public Builder addLoadBalancerSourceRanges(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureLoadBalancerSourceRangesIsMutable();
        loadBalancerSourceRanges_.add(value);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified and supported by the platform, this will restrict traffic through the cloud-provider
       * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
       * cloud-provider does not support the feature."
       * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string loadBalancerSourceRanges = 9;</code>
       * @param values The loadBalancerSourceRanges to add.
       * @return This builder for chaining.
       */
      public Builder addAllLoadBalancerSourceRanges(
          java.lang.Iterable<java.lang.String> values) {
        ensureLoadBalancerSourceRangesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, loadBalancerSourceRanges_);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified and supported by the platform, this will restrict traffic through the cloud-provider
       * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
       * cloud-provider does not support the feature."
       * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string loadBalancerSourceRanges = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearLoadBalancerSourceRanges() {
        loadBalancerSourceRanges_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If specified and supported by the platform, this will restrict traffic through the cloud-provider
       * load-balancer will be restricted to the specified client IPs. This field will be ignored if the
       * cloud-provider does not support the feature."
       * More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string loadBalancerSourceRanges = 9;</code>
       * @param value The bytes of the loadBalancerSourceRanges to add.
       * @return This builder for chaining.
       */
      public Builder addLoadBalancerSourceRangesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureLoadBalancerSourceRangesIsMutable();
        loadBalancerSourceRanges_.add(value);
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      private java.lang.Object externalName_ = "";
      /**
       * <pre>
       * externalName is the external reference that discovery mechanisms will
       * return as an alias for this service (e.g. a DNS CNAME record). No
       * proxying will be involved.  Must be a lowercase RFC-1123 hostname
       * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
       * +optional
       * </pre>
       *
       * <code>optional string externalName = 10;</code>
       * @return Whether the externalName field is set.
       */
      public boolean hasExternalName() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * externalName is the external reference that discovery mechanisms will
       * return as an alias for this service (e.g. a DNS CNAME record). No
       * proxying will be involved.  Must be a lowercase RFC-1123 hostname
       * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
       * +optional
       * </pre>
       *
       * <code>optional string externalName = 10;</code>
       * @return The externalName.
       */
      public java.lang.String getExternalName() {
        java.lang.Object ref = externalName_;
        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()) {
            externalName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * externalName is the external reference that discovery mechanisms will
       * return as an alias for this service (e.g. a DNS CNAME record). No
       * proxying will be involved.  Must be a lowercase RFC-1123 hostname
       * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
       * +optional
       * </pre>
       *
       * <code>optional string externalName = 10;</code>
       * @return The bytes for externalName.
       */
      public com.google.protobuf.ByteString
          getExternalNameBytes() {
        java.lang.Object ref = externalName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          externalName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * externalName is the external reference that discovery mechanisms will
       * return as an alias for this service (e.g. a DNS CNAME record). No
       * proxying will be involved.  Must be a lowercase RFC-1123 hostname
       * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
       * +optional
       * </pre>
       *
       * <code>optional string externalName = 10;</code>
       * @param value The externalName to set.
       * @return This builder for chaining.
       */
      public Builder setExternalName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        externalName_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * externalName is the external reference that discovery mechanisms will
       * return as an alias for this service (e.g. a DNS CNAME record). No
       * proxying will be involved.  Must be a lowercase RFC-1123 hostname
       * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
       * +optional
       * </pre>
       *
       * <code>optional string externalName = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearExternalName() {
        externalName_ = getDefaultInstance().getExternalName();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * externalName is the external reference that discovery mechanisms will
       * return as an alias for this service (e.g. a DNS CNAME record). No
       * proxying will be involved.  Must be a lowercase RFC-1123 hostname
       * (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
       * +optional
       * </pre>
       *
       * <code>optional string externalName = 10;</code>
       * @param value The bytes for externalName to set.
       * @return This builder for chaining.
       */
      public Builder setExternalNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        externalName_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      private java.lang.Object externalTrafficPolicy_ = "";
      /**
       * <pre>
       * externalTrafficPolicy describes how nodes distribute service traffic they
       * receive on one of the Service's "externally-facing" addresses (NodePorts,
       * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
       * the service in a way that assumes that external load balancers will take care
       * of balancing the service traffic between nodes, and so each node will deliver
       * traffic only to the node-local endpoints of the service, without masquerading
       * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
       * be dropped.) The default value, "Cluster", uses the standard behavior of
       * routing to all endpoints evenly (possibly modified by topology and other
       * features). Note that traffic sent to an External IP or LoadBalancer IP from
       * within the cluster will always get "Cluster" semantics, but clients sending to
       * a NodePort from within the cluster may need to take traffic policy into account
       * when picking a node.
       * +optional
       * </pre>
       *
       * <code>optional string externalTrafficPolicy = 11;</code>
       * @return Whether the externalTrafficPolicy field is set.
       */
      public boolean hasExternalTrafficPolicy() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * externalTrafficPolicy describes how nodes distribute service traffic they
       * receive on one of the Service's "externally-facing" addresses (NodePorts,
       * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
       * the service in a way that assumes that external load balancers will take care
       * of balancing the service traffic between nodes, and so each node will deliver
       * traffic only to the node-local endpoints of the service, without masquerading
       * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
       * be dropped.) The default value, "Cluster", uses the standard behavior of
       * routing to all endpoints evenly (possibly modified by topology and other
       * features). Note that traffic sent to an External IP or LoadBalancer IP from
       * within the cluster will always get "Cluster" semantics, but clients sending to
       * a NodePort from within the cluster may need to take traffic policy into account
       * when picking a node.
       * +optional
       * </pre>
       *
       * <code>optional string externalTrafficPolicy = 11;</code>
       * @return The externalTrafficPolicy.
       */
      public java.lang.String getExternalTrafficPolicy() {
        java.lang.Object ref = externalTrafficPolicy_;
        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()) {
            externalTrafficPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * externalTrafficPolicy describes how nodes distribute service traffic they
       * receive on one of the Service's "externally-facing" addresses (NodePorts,
       * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
       * the service in a way that assumes that external load balancers will take care
       * of balancing the service traffic between nodes, and so each node will deliver
       * traffic only to the node-local endpoints of the service, without masquerading
       * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
       * be dropped.) The default value, "Cluster", uses the standard behavior of
       * routing to all endpoints evenly (possibly modified by topology and other
       * features). Note that traffic sent to an External IP or LoadBalancer IP from
       * within the cluster will always get "Cluster" semantics, but clients sending to
       * a NodePort from within the cluster may need to take traffic policy into account
       * when picking a node.
       * +optional
       * </pre>
       *
       * <code>optional string externalTrafficPolicy = 11;</code>
       * @return The bytes for externalTrafficPolicy.
       */
      public com.google.protobuf.ByteString
          getExternalTrafficPolicyBytes() {
        java.lang.Object ref = externalTrafficPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          externalTrafficPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * externalTrafficPolicy describes how nodes distribute service traffic they
       * receive on one of the Service's "externally-facing" addresses (NodePorts,
       * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
       * the service in a way that assumes that external load balancers will take care
       * of balancing the service traffic between nodes, and so each node will deliver
       * traffic only to the node-local endpoints of the service, without masquerading
       * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
       * be dropped.) The default value, "Cluster", uses the standard behavior of
       * routing to all endpoints evenly (possibly modified by topology and other
       * features). Note that traffic sent to an External IP or LoadBalancer IP from
       * within the cluster will always get "Cluster" semantics, but clients sending to
       * a NodePort from within the cluster may need to take traffic policy into account
       * when picking a node.
       * +optional
       * </pre>
       *
       * <code>optional string externalTrafficPolicy = 11;</code>
       * @param value The externalTrafficPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setExternalTrafficPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        externalTrafficPolicy_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * externalTrafficPolicy describes how nodes distribute service traffic they
       * receive on one of the Service's "externally-facing" addresses (NodePorts,
       * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
       * the service in a way that assumes that external load balancers will take care
       * of balancing the service traffic between nodes, and so each node will deliver
       * traffic only to the node-local endpoints of the service, without masquerading
       * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
       * be dropped.) The default value, "Cluster", uses the standard behavior of
       * routing to all endpoints evenly (possibly modified by topology and other
       * features). Note that traffic sent to an External IP or LoadBalancer IP from
       * within the cluster will always get "Cluster" semantics, but clients sending to
       * a NodePort from within the cluster may need to take traffic policy into account
       * when picking a node.
       * +optional
       * </pre>
       *
       * <code>optional string externalTrafficPolicy = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearExternalTrafficPolicy() {
        externalTrafficPolicy_ = getDefaultInstance().getExternalTrafficPolicy();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * externalTrafficPolicy describes how nodes distribute service traffic they
       * receive on one of the Service's "externally-facing" addresses (NodePorts,
       * ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
       * the service in a way that assumes that external load balancers will take care
       * of balancing the service traffic between nodes, and so each node will deliver
       * traffic only to the node-local endpoints of the service, without masquerading
       * the client source IP. (Traffic mistakenly sent to a node with no endpoints will
       * be dropped.) The default value, "Cluster", uses the standard behavior of
       * routing to all endpoints evenly (possibly modified by topology and other
       * features). Note that traffic sent to an External IP or LoadBalancer IP from
       * within the cluster will always get "Cluster" semantics, but clients sending to
       * a NodePort from within the cluster may need to take traffic policy into account
       * when picking a node.
       * +optional
       * </pre>
       *
       * <code>optional string externalTrafficPolicy = 11;</code>
       * @param value The bytes for externalTrafficPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setExternalTrafficPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        externalTrafficPolicy_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }

      private int healthCheckNodePort_ ;
      /**
       * <pre>
       * healthCheckNodePort specifies the healthcheck nodePort for the service.
       * This only applies when type is set to LoadBalancer and
       * externalTrafficPolicy is set to Local. If a value is specified, is
       * in-range, and is not in use, it will be used.  If not specified, a value
       * will be automatically allocated.  External systems (e.g. load-balancers)
       * can use this port to determine if a given node holds endpoints for this
       * service or not.  If this field is specified when creating a Service
       * which does not need it, creation will fail. This field will be wiped
       * when updating a Service to no longer need it (e.g. changing type).
       * This field cannot be updated once set.
       * +optional
       * </pre>
       *
       * <code>optional int32 healthCheckNodePort = 12;</code>
       * @return Whether the healthCheckNodePort field is set.
       */
      @java.lang.Override
      public boolean hasHealthCheckNodePort() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * healthCheckNodePort specifies the healthcheck nodePort for the service.
       * This only applies when type is set to LoadBalancer and
       * externalTrafficPolicy is set to Local. If a value is specified, is
       * in-range, and is not in use, it will be used.  If not specified, a value
       * will be automatically allocated.  External systems (e.g. load-balancers)
       * can use this port to determine if a given node holds endpoints for this
       * service or not.  If this field is specified when creating a Service
       * which does not need it, creation will fail. This field will be wiped
       * when updating a Service to no longer need it (e.g. changing type).
       * This field cannot be updated once set.
       * +optional
       * </pre>
       *
       * <code>optional int32 healthCheckNodePort = 12;</code>
       * @return The healthCheckNodePort.
       */
      @java.lang.Override
      public int getHealthCheckNodePort() {
        return healthCheckNodePort_;
      }
      /**
       * <pre>
       * healthCheckNodePort specifies the healthcheck nodePort for the service.
       * This only applies when type is set to LoadBalancer and
       * externalTrafficPolicy is set to Local. If a value is specified, is
       * in-range, and is not in use, it will be used.  If not specified, a value
       * will be automatically allocated.  External systems (e.g. load-balancers)
       * can use this port to determine if a given node holds endpoints for this
       * service or not.  If this field is specified when creating a Service
       * which does not need it, creation will fail. This field will be wiped
       * when updating a Service to no longer need it (e.g. changing type).
       * This field cannot be updated once set.
       * +optional
       * </pre>
       *
       * <code>optional int32 healthCheckNodePort = 12;</code>
       * @param value The healthCheckNodePort to set.
       * @return This builder for chaining.
       */
      public Builder setHealthCheckNodePort(int value) {

        healthCheckNodePort_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * healthCheckNodePort specifies the healthcheck nodePort for the service.
       * This only applies when type is set to LoadBalancer and
       * externalTrafficPolicy is set to Local. If a value is specified, is
       * in-range, and is not in use, it will be used.  If not specified, a value
       * will be automatically allocated.  External systems (e.g. load-balancers)
       * can use this port to determine if a given node holds endpoints for this
       * service or not.  If this field is specified when creating a Service
       * which does not need it, creation will fail. This field will be wiped
       * when updating a Service to no longer need it (e.g. changing type).
       * This field cannot be updated once set.
       * +optional
       * </pre>
       *
       * <code>optional int32 healthCheckNodePort = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearHealthCheckNodePort() {
        bitField0_ = (bitField0_ & ~0x00000800);
        healthCheckNodePort_ = 0;
        onChanged();
        return this;
      }

      private boolean publishNotReadyAddresses_ ;
      /**
       * <pre>
       * publishNotReadyAddresses indicates that any agent which deals with endpoints for this
       * Service should disregard any indications of ready/not-ready.
       * The primary use case for setting this field is for a StatefulSet's Headless Service to
       * propagate SRV DNS records for its Pods for the purpose of peer discovery.
       * The Kubernetes controllers that generate Endpoints and EndpointSlice resources for
       * Services interpret this to mean that all endpoints are considered "ready" even if the
       * Pods themselves are not. Agents which consume only Kubernetes generated endpoints
       * through the Endpoints or EndpointSlice resources can safely assume this behavior.
       * +optional
       * </pre>
       *
       * <code>optional bool publishNotReadyAddresses = 13;</code>
       * @return Whether the publishNotReadyAddresses field is set.
       */
      @java.lang.Override
      public boolean hasPublishNotReadyAddresses() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       * publishNotReadyAddresses indicates that any agent which deals with endpoints for this
       * Service should disregard any indications of ready/not-ready.
       * The primary use case for setting this field is for a StatefulSet's Headless Service to
       * propagate SRV DNS records for its Pods for the purpose of peer discovery.
       * The Kubernetes controllers that generate Endpoints and EndpointSlice resources for
       * Services interpret this to mean that all endpoints are considered "ready" even if the
       * Pods themselves are not. Agents which consume only Kubernetes generated endpoints
       * through the Endpoints or EndpointSlice resources can safely assume this behavior.
       * +optional
       * </pre>
       *
       * <code>optional bool publishNotReadyAddresses = 13;</code>
       * @return The publishNotReadyAddresses.
       */
      @java.lang.Override
      public boolean getPublishNotReadyAddresses() {
        return publishNotReadyAddresses_;
      }
      /**
       * <pre>
       * publishNotReadyAddresses indicates that any agent which deals with endpoints for this
       * Service should disregard any indications of ready/not-ready.
       * The primary use case for setting this field is for a StatefulSet's Headless Service to
       * propagate SRV DNS records for its Pods for the purpose of peer discovery.
       * The Kubernetes controllers that generate Endpoints and EndpointSlice resources for
       * Services interpret this to mean that all endpoints are considered "ready" even if the
       * Pods themselves are not. Agents which consume only Kubernetes generated endpoints
       * through the Endpoints or EndpointSlice resources can safely assume this behavior.
       * +optional
       * </pre>
       *
       * <code>optional bool publishNotReadyAddresses = 13;</code>
       * @param value The publishNotReadyAddresses to set.
       * @return This builder for chaining.
       */
      public Builder setPublishNotReadyAddresses(boolean value) {

        publishNotReadyAddresses_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * publishNotReadyAddresses indicates that any agent which deals with endpoints for this
       * Service should disregard any indications of ready/not-ready.
       * The primary use case for setting this field is for a StatefulSet's Headless Service to
       * propagate SRV DNS records for its Pods for the purpose of peer discovery.
       * The Kubernetes controllers that generate Endpoints and EndpointSlice resources for
       * Services interpret this to mean that all endpoints are considered "ready" even if the
       * Pods themselves are not. Agents which consume only Kubernetes generated endpoints
       * through the Endpoints or EndpointSlice resources can safely assume this behavior.
       * +optional
       * </pre>
       *
       * <code>optional bool publishNotReadyAddresses = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearPublishNotReadyAddresses() {
        bitField0_ = (bitField0_ & ~0x00001000);
        publishNotReadyAddresses_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.SessionAffinityConfig sessionAffinityConfig_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SessionAffinityConfig, io.kubernetes.client.proto.V1.SessionAffinityConfig.Builder, io.kubernetes.client.proto.V1.SessionAffinityConfigOrBuilder> sessionAffinityConfigBuilder_;
      /**
       * <pre>
       * sessionAffinityConfig contains the configurations of session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
       * @return Whether the sessionAffinityConfig field is set.
       */
      public boolean hasSessionAffinityConfig() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * sessionAffinityConfig contains the configurations of session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
       * @return The sessionAffinityConfig.
       */
      public io.kubernetes.client.proto.V1.SessionAffinityConfig getSessionAffinityConfig() {
        if (sessionAffinityConfigBuilder_ == null) {
          return sessionAffinityConfig_ == null ? io.kubernetes.client.proto.V1.SessionAffinityConfig.getDefaultInstance() : sessionAffinityConfig_;
        } else {
          return sessionAffinityConfigBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * sessionAffinityConfig contains the configurations of session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
       */
      public Builder setSessionAffinityConfig(io.kubernetes.client.proto.V1.SessionAffinityConfig value) {
        if (sessionAffinityConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sessionAffinityConfig_ = value;
        } else {
          sessionAffinityConfigBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sessionAffinityConfig contains the configurations of session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
       */
      public Builder setSessionAffinityConfig(
          io.kubernetes.client.proto.V1.SessionAffinityConfig.Builder builderForValue) {
        if (sessionAffinityConfigBuilder_ == null) {
          sessionAffinityConfig_ = builderForValue.build();
        } else {
          sessionAffinityConfigBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sessionAffinityConfig contains the configurations of session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
       */
      public Builder mergeSessionAffinityConfig(io.kubernetes.client.proto.V1.SessionAffinityConfig value) {
        if (sessionAffinityConfigBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0) &&
            sessionAffinityConfig_ != null &&
            sessionAffinityConfig_ != io.kubernetes.client.proto.V1.SessionAffinityConfig.getDefaultInstance()) {
            getSessionAffinityConfigBuilder().mergeFrom(value);
          } else {
            sessionAffinityConfig_ = value;
          }
        } else {
          sessionAffinityConfigBuilder_.mergeFrom(value);
        }
        if (sessionAffinityConfig_ != null) {
          bitField0_ |= 0x00002000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * sessionAffinityConfig contains the configurations of session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
       */
      public Builder clearSessionAffinityConfig() {
        bitField0_ = (bitField0_ & ~0x00002000);
        sessionAffinityConfig_ = null;
        if (sessionAffinityConfigBuilder_ != null) {
          sessionAffinityConfigBuilder_.dispose();
          sessionAffinityConfigBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sessionAffinityConfig contains the configurations of session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
       */
      public io.kubernetes.client.proto.V1.SessionAffinityConfig.Builder getSessionAffinityConfigBuilder() {
        bitField0_ |= 0x00002000;
        onChanged();
        return getSessionAffinityConfigFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * sessionAffinityConfig contains the configurations of session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
       */
      public io.kubernetes.client.proto.V1.SessionAffinityConfigOrBuilder getSessionAffinityConfigOrBuilder() {
        if (sessionAffinityConfigBuilder_ != null) {
          return sessionAffinityConfigBuilder_.getMessageOrBuilder();
        } else {
          return sessionAffinityConfig_ == null ?
              io.kubernetes.client.proto.V1.SessionAffinityConfig.getDefaultInstance() : sessionAffinityConfig_;
        }
      }
      /**
       * <pre>
       * sessionAffinityConfig contains the configurations of session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SessionAffinityConfig sessionAffinityConfig = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SessionAffinityConfig, io.kubernetes.client.proto.V1.SessionAffinityConfig.Builder, io.kubernetes.client.proto.V1.SessionAffinityConfigOrBuilder> 
          getSessionAffinityConfigFieldBuilder() {
        if (sessionAffinityConfigBuilder_ == null) {
          sessionAffinityConfigBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SessionAffinityConfig, io.kubernetes.client.proto.V1.SessionAffinityConfig.Builder, io.kubernetes.client.proto.V1.SessionAffinityConfigOrBuilder>(
                  getSessionAffinityConfig(),
                  getParentForChildren(),
                  isClean());
          sessionAffinityConfig_ = null;
        }
        return sessionAffinityConfigBuilder_;
      }

      private com.google.protobuf.LazyStringArrayList ipFamilies_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureIpFamiliesIsMutable() {
        if (!ipFamilies_.isModifiable()) {
          ipFamilies_ = new com.google.protobuf.LazyStringArrayList(ipFamilies_);
        }
        bitField0_ |= 0x00004000;
      }
      /**
       * <pre>
       * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
       * service. This field is usually assigned automatically based on cluster
       * configuration and the ipFamilyPolicy field. If this field is specified
       * manually, the requested family is available in the cluster,
       * and ipFamilyPolicy allows it, it will be used; otherwise creation of
       * the service will fail. This field is conditionally mutable: it allows
       * for adding or removing a secondary IP family, but it does not allow
       * changing the primary IP family of the Service. Valid values are "IPv4"
       * and "IPv6".  This field only applies to Services of types ClusterIP,
       * NodePort, and LoadBalancer, and does apply to "headless" services.
       * This field will be wiped when updating a Service to type ExternalName.
       *
       * This field may hold a maximum of two entries (dual-stack families, in
       * either order).  These families must correspond to the values of the
       * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
       * governed by the ipFamilyPolicy field.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string ipFamilies = 19;</code>
       * @return A list containing the ipFamilies.
       */
      public com.google.protobuf.ProtocolStringList
          getIpFamiliesList() {
        ipFamilies_.makeImmutable();
        return ipFamilies_;
      }
      /**
       * <pre>
       * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
       * service. This field is usually assigned automatically based on cluster
       * configuration and the ipFamilyPolicy field. If this field is specified
       * manually, the requested family is available in the cluster,
       * and ipFamilyPolicy allows it, it will be used; otherwise creation of
       * the service will fail. This field is conditionally mutable: it allows
       * for adding or removing a secondary IP family, but it does not allow
       * changing the primary IP family of the Service. Valid values are "IPv4"
       * and "IPv6".  This field only applies to Services of types ClusterIP,
       * NodePort, and LoadBalancer, and does apply to "headless" services.
       * This field will be wiped when updating a Service to type ExternalName.
       *
       * This field may hold a maximum of two entries (dual-stack families, in
       * either order).  These families must correspond to the values of the
       * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
       * governed by the ipFamilyPolicy field.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string ipFamilies = 19;</code>
       * @return The count of ipFamilies.
       */
      public int getIpFamiliesCount() {
        return ipFamilies_.size();
      }
      /**
       * <pre>
       * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
       * service. This field is usually assigned automatically based on cluster
       * configuration and the ipFamilyPolicy field. If this field is specified
       * manually, the requested family is available in the cluster,
       * and ipFamilyPolicy allows it, it will be used; otherwise creation of
       * the service will fail. This field is conditionally mutable: it allows
       * for adding or removing a secondary IP family, but it does not allow
       * changing the primary IP family of the Service. Valid values are "IPv4"
       * and "IPv6".  This field only applies to Services of types ClusterIP,
       * NodePort, and LoadBalancer, and does apply to "headless" services.
       * This field will be wiped when updating a Service to type ExternalName.
       *
       * This field may hold a maximum of two entries (dual-stack families, in
       * either order).  These families must correspond to the values of the
       * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
       * governed by the ipFamilyPolicy field.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string ipFamilies = 19;</code>
       * @param index The index of the element to return.
       * @return The ipFamilies at the given index.
       */
      public java.lang.String getIpFamilies(int index) {
        return ipFamilies_.get(index);
      }
      /**
       * <pre>
       * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
       * service. This field is usually assigned automatically based on cluster
       * configuration and the ipFamilyPolicy field. If this field is specified
       * manually, the requested family is available in the cluster,
       * and ipFamilyPolicy allows it, it will be used; otherwise creation of
       * the service will fail. This field is conditionally mutable: it allows
       * for adding or removing a secondary IP family, but it does not allow
       * changing the primary IP family of the Service. Valid values are "IPv4"
       * and "IPv6".  This field only applies to Services of types ClusterIP,
       * NodePort, and LoadBalancer, and does apply to "headless" services.
       * This field will be wiped when updating a Service to type ExternalName.
       *
       * This field may hold a maximum of two entries (dual-stack families, in
       * either order).  These families must correspond to the values of the
       * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
       * governed by the ipFamilyPolicy field.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string ipFamilies = 19;</code>
       * @param index The index of the value to return.
       * @return The bytes of the ipFamilies at the given index.
       */
      public com.google.protobuf.ByteString
          getIpFamiliesBytes(int index) {
        return ipFamilies_.getByteString(index);
      }
      /**
       * <pre>
       * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
       * service. This field is usually assigned automatically based on cluster
       * configuration and the ipFamilyPolicy field. If this field is specified
       * manually, the requested family is available in the cluster,
       * and ipFamilyPolicy allows it, it will be used; otherwise creation of
       * the service will fail. This field is conditionally mutable: it allows
       * for adding or removing a secondary IP family, but it does not allow
       * changing the primary IP family of the Service. Valid values are "IPv4"
       * and "IPv6".  This field only applies to Services of types ClusterIP,
       * NodePort, and LoadBalancer, and does apply to "headless" services.
       * This field will be wiped when updating a Service to type ExternalName.
       *
       * This field may hold a maximum of two entries (dual-stack families, in
       * either order).  These families must correspond to the values of the
       * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
       * governed by the ipFamilyPolicy field.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string ipFamilies = 19;</code>
       * @param index The index to set the value at.
       * @param value The ipFamilies to set.
       * @return This builder for chaining.
       */
      public Builder setIpFamilies(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureIpFamiliesIsMutable();
        ipFamilies_.set(index, value);
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
       * service. This field is usually assigned automatically based on cluster
       * configuration and the ipFamilyPolicy field. If this field is specified
       * manually, the requested family is available in the cluster,
       * and ipFamilyPolicy allows it, it will be used; otherwise creation of
       * the service will fail. This field is conditionally mutable: it allows
       * for adding or removing a secondary IP family, but it does not allow
       * changing the primary IP family of the Service. Valid values are "IPv4"
       * and "IPv6".  This field only applies to Services of types ClusterIP,
       * NodePort, and LoadBalancer, and does apply to "headless" services.
       * This field will be wiped when updating a Service to type ExternalName.
       *
       * This field may hold a maximum of two entries (dual-stack families, in
       * either order).  These families must correspond to the values of the
       * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
       * governed by the ipFamilyPolicy field.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string ipFamilies = 19;</code>
       * @param value The ipFamilies to add.
       * @return This builder for chaining.
       */
      public Builder addIpFamilies(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureIpFamiliesIsMutable();
        ipFamilies_.add(value);
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
       * service. This field is usually assigned automatically based on cluster
       * configuration and the ipFamilyPolicy field. If this field is specified
       * manually, the requested family is available in the cluster,
       * and ipFamilyPolicy allows it, it will be used; otherwise creation of
       * the service will fail. This field is conditionally mutable: it allows
       * for adding or removing a secondary IP family, but it does not allow
       * changing the primary IP family of the Service. Valid values are "IPv4"
       * and "IPv6".  This field only applies to Services of types ClusterIP,
       * NodePort, and LoadBalancer, and does apply to "headless" services.
       * This field will be wiped when updating a Service to type ExternalName.
       *
       * This field may hold a maximum of two entries (dual-stack families, in
       * either order).  These families must correspond to the values of the
       * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
       * governed by the ipFamilyPolicy field.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string ipFamilies = 19;</code>
       * @param values The ipFamilies to add.
       * @return This builder for chaining.
       */
      public Builder addAllIpFamilies(
          java.lang.Iterable<java.lang.String> values) {
        ensureIpFamiliesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, ipFamilies_);
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
       * service. This field is usually assigned automatically based on cluster
       * configuration and the ipFamilyPolicy field. If this field is specified
       * manually, the requested family is available in the cluster,
       * and ipFamilyPolicy allows it, it will be used; otherwise creation of
       * the service will fail. This field is conditionally mutable: it allows
       * for adding or removing a secondary IP family, but it does not allow
       * changing the primary IP family of the Service. Valid values are "IPv4"
       * and "IPv6".  This field only applies to Services of types ClusterIP,
       * NodePort, and LoadBalancer, and does apply to "headless" services.
       * This field will be wiped when updating a Service to type ExternalName.
       *
       * This field may hold a maximum of two entries (dual-stack families, in
       * either order).  These families must correspond to the values of the
       * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
       * governed by the ipFamilyPolicy field.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string ipFamilies = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearIpFamilies() {
        ipFamilies_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this
       * service. This field is usually assigned automatically based on cluster
       * configuration and the ipFamilyPolicy field. If this field is specified
       * manually, the requested family is available in the cluster,
       * and ipFamilyPolicy allows it, it will be used; otherwise creation of
       * the service will fail. This field is conditionally mutable: it allows
       * for adding or removing a secondary IP family, but it does not allow
       * changing the primary IP family of the Service. Valid values are "IPv4"
       * and "IPv6".  This field only applies to Services of types ClusterIP,
       * NodePort, and LoadBalancer, and does apply to "headless" services.
       * This field will be wiped when updating a Service to type ExternalName.
       *
       * This field may hold a maximum of two entries (dual-stack families, in
       * either order).  These families must correspond to the values of the
       * clusterIPs field, if specified. Both clusterIPs and ipFamilies are
       * governed by the ipFamilyPolicy field.
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string ipFamilies = 19;</code>
       * @param value The bytes of the ipFamilies to add.
       * @return This builder for chaining.
       */
      public Builder addIpFamiliesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureIpFamiliesIsMutable();
        ipFamilies_.add(value);
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }

      private java.lang.Object ipFamilyPolicy_ = "";
      /**
       * <pre>
       * IPFamilyPolicy represents the dual-stack-ness requested or required by
       * this Service. If there is no value provided, then this field will be set
       * to SingleStack. Services can be "SingleStack" (a single IP family),
       * "PreferDualStack" (two IP families on dual-stack configured clusters or
       * a single IP family on single-stack clusters), or "RequireDualStack"
       * (two IP families on dual-stack configured clusters, otherwise fail). The
       * ipFamilies and clusterIPs fields depend on the value of this field. This
       * field will be wiped when updating a service to type ExternalName.
       * +optional
       * </pre>
       *
       * <code>optional string ipFamilyPolicy = 17;</code>
       * @return Whether the ipFamilyPolicy field is set.
       */
      public boolean hasIpFamilyPolicy() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <pre>
       * IPFamilyPolicy represents the dual-stack-ness requested or required by
       * this Service. If there is no value provided, then this field will be set
       * to SingleStack. Services can be "SingleStack" (a single IP family),
       * "PreferDualStack" (two IP families on dual-stack configured clusters or
       * a single IP family on single-stack clusters), or "RequireDualStack"
       * (two IP families on dual-stack configured clusters, otherwise fail). The
       * ipFamilies and clusterIPs fields depend on the value of this field. This
       * field will be wiped when updating a service to type ExternalName.
       * +optional
       * </pre>
       *
       * <code>optional string ipFamilyPolicy = 17;</code>
       * @return The ipFamilyPolicy.
       */
      public java.lang.String getIpFamilyPolicy() {
        java.lang.Object ref = ipFamilyPolicy_;
        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()) {
            ipFamilyPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * IPFamilyPolicy represents the dual-stack-ness requested or required by
       * this Service. If there is no value provided, then this field will be set
       * to SingleStack. Services can be "SingleStack" (a single IP family),
       * "PreferDualStack" (two IP families on dual-stack configured clusters or
       * a single IP family on single-stack clusters), or "RequireDualStack"
       * (two IP families on dual-stack configured clusters, otherwise fail). The
       * ipFamilies and clusterIPs fields depend on the value of this field. This
       * field will be wiped when updating a service to type ExternalName.
       * +optional
       * </pre>
       *
       * <code>optional string ipFamilyPolicy = 17;</code>
       * @return The bytes for ipFamilyPolicy.
       */
      public com.google.protobuf.ByteString
          getIpFamilyPolicyBytes() {
        java.lang.Object ref = ipFamilyPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ipFamilyPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * IPFamilyPolicy represents the dual-stack-ness requested or required by
       * this Service. If there is no value provided, then this field will be set
       * to SingleStack. Services can be "SingleStack" (a single IP family),
       * "PreferDualStack" (two IP families on dual-stack configured clusters or
       * a single IP family on single-stack clusters), or "RequireDualStack"
       * (two IP families on dual-stack configured clusters, otherwise fail). The
       * ipFamilies and clusterIPs fields depend on the value of this field. This
       * field will be wiped when updating a service to type ExternalName.
       * +optional
       * </pre>
       *
       * <code>optional string ipFamilyPolicy = 17;</code>
       * @param value The ipFamilyPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setIpFamilyPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ipFamilyPolicy_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IPFamilyPolicy represents the dual-stack-ness requested or required by
       * this Service. If there is no value provided, then this field will be set
       * to SingleStack. Services can be "SingleStack" (a single IP family),
       * "PreferDualStack" (two IP families on dual-stack configured clusters or
       * a single IP family on single-stack clusters), or "RequireDualStack"
       * (two IP families on dual-stack configured clusters, otherwise fail). The
       * ipFamilies and clusterIPs fields depend on the value of this field. This
       * field will be wiped when updating a service to type ExternalName.
       * +optional
       * </pre>
       *
       * <code>optional string ipFamilyPolicy = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearIpFamilyPolicy() {
        ipFamilyPolicy_ = getDefaultInstance().getIpFamilyPolicy();
        bitField0_ = (bitField0_ & ~0x00008000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * IPFamilyPolicy represents the dual-stack-ness requested or required by
       * this Service. If there is no value provided, then this field will be set
       * to SingleStack. Services can be "SingleStack" (a single IP family),
       * "PreferDualStack" (two IP families on dual-stack configured clusters or
       * a single IP family on single-stack clusters), or "RequireDualStack"
       * (two IP families on dual-stack configured clusters, otherwise fail). The
       * ipFamilies and clusterIPs fields depend on the value of this field. This
       * field will be wiped when updating a service to type ExternalName.
       * +optional
       * </pre>
       *
       * <code>optional string ipFamilyPolicy = 17;</code>
       * @param value The bytes for ipFamilyPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setIpFamilyPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ipFamilyPolicy_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }

      private boolean allocateLoadBalancerNodePorts_ ;
      /**
       * <pre>
       * allocateLoadBalancerNodePorts defines if NodePorts will be automatically
       * allocated for services with type LoadBalancer.  Default is "true". It
       * may be set to "false" if the cluster load-balancer does not rely on
       * NodePorts.  If the caller requests specific NodePorts (by specifying a
       * value), those requests will be respected, regardless of this field.
       * This field may only be set for services with type LoadBalancer and will
       * be cleared if the type is changed to any other type.
       * +optional
       * </pre>
       *
       * <code>optional bool allocateLoadBalancerNodePorts = 20;</code>
       * @return Whether the allocateLoadBalancerNodePorts field is set.
       */
      @java.lang.Override
      public boolean hasAllocateLoadBalancerNodePorts() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <pre>
       * allocateLoadBalancerNodePorts defines if NodePorts will be automatically
       * allocated for services with type LoadBalancer.  Default is "true". It
       * may be set to "false" if the cluster load-balancer does not rely on
       * NodePorts.  If the caller requests specific NodePorts (by specifying a
       * value), those requests will be respected, regardless of this field.
       * This field may only be set for services with type LoadBalancer and will
       * be cleared if the type is changed to any other type.
       * +optional
       * </pre>
       *
       * <code>optional bool allocateLoadBalancerNodePorts = 20;</code>
       * @return The allocateLoadBalancerNodePorts.
       */
      @java.lang.Override
      public boolean getAllocateLoadBalancerNodePorts() {
        return allocateLoadBalancerNodePorts_;
      }
      /**
       * <pre>
       * allocateLoadBalancerNodePorts defines if NodePorts will be automatically
       * allocated for services with type LoadBalancer.  Default is "true". It
       * may be set to "false" if the cluster load-balancer does not rely on
       * NodePorts.  If the caller requests specific NodePorts (by specifying a
       * value), those requests will be respected, regardless of this field.
       * This field may only be set for services with type LoadBalancer and will
       * be cleared if the type is changed to any other type.
       * +optional
       * </pre>
       *
       * <code>optional bool allocateLoadBalancerNodePorts = 20;</code>
       * @param value The allocateLoadBalancerNodePorts to set.
       * @return This builder for chaining.
       */
      public Builder setAllocateLoadBalancerNodePorts(boolean value) {

        allocateLoadBalancerNodePorts_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * allocateLoadBalancerNodePorts defines if NodePorts will be automatically
       * allocated for services with type LoadBalancer.  Default is "true". It
       * may be set to "false" if the cluster load-balancer does not rely on
       * NodePorts.  If the caller requests specific NodePorts (by specifying a
       * value), those requests will be respected, regardless of this field.
       * This field may only be set for services with type LoadBalancer and will
       * be cleared if the type is changed to any other type.
       * +optional
       * </pre>
       *
       * <code>optional bool allocateLoadBalancerNodePorts = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearAllocateLoadBalancerNodePorts() {
        bitField0_ = (bitField0_ & ~0x00010000);
        allocateLoadBalancerNodePorts_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object loadBalancerClass_ = "";
      /**
       * <pre>
       * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
       * If specified, the value of this field must be a label-style identifier, with an optional prefix,
       * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
       * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
       * balancer implementation is used, today this is typically done through the cloud provider integration,
       * but should apply for any default implementation. If set, it is assumed that a load balancer
       * implementation is watching for Services with a matching class. Any default load balancer
       * implementation (e.g. cloud providers) should ignore Services that set this field.
       * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
       * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerClass = 21;</code>
       * @return Whether the loadBalancerClass field is set.
       */
      public boolean hasLoadBalancerClass() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <pre>
       * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
       * If specified, the value of this field must be a label-style identifier, with an optional prefix,
       * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
       * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
       * balancer implementation is used, today this is typically done through the cloud provider integration,
       * but should apply for any default implementation. If set, it is assumed that a load balancer
       * implementation is watching for Services with a matching class. Any default load balancer
       * implementation (e.g. cloud providers) should ignore Services that set this field.
       * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
       * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerClass = 21;</code>
       * @return The loadBalancerClass.
       */
      public java.lang.String getLoadBalancerClass() {
        java.lang.Object ref = loadBalancerClass_;
        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()) {
            loadBalancerClass_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
       * If specified, the value of this field must be a label-style identifier, with an optional prefix,
       * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
       * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
       * balancer implementation is used, today this is typically done through the cloud provider integration,
       * but should apply for any default implementation. If set, it is assumed that a load balancer
       * implementation is watching for Services with a matching class. Any default load balancer
       * implementation (e.g. cloud providers) should ignore Services that set this field.
       * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
       * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerClass = 21;</code>
       * @return The bytes for loadBalancerClass.
       */
      public com.google.protobuf.ByteString
          getLoadBalancerClassBytes() {
        java.lang.Object ref = loadBalancerClass_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          loadBalancerClass_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
       * If specified, the value of this field must be a label-style identifier, with an optional prefix,
       * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
       * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
       * balancer implementation is used, today this is typically done through the cloud provider integration,
       * but should apply for any default implementation. If set, it is assumed that a load balancer
       * implementation is watching for Services with a matching class. Any default load balancer
       * implementation (e.g. cloud providers) should ignore Services that set this field.
       * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
       * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerClass = 21;</code>
       * @param value The loadBalancerClass to set.
       * @return This builder for chaining.
       */
      public Builder setLoadBalancerClass(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        loadBalancerClass_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
       * If specified, the value of this field must be a label-style identifier, with an optional prefix,
       * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
       * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
       * balancer implementation is used, today this is typically done through the cloud provider integration,
       * but should apply for any default implementation. If set, it is assumed that a load balancer
       * implementation is watching for Services with a matching class. Any default load balancer
       * implementation (e.g. cloud providers) should ignore Services that set this field.
       * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
       * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerClass = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearLoadBalancerClass() {
        loadBalancerClass_ = getDefaultInstance().getLoadBalancerClass();
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * loadBalancerClass is the class of the load balancer implementation this Service belongs to.
       * If specified, the value of this field must be a label-style identifier, with an optional prefix,
       * e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
       * This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
       * balancer implementation is used, today this is typically done through the cloud provider integration,
       * but should apply for any default implementation. If set, it is assumed that a load balancer
       * implementation is watching for Services with a matching class. Any default load balancer
       * implementation (e.g. cloud providers) should ignore Services that set this field.
       * This field can only be set when creating or updating a Service to type 'LoadBalancer'.
       * Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
       * +optional
       * </pre>
       *
       * <code>optional string loadBalancerClass = 21;</code>
       * @param value The bytes for loadBalancerClass to set.
       * @return This builder for chaining.
       */
      public Builder setLoadBalancerClassBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        loadBalancerClass_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }

      private java.lang.Object internalTrafficPolicy_ = "";
      /**
       * <pre>
       * InternalTrafficPolicy describes how nodes distribute service traffic they
       * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
       * only want to talk to endpoints of the service on the same node as the pod,
       * dropping the traffic if there are no local endpoints. The default value,
       * "Cluster", uses the standard behavior of routing to all endpoints evenly
       * (possibly modified by topology and other features).
       * +optional
       * </pre>
       *
       * <code>optional string internalTrafficPolicy = 22;</code>
       * @return Whether the internalTrafficPolicy field is set.
       */
      public boolean hasInternalTrafficPolicy() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <pre>
       * InternalTrafficPolicy describes how nodes distribute service traffic they
       * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
       * only want to talk to endpoints of the service on the same node as the pod,
       * dropping the traffic if there are no local endpoints. The default value,
       * "Cluster", uses the standard behavior of routing to all endpoints evenly
       * (possibly modified by topology and other features).
       * +optional
       * </pre>
       *
       * <code>optional string internalTrafficPolicy = 22;</code>
       * @return The internalTrafficPolicy.
       */
      public java.lang.String getInternalTrafficPolicy() {
        java.lang.Object ref = internalTrafficPolicy_;
        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()) {
            internalTrafficPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * InternalTrafficPolicy describes how nodes distribute service traffic they
       * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
       * only want to talk to endpoints of the service on the same node as the pod,
       * dropping the traffic if there are no local endpoints. The default value,
       * "Cluster", uses the standard behavior of routing to all endpoints evenly
       * (possibly modified by topology and other features).
       * +optional
       * </pre>
       *
       * <code>optional string internalTrafficPolicy = 22;</code>
       * @return The bytes for internalTrafficPolicy.
       */
      public com.google.protobuf.ByteString
          getInternalTrafficPolicyBytes() {
        java.lang.Object ref = internalTrafficPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          internalTrafficPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * InternalTrafficPolicy describes how nodes distribute service traffic they
       * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
       * only want to talk to endpoints of the service on the same node as the pod,
       * dropping the traffic if there are no local endpoints. The default value,
       * "Cluster", uses the standard behavior of routing to all endpoints evenly
       * (possibly modified by topology and other features).
       * +optional
       * </pre>
       *
       * <code>optional string internalTrafficPolicy = 22;</code>
       * @param value The internalTrafficPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setInternalTrafficPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        internalTrafficPolicy_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * InternalTrafficPolicy describes how nodes distribute service traffic they
       * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
       * only want to talk to endpoints of the service on the same node as the pod,
       * dropping the traffic if there are no local endpoints. The default value,
       * "Cluster", uses the standard behavior of routing to all endpoints evenly
       * (possibly modified by topology and other features).
       * +optional
       * </pre>
       *
       * <code>optional string internalTrafficPolicy = 22;</code>
       * @return This builder for chaining.
       */
      public Builder clearInternalTrafficPolicy() {
        internalTrafficPolicy_ = getDefaultInstance().getInternalTrafficPolicy();
        bitField0_ = (bitField0_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * InternalTrafficPolicy describes how nodes distribute service traffic they
       * receive on the ClusterIP. If set to "Local", the proxy will assume that pods
       * only want to talk to endpoints of the service on the same node as the pod,
       * dropping the traffic if there are no local endpoints. The default value,
       * "Cluster", uses the standard behavior of routing to all endpoints evenly
       * (possibly modified by topology and other features).
       * +optional
       * </pre>
       *
       * <code>optional string internalTrafficPolicy = 22;</code>
       * @param value The bytes for internalTrafficPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setInternalTrafficPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        internalTrafficPolicy_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }

      private java.lang.Object trafficDistribution_ = "";
      /**
       * <pre>
       * TrafficDistribution offers a way to express preferences for how traffic is
       * distributed to Service endpoints. Implementations can use this field as a
       * hint, but are not required to guarantee strict adherence. If the field is
       * not set, the implementation will apply its default routing strategy. If set
       * to "PreferClose", implementations should prioritize endpoints that are
       * topologically close (e.g., same zone).
       * +optional
       * </pre>
       *
       * <code>optional string trafficDistribution = 23;</code>
       * @return Whether the trafficDistribution field is set.
       */
      public boolean hasTrafficDistribution() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <pre>
       * TrafficDistribution offers a way to express preferences for how traffic is
       * distributed to Service endpoints. Implementations can use this field as a
       * hint, but are not required to guarantee strict adherence. If the field is
       * not set, the implementation will apply its default routing strategy. If set
       * to "PreferClose", implementations should prioritize endpoints that are
       * topologically close (e.g., same zone).
       * +optional
       * </pre>
       *
       * <code>optional string trafficDistribution = 23;</code>
       * @return The trafficDistribution.
       */
      public java.lang.String getTrafficDistribution() {
        java.lang.Object ref = trafficDistribution_;
        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()) {
            trafficDistribution_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * TrafficDistribution offers a way to express preferences for how traffic is
       * distributed to Service endpoints. Implementations can use this field as a
       * hint, but are not required to guarantee strict adherence. If the field is
       * not set, the implementation will apply its default routing strategy. If set
       * to "PreferClose", implementations should prioritize endpoints that are
       * topologically close (e.g., same zone).
       * +optional
       * </pre>
       *
       * <code>optional string trafficDistribution = 23;</code>
       * @return The bytes for trafficDistribution.
       */
      public com.google.protobuf.ByteString
          getTrafficDistributionBytes() {
        java.lang.Object ref = trafficDistribution_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          trafficDistribution_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * TrafficDistribution offers a way to express preferences for how traffic is
       * distributed to Service endpoints. Implementations can use this field as a
       * hint, but are not required to guarantee strict adherence. If the field is
       * not set, the implementation will apply its default routing strategy. If set
       * to "PreferClose", implementations should prioritize endpoints that are
       * topologically close (e.g., same zone).
       * +optional
       * </pre>
       *
       * <code>optional string trafficDistribution = 23;</code>
       * @param value The trafficDistribution to set.
       * @return This builder for chaining.
       */
      public Builder setTrafficDistribution(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        trafficDistribution_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TrafficDistribution offers a way to express preferences for how traffic is
       * distributed to Service endpoints. Implementations can use this field as a
       * hint, but are not required to guarantee strict adherence. If the field is
       * not set, the implementation will apply its default routing strategy. If set
       * to "PreferClose", implementations should prioritize endpoints that are
       * topologically close (e.g., same zone).
       * +optional
       * </pre>
       *
       * <code>optional string trafficDistribution = 23;</code>
       * @return This builder for chaining.
       */
      public Builder clearTrafficDistribution() {
        trafficDistribution_ = getDefaultInstance().getTrafficDistribution();
        bitField0_ = (bitField0_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TrafficDistribution offers a way to express preferences for how traffic is
       * distributed to Service endpoints. Implementations can use this field as a
       * hint, but are not required to guarantee strict adherence. If the field is
       * not set, the implementation will apply its default routing strategy. If set
       * to "PreferClose", implementations should prioritize endpoints that are
       * topologically close (e.g., same zone).
       * +optional
       * </pre>
       *
       * <code>optional string trafficDistribution = 23;</code>
       * @param value The bytes for trafficDistribution to set.
       * @return This builder for chaining.
       */
      public Builder setTrafficDistributionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        trafficDistribution_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ServiceSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ServiceSpec)
    private static final io.kubernetes.client.proto.V1.ServiceSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ServiceSpec();
    }

    public static io.kubernetes.client.proto.V1.ServiceSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServiceSpec>
        PARSER = new com.google.protobuf.AbstractParser<ServiceSpec>() {
      @java.lang.Override
      public ServiceSpec 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<ServiceSpec> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServiceSpec> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.ServiceStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * LoadBalancer contains the current status of the load-balancer,
     * if one is present.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
     * @return Whether the loadBalancer field is set.
     */
    boolean hasLoadBalancer();
    /**
     * <pre>
     * LoadBalancer contains the current status of the load-balancer,
     * if one is present.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
     * @return The loadBalancer.
     */
    io.kubernetes.client.proto.V1.LoadBalancerStatus getLoadBalancer();
    /**
     * <pre>
     * LoadBalancer contains the current status of the load-balancer,
     * if one is present.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
     */
    io.kubernetes.client.proto.V1.LoadBalancerStatusOrBuilder getLoadBalancerOrBuilder();

    /**
     * <pre>
     * Current service state
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.Meta.Condition> 
        getConditionsList();
    /**
     * <pre>
     * Current service state
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
     */
    io.kubernetes.client.proto.Meta.Condition getConditions(int index);
    /**
     * <pre>
     * Current service state
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
     */
    int getConditionsCount();
    /**
     * <pre>
     * Current service state
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.Meta.ConditionOrBuilder> 
        getConditionsOrBuilderList();
    /**
     * <pre>
     * Current service state
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
     */
    io.kubernetes.client.proto.Meta.ConditionOrBuilder getConditionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ServiceStatus represents the current status of a service.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.ServiceStatus}
   */
  public static final class ServiceStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.ServiceStatus)
      ServiceStatusOrBuilder {
  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= */ "",
        ServiceStatus.class.getName());
    }
    // Use ServiceStatus.newBuilder() to construct.
    private ServiceStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ServiceStatus() {
      conditions_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.ServiceStatus.class, io.kubernetes.client.proto.V1.ServiceStatus.Builder.class);
    }

    private int bitField0_;
    public static final int LOADBALANCER_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.LoadBalancerStatus loadBalancer_;
    /**
     * <pre>
     * LoadBalancer contains the current status of the load-balancer,
     * if one is present.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
     * @return Whether the loadBalancer field is set.
     */
    @java.lang.Override
    public boolean hasLoadBalancer() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * LoadBalancer contains the current status of the load-balancer,
     * if one is present.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
     * @return The loadBalancer.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LoadBalancerStatus getLoadBalancer() {
      return loadBalancer_ == null ? io.kubernetes.client.proto.V1.LoadBalancerStatus.getDefaultInstance() : loadBalancer_;
    }
    /**
     * <pre>
     * LoadBalancer contains the current status of the load-balancer,
     * if one is present.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LoadBalancerStatusOrBuilder getLoadBalancerOrBuilder() {
      return loadBalancer_ == null ? io.kubernetes.client.proto.V1.LoadBalancerStatus.getDefaultInstance() : loadBalancer_;
    }

    public static final int CONDITIONS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.Meta.Condition> conditions_;
    /**
     * <pre>
     * Current service state
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.Meta.Condition> getConditionsList() {
      return conditions_;
    }
    /**
     * <pre>
     * Current service state
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.Meta.ConditionOrBuilder> 
        getConditionsOrBuilderList() {
      return conditions_;
    }
    /**
     * <pre>
     * Current service state
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
     */
    @java.lang.Override
    public int getConditionsCount() {
      return conditions_.size();
    }
    /**
     * <pre>
     * Current service state
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Condition getConditions(int index) {
      return conditions_.get(index);
    }
    /**
     * <pre>
     * Current service state
     * +optional
     * +patchMergeKey=type
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.ConditionOrBuilder getConditionsOrBuilder(
        int index) {
      return conditions_.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, getLoadBalancer());
      }
      for (int i = 0; i < conditions_.size(); i++) {
        output.writeMessage(2, conditions_.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, getLoadBalancer());
      }
      for (int i = 0; i < conditions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, conditions_.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.V1.ServiceStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.ServiceStatus other = (io.kubernetes.client.proto.V1.ServiceStatus) obj;

      if (hasLoadBalancer() != other.hasLoadBalancer()) return false;
      if (hasLoadBalancer()) {
        if (!getLoadBalancer()
            .equals(other.getLoadBalancer())) return false;
      }
      if (!getConditionsList()
          .equals(other.getConditionsList())) 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 (hasLoadBalancer()) {
        hash = (37 * hash) + LOADBALANCER_FIELD_NUMBER;
        hash = (53 * hash) + getLoadBalancer().hashCode();
      }
      if (getConditionsCount() > 0) {
        hash = (37 * hash) + CONDITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConditionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.ServiceStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceStatus 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.V1.ServiceStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceStatus 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.V1.ServiceStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.ServiceStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.ServiceStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceStatus 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.V1.ServiceStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.ServiceStatus 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.V1.ServiceStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.ServiceStatus 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.V1.ServiceStatus 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>
     * ServiceStatus represents the current status of a service.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.ServiceStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.ServiceStatus)
        io.kubernetes.client.proto.V1.ServiceStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.ServiceStatus.class, io.kubernetes.client.proto.V1.ServiceStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.ServiceStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLoadBalancerFieldBuilder();
          getConditionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        loadBalancer_ = null;
        if (loadBalancerBuilder_ != null) {
          loadBalancerBuilder_.dispose();
          loadBalancerBuilder_ = null;
        }
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
        } else {
          conditions_ = null;
          conditionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_ServiceStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.ServiceStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceStatus build() {
        io.kubernetes.client.proto.V1.ServiceStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.ServiceStatus buildPartial() {
        io.kubernetes.client.proto.V1.ServiceStatus result = new io.kubernetes.client.proto.V1.ServiceStatus(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.ServiceStatus result) {
        if (conditionsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            conditions_ = java.util.Collections.unmodifiableList(conditions_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.conditions_ = conditions_;
        } else {
          result.conditions_ = conditionsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.ServiceStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.loadBalancer_ = loadBalancerBuilder_ == null
              ? loadBalancer_
              : loadBalancerBuilder_.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.V1.ServiceStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.ServiceStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.ServiceStatus other) {
        if (other == io.kubernetes.client.proto.V1.ServiceStatus.getDefaultInstance()) return this;
        if (other.hasLoadBalancer()) {
          mergeLoadBalancer(other.getLoadBalancer());
        }
        if (conditionsBuilder_ == null) {
          if (!other.conditions_.isEmpty()) {
            if (conditions_.isEmpty()) {
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureConditionsIsMutable();
              conditions_.addAll(other.conditions_);
            }
            onChanged();
          }
        } else {
          if (!other.conditions_.isEmpty()) {
            if (conditionsBuilder_.isEmpty()) {
              conditionsBuilder_.dispose();
              conditionsBuilder_ = null;
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000002);
              conditionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getConditionsFieldBuilder() : null;
            } else {
              conditionsBuilder_.addAllMessages(other.conditions_);
            }
          }
        }
        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(
                    getLoadBalancerFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.Meta.Condition m =
                    input.readMessage(
                        io.kubernetes.client.proto.Meta.Condition.parser(),
                        extensionRegistry);
                if (conditionsBuilder_ == null) {
                  ensureConditionsIsMutable();
                  conditions_.add(m);
                } else {
                  conditionsBuilder_.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.V1.LoadBalancerStatus loadBalancer_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LoadBalancerStatus, io.kubernetes.client.proto.V1.LoadBalancerStatus.Builder, io.kubernetes.client.proto.V1.LoadBalancerStatusOrBuilder> loadBalancerBuilder_;
      /**
       * <pre>
       * LoadBalancer contains the current status of the load-balancer,
       * if one is present.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
       * @return Whether the loadBalancer field is set.
       */
      public boolean hasLoadBalancer() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * LoadBalancer contains the current status of the load-balancer,
       * if one is present.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
       * @return The loadBalancer.
       */
      public io.kubernetes.client.proto.V1.LoadBalancerStatus getLoadBalancer() {
        if (loadBalancerBuilder_ == null) {
          return loadBalancer_ == null ? io.kubernetes.client.proto.V1.LoadBalancerStatus.getDefaultInstance() : loadBalancer_;
        } else {
          return loadBalancerBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * LoadBalancer contains the current status of the load-balancer,
       * if one is present.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
       */
      public Builder setLoadBalancer(io.kubernetes.client.proto.V1.LoadBalancerStatus value) {
        if (loadBalancerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          loadBalancer_ = value;
        } else {
          loadBalancerBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LoadBalancer contains the current status of the load-balancer,
       * if one is present.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
       */
      public Builder setLoadBalancer(
          io.kubernetes.client.proto.V1.LoadBalancerStatus.Builder builderForValue) {
        if (loadBalancerBuilder_ == null) {
          loadBalancer_ = builderForValue.build();
        } else {
          loadBalancerBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LoadBalancer contains the current status of the load-balancer,
       * if one is present.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
       */
      public Builder mergeLoadBalancer(io.kubernetes.client.proto.V1.LoadBalancerStatus value) {
        if (loadBalancerBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            loadBalancer_ != null &&
            loadBalancer_ != io.kubernetes.client.proto.V1.LoadBalancerStatus.getDefaultInstance()) {
            getLoadBalancerBuilder().mergeFrom(value);
          } else {
            loadBalancer_ = value;
          }
        } else {
          loadBalancerBuilder_.mergeFrom(value);
        }
        if (loadBalancer_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * LoadBalancer contains the current status of the load-balancer,
       * if one is present.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
       */
      public Builder clearLoadBalancer() {
        bitField0_ = (bitField0_ & ~0x00000001);
        loadBalancer_ = null;
        if (loadBalancerBuilder_ != null) {
          loadBalancerBuilder_.dispose();
          loadBalancerBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LoadBalancer contains the current status of the load-balancer,
       * if one is present.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LoadBalancerStatus.Builder getLoadBalancerBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLoadBalancerFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * LoadBalancer contains the current status of the load-balancer,
       * if one is present.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
       */
      public io.kubernetes.client.proto.V1.LoadBalancerStatusOrBuilder getLoadBalancerOrBuilder() {
        if (loadBalancerBuilder_ != null) {
          return loadBalancerBuilder_.getMessageOrBuilder();
        } else {
          return loadBalancer_ == null ?
              io.kubernetes.client.proto.V1.LoadBalancerStatus.getDefaultInstance() : loadBalancer_;
        }
      }
      /**
       * <pre>
       * LoadBalancer contains the current status of the load-balancer,
       * if one is present.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LoadBalancerStatus loadBalancer = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LoadBalancerStatus, io.kubernetes.client.proto.V1.LoadBalancerStatus.Builder, io.kubernetes.client.proto.V1.LoadBalancerStatusOrBuilder> 
          getLoadBalancerFieldBuilder() {
        if (loadBalancerBuilder_ == null) {
          loadBalancerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LoadBalancerStatus, io.kubernetes.client.proto.V1.LoadBalancerStatus.Builder, io.kubernetes.client.proto.V1.LoadBalancerStatusOrBuilder>(
                  getLoadBalancer(),
                  getParentForChildren(),
                  isClean());
          loadBalancer_ = null;
        }
        return loadBalancerBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.Meta.Condition> conditions_ =
        java.util.Collections.emptyList();
      private void ensureConditionsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          conditions_ = new java.util.ArrayList<io.kubernetes.client.proto.Meta.Condition>(conditions_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.Meta.Condition, io.kubernetes.client.proto.Meta.Condition.Builder, io.kubernetes.client.proto.Meta.ConditionOrBuilder> conditionsBuilder_;

      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.Meta.Condition> getConditionsList() {
        if (conditionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(conditions_);
        } else {
          return conditionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public int getConditionsCount() {
        if (conditionsBuilder_ == null) {
          return conditions_.size();
        } else {
          return conditionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.Condition getConditions(int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);
        } else {
          return conditionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.Meta.Condition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.set(index, value);
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.Meta.Condition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.set(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public Builder addConditions(io.kubernetes.client.proto.Meta.Condition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.Meta.Condition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(index, value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public Builder addConditions(
          io.kubernetes.client.proto.Meta.Condition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.Meta.Condition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public Builder addAllConditions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.Meta.Condition> values) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, conditions_);
          onChanged();
        } else {
          conditionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public Builder clearConditions() {
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          conditionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public Builder removeConditions(int index) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.remove(index);
          onChanged();
        } else {
          conditionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.Condition.Builder getConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.ConditionOrBuilder getConditionsOrBuilder(
          int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);  } else {
          return conditionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.Meta.ConditionOrBuilder> 
           getConditionsOrBuilderList() {
        if (conditionsBuilder_ != null) {
          return conditionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(conditions_);
        }
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.Condition.Builder addConditionsBuilder() {
        return getConditionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.Meta.Condition.getDefaultInstance());
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.Condition.Builder addConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.Meta.Condition.getDefaultInstance());
      }
      /**
       * <pre>
       * Current service state
       * +optional
       * +patchMergeKey=type
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.Meta.Condition.Builder> 
           getConditionsBuilderList() {
        return getConditionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.Meta.Condition, io.kubernetes.client.proto.Meta.Condition.Builder, io.kubernetes.client.proto.Meta.ConditionOrBuilder> 
          getConditionsFieldBuilder() {
        if (conditionsBuilder_ == null) {
          conditionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.Meta.Condition, io.kubernetes.client.proto.Meta.Condition.Builder, io.kubernetes.client.proto.Meta.ConditionOrBuilder>(
                  conditions_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          conditions_ = null;
        }
        return conditionsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.ServiceStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.ServiceStatus)
    private static final io.kubernetes.client.proto.V1.ServiceStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.ServiceStatus();
    }

    public static io.kubernetes.client.proto.V1.ServiceStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServiceStatus>
        PARSER = new com.google.protobuf.AbstractParser<ServiceStatus>() {
      @java.lang.Override
      public ServiceStatus 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<ServiceStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServiceStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SessionAffinityConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SessionAffinityConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * clientIP contains the configurations of Client IP based session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
     * @return Whether the clientIP field is set.
     */
    boolean hasClientIP();
    /**
     * <pre>
     * clientIP contains the configurations of Client IP based session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
     * @return The clientIP.
     */
    io.kubernetes.client.proto.V1.ClientIPConfig getClientIP();
    /**
     * <pre>
     * clientIP contains the configurations of Client IP based session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
     */
    io.kubernetes.client.proto.V1.ClientIPConfigOrBuilder getClientIPOrBuilder();
  }
  /**
   * <pre>
   * SessionAffinityConfig represents the configurations of session affinity.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SessionAffinityConfig}
   */
  public static final class SessionAffinityConfig extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SessionAffinityConfig)
      SessionAffinityConfigOrBuilder {
  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= */ "",
        SessionAffinityConfig.class.getName());
    }
    // Use SessionAffinityConfig.newBuilder() to construct.
    private SessionAffinityConfig(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SessionAffinityConfig() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SessionAffinityConfig_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SessionAffinityConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SessionAffinityConfig.class, io.kubernetes.client.proto.V1.SessionAffinityConfig.Builder.class);
    }

    private int bitField0_;
    public static final int CLIENTIP_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.ClientIPConfig clientIP_;
    /**
     * <pre>
     * clientIP contains the configurations of Client IP based session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
     * @return Whether the clientIP field is set.
     */
    @java.lang.Override
    public boolean hasClientIP() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * clientIP contains the configurations of Client IP based session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
     * @return The clientIP.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ClientIPConfig getClientIP() {
      return clientIP_ == null ? io.kubernetes.client.proto.V1.ClientIPConfig.getDefaultInstance() : clientIP_;
    }
    /**
     * <pre>
     * clientIP contains the configurations of Client IP based session affinity.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ClientIPConfigOrBuilder getClientIPOrBuilder() {
      return clientIP_ == null ? io.kubernetes.client.proto.V1.ClientIPConfig.getDefaultInstance() : clientIP_;
    }

    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, getClientIP());
      }
      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, getClientIP());
      }
      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.V1.SessionAffinityConfig)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SessionAffinityConfig other = (io.kubernetes.client.proto.V1.SessionAffinityConfig) obj;

      if (hasClientIP() != other.hasClientIP()) return false;
      if (hasClientIP()) {
        if (!getClientIP()
            .equals(other.getClientIP())) 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 (hasClientIP()) {
        hash = (37 * hash) + CLIENTIP_FIELD_NUMBER;
        hash = (53 * hash) + getClientIP().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SessionAffinityConfig parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SessionAffinityConfig 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.V1.SessionAffinityConfig parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SessionAffinityConfig 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.V1.SessionAffinityConfig parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SessionAffinityConfig parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SessionAffinityConfig parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SessionAffinityConfig 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.V1.SessionAffinityConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SessionAffinityConfig 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.V1.SessionAffinityConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SessionAffinityConfig 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.V1.SessionAffinityConfig 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>
     * SessionAffinityConfig represents the configurations of session affinity.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SessionAffinityConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SessionAffinityConfig)
        io.kubernetes.client.proto.V1.SessionAffinityConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SessionAffinityConfig_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SessionAffinityConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SessionAffinityConfig.class, io.kubernetes.client.proto.V1.SessionAffinityConfig.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SessionAffinityConfig.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getClientIPFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        clientIP_ = null;
        if (clientIPBuilder_ != null) {
          clientIPBuilder_.dispose();
          clientIPBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SessionAffinityConfig_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SessionAffinityConfig getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SessionAffinityConfig.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SessionAffinityConfig build() {
        io.kubernetes.client.proto.V1.SessionAffinityConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SessionAffinityConfig buildPartial() {
        io.kubernetes.client.proto.V1.SessionAffinityConfig result = new io.kubernetes.client.proto.V1.SessionAffinityConfig(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.SessionAffinityConfig result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.clientIP_ = clientIPBuilder_ == null
              ? clientIP_
              : clientIPBuilder_.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.V1.SessionAffinityConfig) {
          return mergeFrom((io.kubernetes.client.proto.V1.SessionAffinityConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SessionAffinityConfig other) {
        if (other == io.kubernetes.client.proto.V1.SessionAffinityConfig.getDefaultInstance()) return this;
        if (other.hasClientIP()) {
          mergeClientIP(other.getClientIP());
        }
        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(
                    getClientIPFieldBuilder().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.V1.ClientIPConfig clientIP_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ClientIPConfig, io.kubernetes.client.proto.V1.ClientIPConfig.Builder, io.kubernetes.client.proto.V1.ClientIPConfigOrBuilder> clientIPBuilder_;
      /**
       * <pre>
       * clientIP contains the configurations of Client IP based session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
       * @return Whether the clientIP field is set.
       */
      public boolean hasClientIP() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * clientIP contains the configurations of Client IP based session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
       * @return The clientIP.
       */
      public io.kubernetes.client.proto.V1.ClientIPConfig getClientIP() {
        if (clientIPBuilder_ == null) {
          return clientIP_ == null ? io.kubernetes.client.proto.V1.ClientIPConfig.getDefaultInstance() : clientIP_;
        } else {
          return clientIPBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * clientIP contains the configurations of Client IP based session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
       */
      public Builder setClientIP(io.kubernetes.client.proto.V1.ClientIPConfig value) {
        if (clientIPBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clientIP_ = value;
        } else {
          clientIPBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * clientIP contains the configurations of Client IP based session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
       */
      public Builder setClientIP(
          io.kubernetes.client.proto.V1.ClientIPConfig.Builder builderForValue) {
        if (clientIPBuilder_ == null) {
          clientIP_ = builderForValue.build();
        } else {
          clientIPBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * clientIP contains the configurations of Client IP based session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
       */
      public Builder mergeClientIP(io.kubernetes.client.proto.V1.ClientIPConfig value) {
        if (clientIPBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            clientIP_ != null &&
            clientIP_ != io.kubernetes.client.proto.V1.ClientIPConfig.getDefaultInstance()) {
            getClientIPBuilder().mergeFrom(value);
          } else {
            clientIP_ = value;
          }
        } else {
          clientIPBuilder_.mergeFrom(value);
        }
        if (clientIP_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * clientIP contains the configurations of Client IP based session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
       */
      public Builder clearClientIP() {
        bitField0_ = (bitField0_ & ~0x00000001);
        clientIP_ = null;
        if (clientIPBuilder_ != null) {
          clientIPBuilder_.dispose();
          clientIPBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * clientIP contains the configurations of Client IP based session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ClientIPConfig.Builder getClientIPBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getClientIPFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * clientIP contains the configurations of Client IP based session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ClientIPConfigOrBuilder getClientIPOrBuilder() {
        if (clientIPBuilder_ != null) {
          return clientIPBuilder_.getMessageOrBuilder();
        } else {
          return clientIP_ == null ?
              io.kubernetes.client.proto.V1.ClientIPConfig.getDefaultInstance() : clientIP_;
        }
      }
      /**
       * <pre>
       * clientIP contains the configurations of Client IP based session affinity.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClientIPConfig clientIP = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ClientIPConfig, io.kubernetes.client.proto.V1.ClientIPConfig.Builder, io.kubernetes.client.proto.V1.ClientIPConfigOrBuilder> 
          getClientIPFieldBuilder() {
        if (clientIPBuilder_ == null) {
          clientIPBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ClientIPConfig, io.kubernetes.client.proto.V1.ClientIPConfig.Builder, io.kubernetes.client.proto.V1.ClientIPConfigOrBuilder>(
                  getClientIP(),
                  getParentForChildren(),
                  isClean());
          clientIP_ = null;
        }
        return clientIPBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SessionAffinityConfig)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SessionAffinityConfig)
    private static final io.kubernetes.client.proto.V1.SessionAffinityConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SessionAffinityConfig();
    }

    public static io.kubernetes.client.proto.V1.SessionAffinityConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SessionAffinityConfig>
        PARSER = new com.google.protobuf.AbstractParser<SessionAffinityConfig>() {
      @java.lang.Override
      public SessionAffinityConfig 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<SessionAffinityConfig> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SessionAffinityConfig> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SessionAffinityConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SleepActionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.SleepAction)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Seconds is the number of seconds to sleep.
     * </pre>
     *
     * <code>optional int64 seconds = 1;</code>
     * @return Whether the seconds field is set.
     */
    boolean hasSeconds();
    /**
     * <pre>
     * Seconds is the number of seconds to sleep.
     * </pre>
     *
     * <code>optional int64 seconds = 1;</code>
     * @return The seconds.
     */
    long getSeconds();
  }
  /**
   * <pre>
   * SleepAction describes a "sleep" action.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.SleepAction}
   */
  public static final class SleepAction extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.SleepAction)
      SleepActionOrBuilder {
  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= */ "",
        SleepAction.class.getName());
    }
    // Use SleepAction.newBuilder() to construct.
    private SleepAction(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SleepAction() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SleepAction_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SleepAction_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.SleepAction.class, io.kubernetes.client.proto.V1.SleepAction.Builder.class);
    }

    private int bitField0_;
    public static final int SECONDS_FIELD_NUMBER = 1;
    private long seconds_ = 0L;
    /**
     * <pre>
     * Seconds is the number of seconds to sleep.
     * </pre>
     *
     * <code>optional int64 seconds = 1;</code>
     * @return Whether the seconds field is set.
     */
    @java.lang.Override
    public boolean hasSeconds() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Seconds is the number of seconds to sleep.
     * </pre>
     *
     * <code>optional int64 seconds = 1;</code>
     * @return The seconds.
     */
    @java.lang.Override
    public long getSeconds() {
      return seconds_;
    }

    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.writeInt64(1, seconds_);
      }
      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
          .computeInt64Size(1, seconds_);
      }
      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.V1.SleepAction)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.SleepAction other = (io.kubernetes.client.proto.V1.SleepAction) obj;

      if (hasSeconds() != other.hasSeconds()) return false;
      if (hasSeconds()) {
        if (getSeconds()
            != other.getSeconds()) 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 (hasSeconds()) {
        hash = (37 * hash) + SECONDS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getSeconds());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.SleepAction parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SleepAction 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.V1.SleepAction parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SleepAction 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.V1.SleepAction parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.SleepAction parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.SleepAction parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SleepAction 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.V1.SleepAction parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.SleepAction 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.V1.SleepAction parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.SleepAction 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.V1.SleepAction 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>
     * SleepAction describes a "sleep" action.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.SleepAction}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.SleepAction)
        io.kubernetes.client.proto.V1.SleepActionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SleepAction_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SleepAction_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.SleepAction.class, io.kubernetes.client.proto.V1.SleepAction.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.SleepAction.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        seconds_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_SleepAction_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SleepAction getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.SleepAction.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SleepAction build() {
        io.kubernetes.client.proto.V1.SleepAction result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.SleepAction buildPartial() {
        io.kubernetes.client.proto.V1.SleepAction result = new io.kubernetes.client.proto.V1.SleepAction(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.SleepAction result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.seconds_ = seconds_;
          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.V1.SleepAction) {
          return mergeFrom((io.kubernetes.client.proto.V1.SleepAction)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.SleepAction other) {
        if (other == io.kubernetes.client.proto.V1.SleepAction.getDefaultInstance()) return this;
        if (other.hasSeconds()) {
          setSeconds(other.getSeconds());
        }
        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: {
                seconds_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long seconds_ ;
      /**
       * <pre>
       * Seconds is the number of seconds to sleep.
       * </pre>
       *
       * <code>optional int64 seconds = 1;</code>
       * @return Whether the seconds field is set.
       */
      @java.lang.Override
      public boolean hasSeconds() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Seconds is the number of seconds to sleep.
       * </pre>
       *
       * <code>optional int64 seconds = 1;</code>
       * @return The seconds.
       */
      @java.lang.Override
      public long getSeconds() {
        return seconds_;
      }
      /**
       * <pre>
       * Seconds is the number of seconds to sleep.
       * </pre>
       *
       * <code>optional int64 seconds = 1;</code>
       * @param value The seconds to set.
       * @return This builder for chaining.
       */
      public Builder setSeconds(long value) {

        seconds_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Seconds is the number of seconds to sleep.
       * </pre>
       *
       * <code>optional int64 seconds = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSeconds() {
        bitField0_ = (bitField0_ & ~0x00000001);
        seconds_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.SleepAction)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.SleepAction)
    private static final io.kubernetes.client.proto.V1.SleepAction DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.SleepAction();
    }

    public static io.kubernetes.client.proto.V1.SleepAction getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SleepAction>
        PARSER = new com.google.protobuf.AbstractParser<SleepAction>() {
      @java.lang.Override
      public SleepAction 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<SleepAction> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SleepAction> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.SleepAction getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface StorageOSPersistentVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.StorageOSPersistentVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return Whether the volumeName field is set.
     */
    boolean hasVolumeName();
    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return The volumeName.
     */
    java.lang.String getVolumeName();
    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return The bytes for volumeName.
     */
    com.google.protobuf.ByteString
        getVolumeNameBytes();

    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return Whether the volumeNamespace field is set.
     */
    boolean hasVolumeNamespace();
    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return The volumeNamespace.
     */
    java.lang.String getVolumeNamespace();
    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return The bytes for volumeNamespace.
     */
    com.google.protobuf.ByteString
        getVolumeNamespaceBytes();

    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.ObjectReference getSecretRef();
    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getSecretRefOrBuilder();
  }
  /**
   * <pre>
   * Represents a StorageOS persistent volume resource.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.StorageOSPersistentVolumeSource}
   */
  public static final class StorageOSPersistentVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.StorageOSPersistentVolumeSource)
      StorageOSPersistentVolumeSourceOrBuilder {
  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= */ "",
        StorageOSPersistentVolumeSource.class.getName());
    }
    // Use StorageOSPersistentVolumeSource.newBuilder() to construct.
    private StorageOSPersistentVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private StorageOSPersistentVolumeSource() {
      volumeName_ = "";
      volumeNamespace_ = "";
      fsType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_StorageOSPersistentVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_StorageOSPersistentVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.class, io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int VOLUMENAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeName_ = "";
    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return Whether the volumeName field is set.
     */
    @java.lang.Override
    public boolean hasVolumeName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return The volumeName.
     */
    @java.lang.Override
    public java.lang.String getVolumeName() {
      java.lang.Object ref = volumeName_;
      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()) {
          volumeName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return The bytes for volumeName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeNameBytes() {
      java.lang.Object ref = volumeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUMENAMESPACE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeNamespace_ = "";
    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return Whether the volumeNamespace field is set.
     */
    @java.lang.Override
    public boolean hasVolumeNamespace() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return The volumeNamespace.
     */
    @java.lang.Override
    public java.lang.String getVolumeNamespace() {
      java.lang.Object ref = volumeNamespace_;
      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()) {
          volumeNamespace_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return The bytes for volumeNamespace.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeNamespaceBytes() {
      java.lang.Object ref = volumeNamespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeNamespace_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 4;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int SECRETREF_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1.ObjectReference secretRef_;
    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : secretRef_;
    }

    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, volumeName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, volumeNamespace_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, fsType_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, readOnly_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getSecretRef());
      }
      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, volumeName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, volumeNamespace_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, fsType_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, readOnly_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSecretRef());
      }
      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.V1.StorageOSPersistentVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource other = (io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource) obj;

      if (hasVolumeName() != other.hasVolumeName()) return false;
      if (hasVolumeName()) {
        if (!getVolumeName()
            .equals(other.getVolumeName())) return false;
      }
      if (hasVolumeNamespace() != other.hasVolumeNamespace()) return false;
      if (hasVolumeNamespace()) {
        if (!getVolumeNamespace()
            .equals(other.getVolumeNamespace())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) 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 (hasVolumeName()) {
        hash = (37 * hash) + VOLUMENAME_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeName().hashCode();
      }
      if (hasVolumeNamespace()) {
        hash = (37 * hash) + VOLUMENAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeNamespace().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource 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.V1.StorageOSPersistentVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource 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.V1.StorageOSPersistentVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource 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.V1.StorageOSPersistentVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource 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.V1.StorageOSPersistentVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource 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.V1.StorageOSPersistentVolumeSource 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>
     * Represents a StorageOS persistent volume resource.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.StorageOSPersistentVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.StorageOSPersistentVolumeSource)
        io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_StorageOSPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_StorageOSPersistentVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.class, io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        volumeName_ = "";
        volumeNamespace_ = "";
        fsType_ = "";
        readOnly_ = false;
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_StorageOSPersistentVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource build() {
        io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource result = new io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.volumeName_ = volumeName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.volumeNamespace_ = volumeNamespace_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          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.V1.StorageOSPersistentVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource.getDefaultInstance()) return this;
        if (other.hasVolumeName()) {
          volumeName_ = other.volumeName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasVolumeNamespace()) {
          volumeNamespace_ = other.volumeNamespace_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        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: {
                volumeName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                volumeNamespace_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object volumeName_ = "";
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @return Whether the volumeName field is set.
       */
      public boolean hasVolumeName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @return The volumeName.
       */
      public java.lang.String getVolumeName() {
        java.lang.Object ref = volumeName_;
        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()) {
            volumeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @return The bytes for volumeName.
       */
      public com.google.protobuf.ByteString
          getVolumeNameBytes() {
        java.lang.Object ref = volumeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @param value The volumeName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeName() {
        volumeName_ = getDefaultInstance().getVolumeName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @param value The bytes for volumeName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object volumeNamespace_ = "";
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @return Whether the volumeNamespace field is set.
       */
      public boolean hasVolumeNamespace() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @return The volumeNamespace.
       */
      public java.lang.String getVolumeNamespace() {
        java.lang.Object ref = volumeNamespace_;
        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()) {
            volumeNamespace_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @return The bytes for volumeNamespace.
       */
      public com.google.protobuf.ByteString
          getVolumeNamespaceBytes() {
        java.lang.Object ref = volumeNamespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeNamespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @param value The volumeNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeNamespace(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeNamespace_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeNamespace() {
        volumeNamespace_ = getDefaultInstance().getVolumeNamespace();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @param value The bytes for volumeNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeNamespace_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000008);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.ObjectReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.ObjectReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000010);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ObjectReference secretRef = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.StorageOSPersistentVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.StorageOSPersistentVolumeSource)
    private static final io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<StorageOSPersistentVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<StorageOSPersistentVolumeSource>() {
      @java.lang.Override
      public StorageOSPersistentVolumeSource 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<StorageOSPersistentVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<StorageOSPersistentVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.StorageOSPersistentVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface StorageOSVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.StorageOSVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return Whether the volumeName field is set.
     */
    boolean hasVolumeName();
    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return The volumeName.
     */
    java.lang.String getVolumeName();
    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return The bytes for volumeName.
     */
    com.google.protobuf.ByteString
        getVolumeNameBytes();

    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return Whether the volumeNamespace field is set.
     */
    boolean hasVolumeNamespace();
    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return The volumeNamespace.
     */
    java.lang.String getVolumeNamespace();
    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return The bytes for volumeNamespace.
     */
    com.google.protobuf.ByteString
        getVolumeNamespaceBytes();

    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     * @return Whether the secretRef field is set.
     */
    boolean hasSecretRef();
    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     * @return The secretRef.
     */
    io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef();
    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     */
    io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder();
  }
  /**
   * <pre>
   * Represents a StorageOS persistent volume resource.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.StorageOSVolumeSource}
   */
  public static final class StorageOSVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.StorageOSVolumeSource)
      StorageOSVolumeSourceOrBuilder {
  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= */ "",
        StorageOSVolumeSource.class.getName());
    }
    // Use StorageOSVolumeSource.newBuilder() to construct.
    private StorageOSVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private StorageOSVolumeSource() {
      volumeName_ = "";
      volumeNamespace_ = "";
      fsType_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_StorageOSVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_StorageOSVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.StorageOSVolumeSource.class, io.kubernetes.client.proto.V1.StorageOSVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int VOLUMENAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeName_ = "";
    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return Whether the volumeName field is set.
     */
    @java.lang.Override
    public boolean hasVolumeName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return The volumeName.
     */
    @java.lang.Override
    public java.lang.String getVolumeName() {
      java.lang.Object ref = volumeName_;
      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()) {
          volumeName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeName is the human-readable name of the StorageOS volume.  Volume
     * names are only unique within a namespace.
     * </pre>
     *
     * <code>optional string volumeName = 1;</code>
     * @return The bytes for volumeName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeNameBytes() {
      java.lang.Object ref = volumeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VOLUMENAMESPACE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumeNamespace_ = "";
    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return Whether the volumeNamespace field is set.
     */
    @java.lang.Override
    public boolean hasVolumeNamespace() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return The volumeNamespace.
     */
    @java.lang.Override
    public java.lang.String getVolumeNamespace() {
      java.lang.Object ref = volumeNamespace_;
      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()) {
          volumeNamespace_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumeNamespace specifies the scope of the volume within StorageOS.  If no
     * namespace is specified then the Pod's namespace will be used.  This allows the
     * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
     * Set VolumeName to any name to override the default behaviour.
     * Set to "default" if you are not using namespaces within StorageOS.
     * Namespaces that do not pre-exist within StorageOS will be created.
     * +optional
     * </pre>
     *
     * <code>optional string volumeNamespace = 2;</code>
     * @return The bytes for volumeNamespace.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumeNamespaceBytes() {
      java.lang.Object ref = volumeNamespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumeNamespace_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is the filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 3;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 4;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * readOnly defaults to false (read/write). ReadOnly here will force
     * the ReadOnly setting in VolumeMounts.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 4;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int SECRETREF_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     * @return Whether the secretRef field is set.
     */
    @java.lang.Override
    public boolean hasSecretRef() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     * @return The secretRef.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }
    /**
     * <pre>
     * secretRef specifies the secret to use for obtaining the StorageOS API
     * credentials.  If not specified, default values will be attempted.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
      return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
    }

    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, volumeName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, volumeNamespace_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, fsType_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, readOnly_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getSecretRef());
      }
      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, volumeName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, volumeNamespace_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, fsType_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, readOnly_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSecretRef());
      }
      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.V1.StorageOSVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.StorageOSVolumeSource other = (io.kubernetes.client.proto.V1.StorageOSVolumeSource) obj;

      if (hasVolumeName() != other.hasVolumeName()) return false;
      if (hasVolumeName()) {
        if (!getVolumeName()
            .equals(other.getVolumeName())) return false;
      }
      if (hasVolumeNamespace() != other.hasVolumeNamespace()) return false;
      if (hasVolumeNamespace()) {
        if (!getVolumeNamespace()
            .equals(other.getVolumeNamespace())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasSecretRef() != other.hasSecretRef()) return false;
      if (hasSecretRef()) {
        if (!getSecretRef()
            .equals(other.getSecretRef())) 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 (hasVolumeName()) {
        hash = (37 * hash) + VOLUMENAME_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeName().hashCode();
      }
      if (hasVolumeNamespace()) {
        hash = (37 * hash) + VOLUMENAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeNamespace().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasSecretRef()) {
        hash = (37 * hash) + SECRETREF_FIELD_NUMBER;
        hash = (53 * hash) + getSecretRef().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.StorageOSVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.StorageOSVolumeSource 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.V1.StorageOSVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.StorageOSVolumeSource 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.V1.StorageOSVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.StorageOSVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.StorageOSVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.StorageOSVolumeSource 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.V1.StorageOSVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.StorageOSVolumeSource 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.V1.StorageOSVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.StorageOSVolumeSource 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.V1.StorageOSVolumeSource 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>
     * Represents a StorageOS persistent volume resource.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.StorageOSVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.StorageOSVolumeSource)
        io.kubernetes.client.proto.V1.StorageOSVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_StorageOSVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_StorageOSVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.StorageOSVolumeSource.class, io.kubernetes.client.proto.V1.StorageOSVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.StorageOSVolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretRefFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        volumeName_ = "";
        volumeNamespace_ = "";
        fsType_ = "";
        readOnly_ = false;
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_StorageOSVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.StorageOSVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.StorageOSVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.StorageOSVolumeSource build() {
        io.kubernetes.client.proto.V1.StorageOSVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.StorageOSVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.StorageOSVolumeSource result = new io.kubernetes.client.proto.V1.StorageOSVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.StorageOSVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.volumeName_ = volumeName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.volumeNamespace_ = volumeNamespace_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.secretRef_ = secretRefBuilder_ == null
              ? secretRef_
              : secretRefBuilder_.build();
          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.V1.StorageOSVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.StorageOSVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.StorageOSVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.StorageOSVolumeSource.getDefaultInstance()) return this;
        if (other.hasVolumeName()) {
          volumeName_ = other.volumeName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasVolumeNamespace()) {
          volumeNamespace_ = other.volumeNamespace_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasSecretRef()) {
          mergeSecretRef(other.getSecretRef());
        }
        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: {
                volumeName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                volumeNamespace_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 42: {
                input.readMessage(
                    getSecretRefFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object volumeName_ = "";
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @return Whether the volumeName field is set.
       */
      public boolean hasVolumeName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @return The volumeName.
       */
      public java.lang.String getVolumeName() {
        java.lang.Object ref = volumeName_;
        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()) {
            volumeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @return The bytes for volumeName.
       */
      public com.google.protobuf.ByteString
          getVolumeNameBytes() {
        java.lang.Object ref = volumeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @param value The volumeName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeName() {
        volumeName_ = getDefaultInstance().getVolumeName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeName is the human-readable name of the StorageOS volume.  Volume
       * names are only unique within a namespace.
       * </pre>
       *
       * <code>optional string volumeName = 1;</code>
       * @param value The bytes for volumeName to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object volumeNamespace_ = "";
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @return Whether the volumeNamespace field is set.
       */
      public boolean hasVolumeNamespace() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @return The volumeNamespace.
       */
      public java.lang.String getVolumeNamespace() {
        java.lang.Object ref = volumeNamespace_;
        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()) {
            volumeNamespace_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @return The bytes for volumeNamespace.
       */
      public com.google.protobuf.ByteString
          getVolumeNamespaceBytes() {
        java.lang.Object ref = volumeNamespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumeNamespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @param value The volumeNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeNamespace(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumeNamespace_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumeNamespace() {
        volumeNamespace_ = getDefaultInstance().getVolumeNamespace();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeNamespace specifies the scope of the volume within StorageOS.  If no
       * namespace is specified then the Pod's namespace will be used.  This allows the
       * Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
       * Set VolumeName to any name to override the default behaviour.
       * Set to "default" if you are not using namespaces within StorageOS.
       * Namespaces that do not pre-exist within StorageOS will be created.
       * +optional
       * </pre>
       *
       * <code>optional string volumeNamespace = 2;</code>
       * @param value The bytes for volumeNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setVolumeNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumeNamespace_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is the filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 3;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * readOnly defaults to false (read/write). ReadOnly here will force
       * the ReadOnly setting in VolumeMounts.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000008);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.LocalObjectReference secretRef_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> secretRefBuilder_;
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       * @return Whether the secretRef field is set.
       */
      public boolean hasSecretRef() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       * @return The secretRef.
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference getSecretRef() {
        if (secretRefBuilder_ == null) {
          return secretRef_ == null ? io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        } else {
          return secretRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public Builder setSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secretRef_ = value;
        } else {
          secretRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public Builder setSecretRef(
          io.kubernetes.client.proto.V1.LocalObjectReference.Builder builderForValue) {
        if (secretRefBuilder_ == null) {
          secretRef_ = builderForValue.build();
        } else {
          secretRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public Builder mergeSecretRef(io.kubernetes.client.proto.V1.LocalObjectReference value) {
        if (secretRefBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            secretRef_ != null &&
            secretRef_ != io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance()) {
            getSecretRefBuilder().mergeFrom(value);
          } else {
            secretRef_ = value;
          }
        } else {
          secretRefBuilder_.mergeFrom(value);
        }
        if (secretRef_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public Builder clearSecretRef() {
        bitField0_ = (bitField0_ & ~0x00000010);
        secretRef_ = null;
        if (secretRefBuilder_ != null) {
          secretRefBuilder_.dispose();
          secretRefBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReference.Builder getSecretRefBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getSecretRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      public io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder getSecretRefOrBuilder() {
        if (secretRefBuilder_ != null) {
          return secretRefBuilder_.getMessageOrBuilder();
        } else {
          return secretRef_ == null ?
              io.kubernetes.client.proto.V1.LocalObjectReference.getDefaultInstance() : secretRef_;
        }
      }
      /**
       * <pre>
       * secretRef specifies the secret to use for obtaining the StorageOS API
       * credentials.  If not specified, default values will be attempted.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.LocalObjectReference secretRef = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder> 
          getSecretRefFieldBuilder() {
        if (secretRefBuilder_ == null) {
          secretRefBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.LocalObjectReference, io.kubernetes.client.proto.V1.LocalObjectReference.Builder, io.kubernetes.client.proto.V1.LocalObjectReferenceOrBuilder>(
                  getSecretRef(),
                  getParentForChildren(),
                  isClean());
          secretRef_ = null;
        }
        return secretRefBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.StorageOSVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.StorageOSVolumeSource)
    private static final io.kubernetes.client.proto.V1.StorageOSVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.StorageOSVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.StorageOSVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<StorageOSVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<StorageOSVolumeSource>() {
      @java.lang.Override
      public StorageOSVolumeSource 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<StorageOSVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<StorageOSVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.StorageOSVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SysctlOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Sysctl)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of a property to set
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name of a property to set
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of a property to set
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Value of a property to set
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * Value of a property to set
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <pre>
     * Value of a property to set
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * <pre>
   * Sysctl defines a kernel parameter to be set
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Sysctl}
   */
  public static final class Sysctl extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Sysctl)
      SysctlOrBuilder {
  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= */ "",
        Sysctl.class.getName());
    }
    // Use Sysctl.newBuilder() to construct.
    private Sysctl(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Sysctl() {
      name_ = "";
      value_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Sysctl_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Sysctl_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Sysctl.class, io.kubernetes.client.proto.V1.Sysctl.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name of a property to set
     * </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 of a property to set
     * </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 of a property to set
     * </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 VALUE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object value_ = "";
    /**
     * <pre>
     * Value of a property to set
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Value of a property to set
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Value of a property to set
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, value_);
      }
      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, value_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1.Sysctl)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Sysctl other = (io.kubernetes.client.proto.V1.Sysctl) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.Sysctl parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Sysctl 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.V1.Sysctl parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Sysctl 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.V1.Sysctl parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Sysctl parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Sysctl parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Sysctl 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.V1.Sysctl parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Sysctl 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.V1.Sysctl parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Sysctl 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.V1.Sysctl 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>
     * Sysctl defines a kernel parameter to be set
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Sysctl}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Sysctl)
        io.kubernetes.client.proto.V1.SysctlOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Sysctl_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Sysctl_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Sysctl.class, io.kubernetes.client.proto.V1.Sysctl.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Sysctl.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        value_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Sysctl_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Sysctl getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Sysctl.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Sysctl build() {
        io.kubernetes.client.proto.V1.Sysctl result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Sysctl buildPartial() {
        io.kubernetes.client.proto.V1.Sysctl result = new io.kubernetes.client.proto.V1.Sysctl(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Sysctl 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.value_ = value_;
          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.V1.Sysctl) {
          return mergeFrom((io.kubernetes.client.proto.V1.Sysctl)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Sysctl other) {
        if (other == io.kubernetes.client.proto.V1.Sysctl.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasValue()) {
          value_ = other.value_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                value_ = 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 name_ = "";
      /**
       * <pre>
       * Name of a property to set
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name of a property to set
       * </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 of a property to set
       * </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 of a property to set
       * </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 of a property to set
       * </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 of a property to set
       * </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 value_ = "";
      /**
       * <pre>
       * Value of a property to set
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Value of a property to set
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Value of a property to set
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Value of a property to set
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Value of a property to set
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        value_ = getDefaultInstance().getValue();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Value of a property to set
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Sysctl)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Sysctl)
    private static final io.kubernetes.client.proto.V1.Sysctl DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Sysctl();
    }

    public static io.kubernetes.client.proto.V1.Sysctl getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Sysctl>
        PARSER = new com.google.protobuf.AbstractParser<Sysctl>() {
      @java.lang.Override
      public Sysctl 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<Sysctl> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Sysctl> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Sysctl getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TCPSocketActionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.TCPSocketAction)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Number or name of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
     * @return Whether the port field is set.
     */
    boolean hasPort();
    /**
     * <pre>
     * Number or name of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
     * @return The port.
     */
    io.kubernetes.client.proto.IntStr.IntOrString getPort();
    /**
     * <pre>
     * Number or name of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
     */
    io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder getPortOrBuilder();

    /**
     * <pre>
     * Optional: Host name to connect to, defaults to the pod IP.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return Whether the host field is set.
     */
    boolean hasHost();
    /**
     * <pre>
     * Optional: Host name to connect to, defaults to the pod IP.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return The host.
     */
    java.lang.String getHost();
    /**
     * <pre>
     * Optional: Host name to connect to, defaults to the pod IP.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return The bytes for host.
     */
    com.google.protobuf.ByteString
        getHostBytes();
  }
  /**
   * <pre>
   * TCPSocketAction describes an action based on opening a socket
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.TCPSocketAction}
   */
  public static final class TCPSocketAction extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.TCPSocketAction)
      TCPSocketActionOrBuilder {
  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= */ "",
        TCPSocketAction.class.getName());
    }
    // Use TCPSocketAction.newBuilder() to construct.
    private TCPSocketAction(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private TCPSocketAction() {
      host_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TCPSocketAction_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TCPSocketAction_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.TCPSocketAction.class, io.kubernetes.client.proto.V1.TCPSocketAction.Builder.class);
    }

    private int bitField0_;
    public static final int PORT_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.IntStr.IntOrString port_;
    /**
     * <pre>
     * Number or name of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
     * @return Whether the port field is set.
     */
    @java.lang.Override
    public boolean hasPort() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Number or name of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
     * @return The port.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.IntStr.IntOrString getPort() {
      return port_ == null ? io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : port_;
    }
    /**
     * <pre>
     * Number or name of the port to access on the container.
     * Number must be in the range 1 to 65535.
     * Name must be an IANA_SVC_NAME.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder getPortOrBuilder() {
      return port_ == null ? io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : port_;
    }

    public static final int HOST_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object host_ = "";
    /**
     * <pre>
     * Optional: Host name to connect to, defaults to the pod IP.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return Whether the host field is set.
     */
    @java.lang.Override
    public boolean hasHost() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Optional: Host name to connect to, defaults to the pod IP.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return The host.
     */
    @java.lang.Override
    public java.lang.String getHost() {
      java.lang.Object ref = host_;
      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()) {
          host_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Optional: Host name to connect to, defaults to the pod IP.
     * +optional
     * </pre>
     *
     * <code>optional string host = 2;</code>
     * @return The bytes for host.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHostBytes() {
      java.lang.Object ref = host_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        host_ = 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)) {
        output.writeMessage(1, getPort());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, host_);
      }
      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, getPort());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, host_);
      }
      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.V1.TCPSocketAction)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.TCPSocketAction other = (io.kubernetes.client.proto.V1.TCPSocketAction) obj;

      if (hasPort() != other.hasPort()) return false;
      if (hasPort()) {
        if (!getPort()
            .equals(other.getPort())) return false;
      }
      if (hasHost() != other.hasHost()) return false;
      if (hasHost()) {
        if (!getHost()
            .equals(other.getHost())) 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 (hasPort()) {
        hash = (37 * hash) + PORT_FIELD_NUMBER;
        hash = (53 * hash) + getPort().hashCode();
      }
      if (hasHost()) {
        hash = (37 * hash) + HOST_FIELD_NUMBER;
        hash = (53 * hash) + getHost().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.TCPSocketAction parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TCPSocketAction 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.V1.TCPSocketAction parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TCPSocketAction 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.V1.TCPSocketAction parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TCPSocketAction parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.TCPSocketAction parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TCPSocketAction 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.V1.TCPSocketAction parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.TCPSocketAction 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.V1.TCPSocketAction parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TCPSocketAction 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.V1.TCPSocketAction 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>
     * TCPSocketAction describes an action based on opening a socket
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.TCPSocketAction}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.TCPSocketAction)
        io.kubernetes.client.proto.V1.TCPSocketActionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TCPSocketAction_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TCPSocketAction_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.TCPSocketAction.class, io.kubernetes.client.proto.V1.TCPSocketAction.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.TCPSocketAction.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPortFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        port_ = null;
        if (portBuilder_ != null) {
          portBuilder_.dispose();
          portBuilder_ = null;
        }
        host_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TCPSocketAction_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TCPSocketAction getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TCPSocketAction build() {
        io.kubernetes.client.proto.V1.TCPSocketAction result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TCPSocketAction buildPartial() {
        io.kubernetes.client.proto.V1.TCPSocketAction result = new io.kubernetes.client.proto.V1.TCPSocketAction(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.TCPSocketAction result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.port_ = portBuilder_ == null
              ? port_
              : portBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.host_ = host_;
          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.V1.TCPSocketAction) {
          return mergeFrom((io.kubernetes.client.proto.V1.TCPSocketAction)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.TCPSocketAction other) {
        if (other == io.kubernetes.client.proto.V1.TCPSocketAction.getDefaultInstance()) return this;
        if (other.hasPort()) {
          mergePort(other.getPort());
        }
        if (other.hasHost()) {
          host_ = other.host_;
          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: {
                input.readMessage(
                    getPortFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                host_ = 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 io.kubernetes.client.proto.IntStr.IntOrString port_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.IntStr.IntOrString, io.kubernetes.client.proto.IntStr.IntOrString.Builder, io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder> portBuilder_;
      /**
       * <pre>
       * Number or name of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
       * @return Whether the port field is set.
       */
      public boolean hasPort() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Number or name of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
       * @return The port.
       */
      public io.kubernetes.client.proto.IntStr.IntOrString getPort() {
        if (portBuilder_ == null) {
          return port_ == null ? io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : port_;
        } else {
          return portBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Number or name of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
       */
      public Builder setPort(io.kubernetes.client.proto.IntStr.IntOrString value) {
        if (portBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          port_ = value;
        } else {
          portBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number or name of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
       */
      public Builder setPort(
          io.kubernetes.client.proto.IntStr.IntOrString.Builder builderForValue) {
        if (portBuilder_ == null) {
          port_ = builderForValue.build();
        } else {
          portBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number or name of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
       */
      public Builder mergePort(io.kubernetes.client.proto.IntStr.IntOrString value) {
        if (portBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            port_ != null &&
            port_ != io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance()) {
            getPortBuilder().mergeFrom(value);
          } else {
            port_ = value;
          }
        } else {
          portBuilder_.mergeFrom(value);
        }
        if (port_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Number or name of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
       */
      public Builder clearPort() {
        bitField0_ = (bitField0_ & ~0x00000001);
        port_ = null;
        if (portBuilder_ != null) {
          portBuilder_.dispose();
          portBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number or name of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
       */
      public io.kubernetes.client.proto.IntStr.IntOrString.Builder getPortBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPortFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Number or name of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
       */
      public io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder getPortOrBuilder() {
        if (portBuilder_ != null) {
          return portBuilder_.getMessageOrBuilder();
        } else {
          return port_ == null ?
              io.kubernetes.client.proto.IntStr.IntOrString.getDefaultInstance() : port_;
        }
      }
      /**
       * <pre>
       * Number or name of the port to access on the container.
       * Number must be in the range 1 to 65535.
       * Name must be an IANA_SVC_NAME.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.IntStr.IntOrString, io.kubernetes.client.proto.IntStr.IntOrString.Builder, io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder> 
          getPortFieldBuilder() {
        if (portBuilder_ == null) {
          portBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.IntStr.IntOrString, io.kubernetes.client.proto.IntStr.IntOrString.Builder, io.kubernetes.client.proto.IntStr.IntOrStringOrBuilder>(
                  getPort(),
                  getParentForChildren(),
                  isClean());
          port_ = null;
        }
        return portBuilder_;
      }

      private java.lang.Object host_ = "";
      /**
       * <pre>
       * Optional: Host name to connect to, defaults to the pod IP.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @return Whether the host field is set.
       */
      public boolean hasHost() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Optional: Host name to connect to, defaults to the pod IP.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @return The host.
       */
      public java.lang.String getHost() {
        java.lang.Object ref = host_;
        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()) {
            host_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional: Host name to connect to, defaults to the pod IP.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @return The bytes for host.
       */
      public com.google.protobuf.ByteString
          getHostBytes() {
        java.lang.Object ref = host_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          host_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional: Host name to connect to, defaults to the pod IP.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @param value The host to set.
       * @return This builder for chaining.
       */
      public Builder setHost(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        host_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: Host name to connect to, defaults to the pod IP.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHost() {
        host_ = getDefaultInstance().getHost();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional: Host name to connect to, defaults to the pod IP.
       * +optional
       * </pre>
       *
       * <code>optional string host = 2;</code>
       * @param value The bytes for host to set.
       * @return This builder for chaining.
       */
      public Builder setHostBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        host_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.TCPSocketAction)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.TCPSocketAction)
    private static final io.kubernetes.client.proto.V1.TCPSocketAction DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.TCPSocketAction();
    }

    public static io.kubernetes.client.proto.V1.TCPSocketAction getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TCPSocketAction>
        PARSER = new com.google.protobuf.AbstractParser<TCPSocketAction>() {
      @java.lang.Override
      public TCPSocketAction 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<TCPSocketAction> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TCPSocketAction> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.TCPSocketAction getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TaintOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Taint)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required. The taint key to be applied to a node.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <pre>
     * Required. The taint key to be applied to a node.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <pre>
     * Required. The taint key to be applied to a node.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * The taint value corresponding to the taint key.
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * The taint value corresponding to the taint key.
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <pre>
     * The taint value corresponding to the taint key.
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * <pre>
     * Required. The effect of the taint on pods
     * that do not tolerate the taint.
     * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
     * </pre>
     *
     * <code>optional string effect = 3;</code>
     * @return Whether the effect field is set.
     */
    boolean hasEffect();
    /**
     * <pre>
     * Required. The effect of the taint on pods
     * that do not tolerate the taint.
     * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
     * </pre>
     *
     * <code>optional string effect = 3;</code>
     * @return The effect.
     */
    java.lang.String getEffect();
    /**
     * <pre>
     * Required. The effect of the taint on pods
     * that do not tolerate the taint.
     * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
     * </pre>
     *
     * <code>optional string effect = 3;</code>
     * @return The bytes for effect.
     */
    com.google.protobuf.ByteString
        getEffectBytes();

    /**
     * <pre>
     * TimeAdded represents the time at which the taint was added.
     * It is only written for NoExecute taints.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
     * @return Whether the timeAdded field is set.
     */
    boolean hasTimeAdded();
    /**
     * <pre>
     * TimeAdded represents the time at which the taint was added.
     * It is only written for NoExecute taints.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
     * @return The timeAdded.
     */
    io.kubernetes.client.proto.Meta.Time getTimeAdded();
    /**
     * <pre>
     * TimeAdded represents the time at which the taint was added.
     * It is only written for NoExecute taints.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getTimeAddedOrBuilder();
  }
  /**
   * <pre>
   * The node this Taint is attached to has the "effect" on
   * any pod that does not tolerate the Taint.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Taint}
   */
  public static final class Taint extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Taint)
      TaintOrBuilder {
  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= */ "",
        Taint.class.getName());
    }
    // Use Taint.newBuilder() to construct.
    private Taint(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Taint() {
      key_ = "";
      value_ = "";
      effect_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Taint_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Taint_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Taint.class, io.kubernetes.client.proto.V1.Taint.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object key_ = "";
    /**
     * <pre>
     * Required. The taint key to be applied to a node.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Required. The taint key to be applied to a node.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Required. The taint key to be applied to a node.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object value_ = "";
    /**
     * <pre>
     * The taint value corresponding to the taint key.
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The taint value corresponding to the taint key.
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The taint value corresponding to the taint key.
     * +optional
     * </pre>
     *
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EFFECT_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object effect_ = "";
    /**
     * <pre>
     * Required. The effect of the taint on pods
     * that do not tolerate the taint.
     * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
     * </pre>
     *
     * <code>optional string effect = 3;</code>
     * @return Whether the effect field is set.
     */
    @java.lang.Override
    public boolean hasEffect() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Required. The effect of the taint on pods
     * that do not tolerate the taint.
     * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
     * </pre>
     *
     * <code>optional string effect = 3;</code>
     * @return The effect.
     */
    @java.lang.Override
    public java.lang.String getEffect() {
      java.lang.Object ref = effect_;
      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()) {
          effect_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Required. The effect of the taint on pods
     * that do not tolerate the taint.
     * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
     * </pre>
     *
     * <code>optional string effect = 3;</code>
     * @return The bytes for effect.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEffectBytes() {
      java.lang.Object ref = effect_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        effect_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIMEADDED_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.Meta.Time timeAdded_;
    /**
     * <pre>
     * TimeAdded represents the time at which the taint was added.
     * It is only written for NoExecute taints.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
     * @return Whether the timeAdded field is set.
     */
    @java.lang.Override
    public boolean hasTimeAdded() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * TimeAdded represents the time at which the taint was added.
     * It is only written for NoExecute taints.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
     * @return The timeAdded.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getTimeAdded() {
      return timeAdded_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : timeAdded_;
    }
    /**
     * <pre>
     * TimeAdded represents the time at which the taint was added.
     * It is only written for NoExecute taints.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getTimeAddedOrBuilder() {
      return timeAdded_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : timeAdded_;
    }

    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, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, value_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, effect_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getTimeAdded());
      }
      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, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, value_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, effect_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getTimeAdded());
      }
      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.V1.Taint)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Taint other = (io.kubernetes.client.proto.V1.Taint) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (hasEffect() != other.hasEffect()) return false;
      if (hasEffect()) {
        if (!getEffect()
            .equals(other.getEffect())) return false;
      }
      if (hasTimeAdded() != other.hasTimeAdded()) return false;
      if (hasTimeAdded()) {
        if (!getTimeAdded()
            .equals(other.getTimeAdded())) 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 (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      if (hasEffect()) {
        hash = (37 * hash) + EFFECT_FIELD_NUMBER;
        hash = (53 * hash) + getEffect().hashCode();
      }
      if (hasTimeAdded()) {
        hash = (37 * hash) + TIMEADDED_FIELD_NUMBER;
        hash = (53 * hash) + getTimeAdded().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.Taint parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Taint 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.V1.Taint parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Taint 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.V1.Taint parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Taint parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Taint parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Taint 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.V1.Taint parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Taint 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.V1.Taint parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Taint 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.V1.Taint 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>
     * The node this Taint is attached to has the "effect" on
     * any pod that does not tolerate the Taint.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Taint}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Taint)
        io.kubernetes.client.proto.V1.TaintOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Taint_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Taint_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Taint.class, io.kubernetes.client.proto.V1.Taint.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Taint.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getTimeAddedFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        key_ = "";
        value_ = "";
        effect_ = "";
        timeAdded_ = null;
        if (timeAddedBuilder_ != null) {
          timeAddedBuilder_.dispose();
          timeAddedBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Taint_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Taint getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Taint.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Taint build() {
        io.kubernetes.client.proto.V1.Taint result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Taint buildPartial() {
        io.kubernetes.client.proto.V1.Taint result = new io.kubernetes.client.proto.V1.Taint(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Taint result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.key_ = key_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.value_ = value_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.effect_ = effect_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.timeAdded_ = timeAddedBuilder_ == null
              ? timeAdded_
              : timeAddedBuilder_.build();
          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.V1.Taint) {
          return mergeFrom((io.kubernetes.client.proto.V1.Taint)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Taint other) {
        if (other == io.kubernetes.client.proto.V1.Taint.getDefaultInstance()) return this;
        if (other.hasKey()) {
          key_ = other.key_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasValue()) {
          value_ = other.value_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasEffect()) {
          effect_ = other.effect_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasTimeAdded()) {
          mergeTimeAdded(other.getTimeAdded());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                key_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                value_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                effect_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getTimeAddedFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * <pre>
       * Required. The taint key to be applied to a node.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Required. The taint key to be applied to a node.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Required. The taint key to be applied to a node.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Required. The taint key to be applied to a node.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. The taint key to be applied to a node.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = getDefaultInstance().getKey();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. The taint key to be applied to a node.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * <pre>
       * The taint value corresponding to the taint key.
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The taint value corresponding to the taint key.
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The taint value corresponding to the taint key.
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The taint value corresponding to the taint key.
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The taint value corresponding to the taint key.
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        value_ = getDefaultInstance().getValue();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The taint value corresponding to the taint key.
       * +optional
       * </pre>
       *
       * <code>optional string value = 2;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object effect_ = "";
      /**
       * <pre>
       * Required. The effect of the taint on pods
       * that do not tolerate the taint.
       * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
       * </pre>
       *
       * <code>optional string effect = 3;</code>
       * @return Whether the effect field is set.
       */
      public boolean hasEffect() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Required. The effect of the taint on pods
       * that do not tolerate the taint.
       * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
       * </pre>
       *
       * <code>optional string effect = 3;</code>
       * @return The effect.
       */
      public java.lang.String getEffect() {
        java.lang.Object ref = effect_;
        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()) {
            effect_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Required. The effect of the taint on pods
       * that do not tolerate the taint.
       * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
       * </pre>
       *
       * <code>optional string effect = 3;</code>
       * @return The bytes for effect.
       */
      public com.google.protobuf.ByteString
          getEffectBytes() {
        java.lang.Object ref = effect_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          effect_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Required. The effect of the taint on pods
       * that do not tolerate the taint.
       * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
       * </pre>
       *
       * <code>optional string effect = 3;</code>
       * @param value The effect to set.
       * @return This builder for chaining.
       */
      public Builder setEffect(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        effect_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. The effect of the taint on pods
       * that do not tolerate the taint.
       * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
       * </pre>
       *
       * <code>optional string effect = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearEffect() {
        effect_ = getDefaultInstance().getEffect();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. The effect of the taint on pods
       * that do not tolerate the taint.
       * Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
       * </pre>
       *
       * <code>optional string effect = 3;</code>
       * @param value The bytes for effect to set.
       * @return This builder for chaining.
       */
      public Builder setEffectBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        effect_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.Time timeAdded_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> timeAddedBuilder_;
      /**
       * <pre>
       * TimeAdded represents the time at which the taint was added.
       * It is only written for NoExecute taints.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
       * @return Whether the timeAdded field is set.
       */
      public boolean hasTimeAdded() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * TimeAdded represents the time at which the taint was added.
       * It is only written for NoExecute taints.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
       * @return The timeAdded.
       */
      public io.kubernetes.client.proto.Meta.Time getTimeAdded() {
        if (timeAddedBuilder_ == null) {
          return timeAdded_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : timeAdded_;
        } else {
          return timeAddedBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * TimeAdded represents the time at which the taint was added.
       * It is only written for NoExecute taints.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
       */
      public Builder setTimeAdded(io.kubernetes.client.proto.Meta.Time value) {
        if (timeAddedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timeAdded_ = value;
        } else {
          timeAddedBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TimeAdded represents the time at which the taint was added.
       * It is only written for NoExecute taints.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
       */
      public Builder setTimeAdded(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (timeAddedBuilder_ == null) {
          timeAdded_ = builderForValue.build();
        } else {
          timeAddedBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TimeAdded represents the time at which the taint was added.
       * It is only written for NoExecute taints.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
       */
      public Builder mergeTimeAdded(io.kubernetes.client.proto.Meta.Time value) {
        if (timeAddedBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            timeAdded_ != null &&
            timeAdded_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getTimeAddedBuilder().mergeFrom(value);
          } else {
            timeAdded_ = value;
          }
        } else {
          timeAddedBuilder_.mergeFrom(value);
        }
        if (timeAdded_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * TimeAdded represents the time at which the taint was added.
       * It is only written for NoExecute taints.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
       */
      public Builder clearTimeAdded() {
        bitField0_ = (bitField0_ & ~0x00000008);
        timeAdded_ = null;
        if (timeAddedBuilder_ != null) {
          timeAddedBuilder_.dispose();
          timeAddedBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TimeAdded represents the time at which the taint was added.
       * It is only written for NoExecute taints.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getTimeAddedBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getTimeAddedFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * TimeAdded represents the time at which the taint was added.
       * It is only written for NoExecute taints.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getTimeAddedOrBuilder() {
        if (timeAddedBuilder_ != null) {
          return timeAddedBuilder_.getMessageOrBuilder();
        } else {
          return timeAdded_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : timeAdded_;
        }
      }
      /**
       * <pre>
       * TimeAdded represents the time at which the taint was added.
       * It is only written for NoExecute taints.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;</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> 
          getTimeAddedFieldBuilder() {
        if (timeAddedBuilder_ == null) {
          timeAddedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getTimeAdded(),
                  getParentForChildren(),
                  isClean());
          timeAdded_ = null;
        }
        return timeAddedBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Taint)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Taint)
    private static final io.kubernetes.client.proto.V1.Taint DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Taint();
    }

    public static io.kubernetes.client.proto.V1.Taint getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Taint>
        PARSER = new com.google.protobuf.AbstractParser<Taint>() {
      @java.lang.Override
      public Taint 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<Taint> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Taint> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Taint getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TolerationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Toleration)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Key is the taint key that the toleration applies to. Empty means match all taint keys.
     * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
     * +optional
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <pre>
     * Key is the taint key that the toleration applies to. Empty means match all taint keys.
     * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
     * +optional
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <pre>
     * Key is the taint key that the toleration applies to. Empty means match all taint keys.
     * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
     * +optional
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * Operator represents a key's relationship to the value.
     * Valid operators are Exists and Equal. Defaults to Equal.
     * Exists is equivalent to wildcard for value, so that a pod can
     * tolerate all taints of a particular category.
     * +optional
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return Whether the operator field is set.
     */
    boolean hasOperator();
    /**
     * <pre>
     * Operator represents a key's relationship to the value.
     * Valid operators are Exists and Equal. Defaults to Equal.
     * Exists is equivalent to wildcard for value, so that a pod can
     * tolerate all taints of a particular category.
     * +optional
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The operator.
     */
    java.lang.String getOperator();
    /**
     * <pre>
     * Operator represents a key's relationship to the value.
     * Valid operators are Exists and Equal. Defaults to Equal.
     * Exists is equivalent to wildcard for value, so that a pod can
     * tolerate all taints of a particular category.
     * +optional
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The bytes for operator.
     */
    com.google.protobuf.ByteString
        getOperatorBytes();

    /**
     * <pre>
     * Value is the taint value the toleration matches to.
     * If the operator is Exists, the value should be empty, otherwise just a regular string.
     * +optional
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * Value is the taint value the toleration matches to.
     * If the operator is Exists, the value should be empty, otherwise just a regular string.
     * +optional
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <pre>
     * Value is the taint value the toleration matches to.
     * If the operator is Exists, the value should be empty, otherwise just a regular string.
     * +optional
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * <pre>
     * Effect indicates the taint effect to match. Empty means match all taint effects.
     * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
     * +optional
     * </pre>
     *
     * <code>optional string effect = 4;</code>
     * @return Whether the effect field is set.
     */
    boolean hasEffect();
    /**
     * <pre>
     * Effect indicates the taint effect to match. Empty means match all taint effects.
     * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
     * +optional
     * </pre>
     *
     * <code>optional string effect = 4;</code>
     * @return The effect.
     */
    java.lang.String getEffect();
    /**
     * <pre>
     * Effect indicates the taint effect to match. Empty means match all taint effects.
     * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
     * +optional
     * </pre>
     *
     * <code>optional string effect = 4;</code>
     * @return The bytes for effect.
     */
    com.google.protobuf.ByteString
        getEffectBytes();

    /**
     * <pre>
     * TolerationSeconds represents the period of time the toleration (which must be
     * of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
     * it is not set, which means tolerate the taint forever (do not evict). Zero and
     * negative values will be treated as 0 (evict immediately) by the system.
     * +optional
     * </pre>
     *
     * <code>optional int64 tolerationSeconds = 5;</code>
     * @return Whether the tolerationSeconds field is set.
     */
    boolean hasTolerationSeconds();
    /**
     * <pre>
     * TolerationSeconds represents the period of time the toleration (which must be
     * of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
     * it is not set, which means tolerate the taint forever (do not evict). Zero and
     * negative values will be treated as 0 (evict immediately) by the system.
     * +optional
     * </pre>
     *
     * <code>optional int64 tolerationSeconds = 5;</code>
     * @return The tolerationSeconds.
     */
    long getTolerationSeconds();
  }
  /**
   * <pre>
   * The pod this Toleration is attached to tolerates any taint that matches
   * the triple &lt;key,value,effect&gt; using the matching operator &lt;operator&gt;.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Toleration}
   */
  public static final class Toleration extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Toleration)
      TolerationOrBuilder {
  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= */ "",
        Toleration.class.getName());
    }
    // Use Toleration.newBuilder() to construct.
    private Toleration(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Toleration() {
      key_ = "";
      operator_ = "";
      value_ = "";
      effect_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Toleration_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Toleration_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Toleration.class, io.kubernetes.client.proto.V1.Toleration.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object key_ = "";
    /**
     * <pre>
     * Key is the taint key that the toleration applies to. Empty means match all taint keys.
     * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
     * +optional
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Key is the taint key that the toleration applies to. Empty means match all taint keys.
     * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
     * +optional
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Key is the taint key that the toleration applies to. Empty means match all taint keys.
     * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
     * +optional
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPERATOR_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object operator_ = "";
    /**
     * <pre>
     * Operator represents a key's relationship to the value.
     * Valid operators are Exists and Equal. Defaults to Equal.
     * Exists is equivalent to wildcard for value, so that a pod can
     * tolerate all taints of a particular category.
     * +optional
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return Whether the operator field is set.
     */
    @java.lang.Override
    public boolean hasOperator() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Operator represents a key's relationship to the value.
     * Valid operators are Exists and Equal. Defaults to Equal.
     * Exists is equivalent to wildcard for value, so that a pod can
     * tolerate all taints of a particular category.
     * +optional
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The operator.
     */
    @java.lang.Override
    public java.lang.String getOperator() {
      java.lang.Object ref = operator_;
      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()) {
          operator_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Operator represents a key's relationship to the value.
     * Valid operators are Exists and Equal. Defaults to Equal.
     * Exists is equivalent to wildcard for value, so that a pod can
     * tolerate all taints of a particular category.
     * +optional
     * </pre>
     *
     * <code>optional string operator = 2;</code>
     * @return The bytes for operator.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOperatorBytes() {
      java.lang.Object ref = operator_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        operator_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object value_ = "";
    /**
     * <pre>
     * Value is the taint value the toleration matches to.
     * If the operator is Exists, the value should be empty, otherwise just a regular string.
     * +optional
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Value is the taint value the toleration matches to.
     * If the operator is Exists, the value should be empty, otherwise just a regular string.
     * +optional
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Value is the taint value the toleration matches to.
     * If the operator is Exists, the value should be empty, otherwise just a regular string.
     * +optional
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EFFECT_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object effect_ = "";
    /**
     * <pre>
     * Effect indicates the taint effect to match. Empty means match all taint effects.
     * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
     * +optional
     * </pre>
     *
     * <code>optional string effect = 4;</code>
     * @return Whether the effect field is set.
     */
    @java.lang.Override
    public boolean hasEffect() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Effect indicates the taint effect to match. Empty means match all taint effects.
     * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
     * +optional
     * </pre>
     *
     * <code>optional string effect = 4;</code>
     * @return The effect.
     */
    @java.lang.Override
    public java.lang.String getEffect() {
      java.lang.Object ref = effect_;
      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()) {
          effect_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Effect indicates the taint effect to match. Empty means match all taint effects.
     * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
     * +optional
     * </pre>
     *
     * <code>optional string effect = 4;</code>
     * @return The bytes for effect.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEffectBytes() {
      java.lang.Object ref = effect_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        effect_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TOLERATIONSECONDS_FIELD_NUMBER = 5;
    private long tolerationSeconds_ = 0L;
    /**
     * <pre>
     * TolerationSeconds represents the period of time the toleration (which must be
     * of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
     * it is not set, which means tolerate the taint forever (do not evict). Zero and
     * negative values will be treated as 0 (evict immediately) by the system.
     * +optional
     * </pre>
     *
     * <code>optional int64 tolerationSeconds = 5;</code>
     * @return Whether the tolerationSeconds field is set.
     */
    @java.lang.Override
    public boolean hasTolerationSeconds() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * TolerationSeconds represents the period of time the toleration (which must be
     * of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
     * it is not set, which means tolerate the taint forever (do not evict). Zero and
     * negative values will be treated as 0 (evict immediately) by the system.
     * +optional
     * </pre>
     *
     * <code>optional int64 tolerationSeconds = 5;</code>
     * @return The tolerationSeconds.
     */
    @java.lang.Override
    public long getTolerationSeconds() {
      return tolerationSeconds_;
    }

    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, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, operator_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, value_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, effect_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt64(5, tolerationSeconds_);
      }
      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, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, operator_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, value_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, effect_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, tolerationSeconds_);
      }
      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.V1.Toleration)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Toleration other = (io.kubernetes.client.proto.V1.Toleration) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasOperator() != other.hasOperator()) return false;
      if (hasOperator()) {
        if (!getOperator()
            .equals(other.getOperator())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (hasEffect() != other.hasEffect()) return false;
      if (hasEffect()) {
        if (!getEffect()
            .equals(other.getEffect())) return false;
      }
      if (hasTolerationSeconds() != other.hasTolerationSeconds()) return false;
      if (hasTolerationSeconds()) {
        if (getTolerationSeconds()
            != other.getTolerationSeconds()) 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 (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasOperator()) {
        hash = (37 * hash) + OPERATOR_FIELD_NUMBER;
        hash = (53 * hash) + getOperator().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      if (hasEffect()) {
        hash = (37 * hash) + EFFECT_FIELD_NUMBER;
        hash = (53 * hash) + getEffect().hashCode();
      }
      if (hasTolerationSeconds()) {
        hash = (37 * hash) + TOLERATIONSECONDS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTolerationSeconds());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.Toleration parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Toleration 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.V1.Toleration parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Toleration 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.V1.Toleration parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Toleration parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Toleration parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Toleration 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.V1.Toleration parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Toleration 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.V1.Toleration parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Toleration 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.V1.Toleration 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>
     * The pod this Toleration is attached to tolerates any taint that matches
     * the triple &lt;key,value,effect&gt; using the matching operator &lt;operator&gt;.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Toleration}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Toleration)
        io.kubernetes.client.proto.V1.TolerationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Toleration_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Toleration_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Toleration.class, io.kubernetes.client.proto.V1.Toleration.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Toleration.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        key_ = "";
        operator_ = "";
        value_ = "";
        effect_ = "";
        tolerationSeconds_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Toleration_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Toleration getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Toleration.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Toleration build() {
        io.kubernetes.client.proto.V1.Toleration result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Toleration buildPartial() {
        io.kubernetes.client.proto.V1.Toleration result = new io.kubernetes.client.proto.V1.Toleration(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Toleration result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.key_ = key_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.operator_ = operator_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.value_ = value_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.effect_ = effect_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.tolerationSeconds_ = tolerationSeconds_;
          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.V1.Toleration) {
          return mergeFrom((io.kubernetes.client.proto.V1.Toleration)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Toleration other) {
        if (other == io.kubernetes.client.proto.V1.Toleration.getDefaultInstance()) return this;
        if (other.hasKey()) {
          key_ = other.key_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasOperator()) {
          operator_ = other.operator_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasValue()) {
          value_ = other.value_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasEffect()) {
          effect_ = other.effect_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasTolerationSeconds()) {
          setTolerationSeconds(other.getTolerationSeconds());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                key_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                operator_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                value_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                effect_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 40: {
                tolerationSeconds_ = input.readInt64();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * <pre>
       * Key is the taint key that the toleration applies to. Empty means match all taint keys.
       * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
       * +optional
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Key is the taint key that the toleration applies to. Empty means match all taint keys.
       * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
       * +optional
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Key is the taint key that the toleration applies to. Empty means match all taint keys.
       * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
       * +optional
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Key is the taint key that the toleration applies to. Empty means match all taint keys.
       * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
       * +optional
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Key is the taint key that the toleration applies to. Empty means match all taint keys.
       * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
       * +optional
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = getDefaultInstance().getKey();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Key is the taint key that the toleration applies to. Empty means match all taint keys.
       * If the key is empty, operator must be Exists; this combination means to match all values and all keys.
       * +optional
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object operator_ = "";
      /**
       * <pre>
       * Operator represents a key's relationship to the value.
       * Valid operators are Exists and Equal. Defaults to Equal.
       * Exists is equivalent to wildcard for value, so that a pod can
       * tolerate all taints of a particular category.
       * +optional
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return Whether the operator field is set.
       */
      public boolean hasOperator() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Operator represents a key's relationship to the value.
       * Valid operators are Exists and Equal. Defaults to Equal.
       * Exists is equivalent to wildcard for value, so that a pod can
       * tolerate all taints of a particular category.
       * +optional
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return The operator.
       */
      public java.lang.String getOperator() {
        java.lang.Object ref = operator_;
        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()) {
            operator_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Operator represents a key's relationship to the value.
       * Valid operators are Exists and Equal. Defaults to Equal.
       * Exists is equivalent to wildcard for value, so that a pod can
       * tolerate all taints of a particular category.
       * +optional
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return The bytes for operator.
       */
      public com.google.protobuf.ByteString
          getOperatorBytes() {
        java.lang.Object ref = operator_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          operator_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Operator represents a key's relationship to the value.
       * Valid operators are Exists and Equal. Defaults to Equal.
       * Exists is equivalent to wildcard for value, so that a pod can
       * tolerate all taints of a particular category.
       * +optional
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @param value The operator to set.
       * @return This builder for chaining.
       */
      public Builder setOperator(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        operator_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operator represents a key's relationship to the value.
       * Valid operators are Exists and Equal. Defaults to Equal.
       * Exists is equivalent to wildcard for value, so that a pod can
       * tolerate all taints of a particular category.
       * +optional
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOperator() {
        operator_ = getDefaultInstance().getOperator();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operator represents a key's relationship to the value.
       * Valid operators are Exists and Equal. Defaults to Equal.
       * Exists is equivalent to wildcard for value, so that a pod can
       * tolerate all taints of a particular category.
       * +optional
       * </pre>
       *
       * <code>optional string operator = 2;</code>
       * @param value The bytes for operator to set.
       * @return This builder for chaining.
       */
      public Builder setOperatorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        operator_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * <pre>
       * Value is the taint value the toleration matches to.
       * If the operator is Exists, the value should be empty, otherwise just a regular string.
       * +optional
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Value is the taint value the toleration matches to.
       * If the operator is Exists, the value should be empty, otherwise just a regular string.
       * +optional
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Value is the taint value the toleration matches to.
       * If the operator is Exists, the value should be empty, otherwise just a regular string.
       * +optional
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Value is the taint value the toleration matches to.
       * If the operator is Exists, the value should be empty, otherwise just a regular string.
       * +optional
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Value is the taint value the toleration matches to.
       * If the operator is Exists, the value should be empty, otherwise just a regular string.
       * +optional
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        value_ = getDefaultInstance().getValue();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Value is the taint value the toleration matches to.
       * If the operator is Exists, the value should be empty, otherwise just a regular string.
       * +optional
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object effect_ = "";
      /**
       * <pre>
       * Effect indicates the taint effect to match. Empty means match all taint effects.
       * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
       * +optional
       * </pre>
       *
       * <code>optional string effect = 4;</code>
       * @return Whether the effect field is set.
       */
      public boolean hasEffect() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Effect indicates the taint effect to match. Empty means match all taint effects.
       * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
       * +optional
       * </pre>
       *
       * <code>optional string effect = 4;</code>
       * @return The effect.
       */
      public java.lang.String getEffect() {
        java.lang.Object ref = effect_;
        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()) {
            effect_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Effect indicates the taint effect to match. Empty means match all taint effects.
       * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
       * +optional
       * </pre>
       *
       * <code>optional string effect = 4;</code>
       * @return The bytes for effect.
       */
      public com.google.protobuf.ByteString
          getEffectBytes() {
        java.lang.Object ref = effect_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          effect_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Effect indicates the taint effect to match. Empty means match all taint effects.
       * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
       * +optional
       * </pre>
       *
       * <code>optional string effect = 4;</code>
       * @param value The effect to set.
       * @return This builder for chaining.
       */
      public Builder setEffect(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        effect_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Effect indicates the taint effect to match. Empty means match all taint effects.
       * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
       * +optional
       * </pre>
       *
       * <code>optional string effect = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearEffect() {
        effect_ = getDefaultInstance().getEffect();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Effect indicates the taint effect to match. Empty means match all taint effects.
       * When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
       * +optional
       * </pre>
       *
       * <code>optional string effect = 4;</code>
       * @param value The bytes for effect to set.
       * @return This builder for chaining.
       */
      public Builder setEffectBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        effect_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private long tolerationSeconds_ ;
      /**
       * <pre>
       * TolerationSeconds represents the period of time the toleration (which must be
       * of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
       * it is not set, which means tolerate the taint forever (do not evict). Zero and
       * negative values will be treated as 0 (evict immediately) by the system.
       * +optional
       * </pre>
       *
       * <code>optional int64 tolerationSeconds = 5;</code>
       * @return Whether the tolerationSeconds field is set.
       */
      @java.lang.Override
      public boolean hasTolerationSeconds() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * TolerationSeconds represents the period of time the toleration (which must be
       * of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
       * it is not set, which means tolerate the taint forever (do not evict). Zero and
       * negative values will be treated as 0 (evict immediately) by the system.
       * +optional
       * </pre>
       *
       * <code>optional int64 tolerationSeconds = 5;</code>
       * @return The tolerationSeconds.
       */
      @java.lang.Override
      public long getTolerationSeconds() {
        return tolerationSeconds_;
      }
      /**
       * <pre>
       * TolerationSeconds represents the period of time the toleration (which must be
       * of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
       * it is not set, which means tolerate the taint forever (do not evict). Zero and
       * negative values will be treated as 0 (evict immediately) by the system.
       * +optional
       * </pre>
       *
       * <code>optional int64 tolerationSeconds = 5;</code>
       * @param value The tolerationSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setTolerationSeconds(long value) {

        tolerationSeconds_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TolerationSeconds represents the period of time the toleration (which must be
       * of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
       * it is not set, which means tolerate the taint forever (do not evict). Zero and
       * negative values will be treated as 0 (evict immediately) by the system.
       * +optional
       * </pre>
       *
       * <code>optional int64 tolerationSeconds = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTolerationSeconds() {
        bitField0_ = (bitField0_ & ~0x00000010);
        tolerationSeconds_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Toleration)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Toleration)
    private static final io.kubernetes.client.proto.V1.Toleration DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Toleration();
    }

    public static io.kubernetes.client.proto.V1.Toleration getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Toleration>
        PARSER = new com.google.protobuf.AbstractParser<Toleration>() {
      @java.lang.Override
      public Toleration 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<Toleration> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Toleration> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Toleration getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TopologySelectorLabelRequirementOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.TopologySelectorLabelRequirement)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * An array of string values. One value must match the label to be selected.
     * Each entry in Values is ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 2;</code>
     * @return A list containing the values.
     */
    java.util.List<java.lang.String>
        getValuesList();
    /**
     * <pre>
     * An array of string values. One value must match the label to be selected.
     * Each entry in Values is ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 2;</code>
     * @return The count of values.
     */
    int getValuesCount();
    /**
     * <pre>
     * An array of string values. One value must match the label to be selected.
     * Each entry in Values is ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 2;</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    java.lang.String getValues(int index);
    /**
     * <pre>
     * An array of string values. One value must match the label to be selected.
     * Each entry in Values is ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the values at the given index.
     */
    com.google.protobuf.ByteString
        getValuesBytes(int index);
  }
  /**
   * <pre>
   * A topology selector requirement is a selector that matches given label.
   * This is an alpha feature and may change in the future.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.TopologySelectorLabelRequirement}
   */
  public static final class TopologySelectorLabelRequirement extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.TopologySelectorLabelRequirement)
      TopologySelectorLabelRequirementOrBuilder {
  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= */ "",
        TopologySelectorLabelRequirement.class.getName());
    }
    // Use TopologySelectorLabelRequirement.newBuilder() to construct.
    private TopologySelectorLabelRequirement(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private TopologySelectorLabelRequirement() {
      key_ = "";
      values_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySelectorLabelRequirement_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySelectorLabelRequirement_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.class, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object key_ = "";
    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The label key that the selector applies to.
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUES_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList values_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * An array of string values. One value must match the label to be selected.
     * Each entry in Values is ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 2;</code>
     * @return A list containing the values.
     */
    public com.google.protobuf.ProtocolStringList
        getValuesList() {
      return values_;
    }
    /**
     * <pre>
     * An array of string values. One value must match the label to be selected.
     * Each entry in Values is ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 2;</code>
     * @return The count of values.
     */
    public int getValuesCount() {
      return values_.size();
    }
    /**
     * <pre>
     * An array of string values. One value must match the label to be selected.
     * Each entry in Values is ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 2;</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    public java.lang.String getValues(int index) {
      return values_.get(index);
    }
    /**
     * <pre>
     * An array of string values. One value must match the label to be selected.
     * Each entry in Values is ORed.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string values = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the values at the given index.
     */
    public com.google.protobuf.ByteString
        getValuesBytes(int index) {
      return values_.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, key_);
      }
      for (int i = 0; i < values_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, values_.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, key_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < values_.size(); i++) {
          dataSize += computeStringSizeNoTag(values_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getValuesList().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.V1.TopologySelectorLabelRequirement)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement other = (io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (!getValuesList()
          .equals(other.getValuesList())) 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 (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (getValuesCount() > 0) {
        hash = (37 * hash) + VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getValuesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement 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.V1.TopologySelectorLabelRequirement parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement 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.V1.TopologySelectorLabelRequirement parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement 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.V1.TopologySelectorLabelRequirement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement 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.V1.TopologySelectorLabelRequirement parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement 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.V1.TopologySelectorLabelRequirement 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>
     * A topology selector requirement is a selector that matches given label.
     * This is an alpha feature and may change in the future.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.TopologySelectorLabelRequirement}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.TopologySelectorLabelRequirement)
        io.kubernetes.client.proto.V1.TopologySelectorLabelRequirementOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySelectorLabelRequirement_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySelectorLabelRequirement_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.class, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        key_ = "";
        values_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySelectorLabelRequirement_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement build() {
        io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement buildPartial() {
        io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement result = new io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.key_ = key_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          values_.makeImmutable();
          result.values_ = values_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement) {
          return mergeFrom((io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement other) {
        if (other == io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.getDefaultInstance()) return this;
        if (other.hasKey()) {
          key_ = other.key_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.values_.isEmpty()) {
          if (values_.isEmpty()) {
            values_ = other.values_;
            bitField0_ |= 0x00000002;
          } else {
            ensureValuesIsMutable();
            values_.addAll(other.values_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                key_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureValuesIsMutable();
                values_.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 java.lang.Object key_ = "";
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = getDefaultInstance().getKey();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The label key that the selector applies to.
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList values_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureValuesIsMutable() {
        if (!values_.isModifiable()) {
          values_ = new com.google.protobuf.LazyStringArrayList(values_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * An array of string values. One value must match the label to be selected.
       * Each entry in Values is ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 2;</code>
       * @return A list containing the values.
       */
      public com.google.protobuf.ProtocolStringList
          getValuesList() {
        values_.makeImmutable();
        return values_;
      }
      /**
       * <pre>
       * An array of string values. One value must match the label to be selected.
       * Each entry in Values is ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 2;</code>
       * @return The count of values.
       */
      public int getValuesCount() {
        return values_.size();
      }
      /**
       * <pre>
       * An array of string values. One value must match the label to be selected.
       * Each entry in Values is ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 2;</code>
       * @param index The index of the element to return.
       * @return The values at the given index.
       */
      public java.lang.String getValues(int index) {
        return values_.get(index);
      }
      /**
       * <pre>
       * An array of string values. One value must match the label to be selected.
       * Each entry in Values is ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the values at the given index.
       */
      public com.google.protobuf.ByteString
          getValuesBytes(int index) {
        return values_.getByteString(index);
      }
      /**
       * <pre>
       * An array of string values. One value must match the label to be selected.
       * Each entry in Values is ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 2;</code>
       * @param index The index to set the value at.
       * @param value The values to set.
       * @return This builder for chaining.
       */
      public Builder setValues(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValuesIsMutable();
        values_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. One value must match the label to be selected.
       * Each entry in Values is ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 2;</code>
       * @param value The values to add.
       * @return This builder for chaining.
       */
      public Builder addValues(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValuesIsMutable();
        values_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. One value must match the label to be selected.
       * Each entry in Values is ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 2;</code>
       * @param values The values to add.
       * @return This builder for chaining.
       */
      public Builder addAllValues(
          java.lang.Iterable<java.lang.String> values) {
        ensureValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, values_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. One value must match the label to be selected.
       * Each entry in Values is ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValues() {
        values_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * An array of string values. One value must match the label to be selected.
       * Each entry in Values is ORed.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string values = 2;</code>
       * @param value The bytes of the values to add.
       * @return This builder for chaining.
       */
      public Builder addValuesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValuesIsMutable();
        values_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.TopologySelectorLabelRequirement)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.TopologySelectorLabelRequirement)
    private static final io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement();
    }

    public static io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TopologySelectorLabelRequirement>
        PARSER = new com.google.protobuf.AbstractParser<TopologySelectorLabelRequirement>() {
      @java.lang.Override
      public TopologySelectorLabelRequirement 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<TopologySelectorLabelRequirement> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TopologySelectorLabelRequirement> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TopologySelectorTermOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.TopologySelectorTerm)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A list of topology selector requirements by labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement> 
        getMatchLabelExpressionsList();
    /**
     * <pre>
     * A list of topology selector requirements by labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
     */
    io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement getMatchLabelExpressions(int index);
    /**
     * <pre>
     * A list of topology selector requirements by labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
     */
    int getMatchLabelExpressionsCount();
    /**
     * <pre>
     * A list of topology selector requirements by labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.TopologySelectorLabelRequirementOrBuilder> 
        getMatchLabelExpressionsOrBuilderList();
    /**
     * <pre>
     * A list of topology selector requirements by labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
     */
    io.kubernetes.client.proto.V1.TopologySelectorLabelRequirementOrBuilder getMatchLabelExpressionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A topology selector term represents the result of label queries.
   * A null or empty topology selector term matches no objects.
   * The requirements of them are ANDed.
   * It provides a subset of functionality as NodeSelectorTerm.
   * This is an alpha feature and may change in the future.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.TopologySelectorTerm}
   */
  public static final class TopologySelectorTerm extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.TopologySelectorTerm)
      TopologySelectorTermOrBuilder {
  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= */ "",
        TopologySelectorTerm.class.getName());
    }
    // Use TopologySelectorTerm.newBuilder() to construct.
    private TopologySelectorTerm(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private TopologySelectorTerm() {
      matchLabelExpressions_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySelectorTerm_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySelectorTerm_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.TopologySelectorTerm.class, io.kubernetes.client.proto.V1.TopologySelectorTerm.Builder.class);
    }

    public static final int MATCHLABELEXPRESSIONS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement> matchLabelExpressions_;
    /**
     * <pre>
     * A list of topology selector requirements by labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement> getMatchLabelExpressionsList() {
      return matchLabelExpressions_;
    }
    /**
     * <pre>
     * A list of topology selector requirements by labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1.TopologySelectorLabelRequirementOrBuilder> 
        getMatchLabelExpressionsOrBuilderList() {
      return matchLabelExpressions_;
    }
    /**
     * <pre>
     * A list of topology selector requirements by labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
     */
    @java.lang.Override
    public int getMatchLabelExpressionsCount() {
      return matchLabelExpressions_.size();
    }
    /**
     * <pre>
     * A list of topology selector requirements by labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement getMatchLabelExpressions(int index) {
      return matchLabelExpressions_.get(index);
    }
    /**
     * <pre>
     * A list of topology selector requirements by labels.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirementOrBuilder getMatchLabelExpressionsOrBuilder(
        int index) {
      return matchLabelExpressions_.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 {
      for (int i = 0; i < matchLabelExpressions_.size(); i++) {
        output.writeMessage(1, matchLabelExpressions_.get(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 < matchLabelExpressions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, matchLabelExpressions_.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.V1.TopologySelectorTerm)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.TopologySelectorTerm other = (io.kubernetes.client.proto.V1.TopologySelectorTerm) obj;

      if (!getMatchLabelExpressionsList()
          .equals(other.getMatchLabelExpressionsList())) 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 (getMatchLabelExpressionsCount() > 0) {
        hash = (37 * hash) + MATCHLABELEXPRESSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getMatchLabelExpressionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.TopologySelectorTerm parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorTerm 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.V1.TopologySelectorTerm parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorTerm 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.V1.TopologySelectorTerm parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorTerm parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorTerm parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorTerm 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.V1.TopologySelectorTerm parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.TopologySelectorTerm 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.V1.TopologySelectorTerm parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TopologySelectorTerm 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.V1.TopologySelectorTerm 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>
     * A topology selector term represents the result of label queries.
     * A null or empty topology selector term matches no objects.
     * The requirements of them are ANDed.
     * It provides a subset of functionality as NodeSelectorTerm.
     * This is an alpha feature and may change in the future.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.TopologySelectorTerm}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.TopologySelectorTerm)
        io.kubernetes.client.proto.V1.TopologySelectorTermOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySelectorTerm_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySelectorTerm_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.TopologySelectorTerm.class, io.kubernetes.client.proto.V1.TopologySelectorTerm.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.TopologySelectorTerm.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (matchLabelExpressionsBuilder_ == null) {
          matchLabelExpressions_ = java.util.Collections.emptyList();
        } else {
          matchLabelExpressions_ = null;
          matchLabelExpressionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySelectorTerm_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TopologySelectorTerm getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.TopologySelectorTerm.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TopologySelectorTerm build() {
        io.kubernetes.client.proto.V1.TopologySelectorTerm result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TopologySelectorTerm buildPartial() {
        io.kubernetes.client.proto.V1.TopologySelectorTerm result = new io.kubernetes.client.proto.V1.TopologySelectorTerm(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1.TopologySelectorTerm result) {
        if (matchLabelExpressionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            matchLabelExpressions_ = java.util.Collections.unmodifiableList(matchLabelExpressions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.matchLabelExpressions_ = matchLabelExpressions_;
        } else {
          result.matchLabelExpressions_ = matchLabelExpressionsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.TopologySelectorTerm result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.TopologySelectorTerm) {
          return mergeFrom((io.kubernetes.client.proto.V1.TopologySelectorTerm)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.TopologySelectorTerm other) {
        if (other == io.kubernetes.client.proto.V1.TopologySelectorTerm.getDefaultInstance()) return this;
        if (matchLabelExpressionsBuilder_ == null) {
          if (!other.matchLabelExpressions_.isEmpty()) {
            if (matchLabelExpressions_.isEmpty()) {
              matchLabelExpressions_ = other.matchLabelExpressions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMatchLabelExpressionsIsMutable();
              matchLabelExpressions_.addAll(other.matchLabelExpressions_);
            }
            onChanged();
          }
        } else {
          if (!other.matchLabelExpressions_.isEmpty()) {
            if (matchLabelExpressionsBuilder_.isEmpty()) {
              matchLabelExpressionsBuilder_.dispose();
              matchLabelExpressionsBuilder_ = null;
              matchLabelExpressions_ = other.matchLabelExpressions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              matchLabelExpressionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMatchLabelExpressionsFieldBuilder() : null;
            } else {
              matchLabelExpressionsBuilder_.addAllMessages(other.matchLabelExpressions_);
            }
          }
        }
        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.V1.TopologySelectorLabelRequirement m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.parser(),
                        extensionRegistry);
                if (matchLabelExpressionsBuilder_ == null) {
                  ensureMatchLabelExpressionsIsMutable();
                  matchLabelExpressions_.add(m);
                } else {
                  matchLabelExpressionsBuilder_.addMessage(m);
                }
                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.util.List<io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement> matchLabelExpressions_ =
        java.util.Collections.emptyList();
      private void ensureMatchLabelExpressionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          matchLabelExpressions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement>(matchLabelExpressions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirementOrBuilder> matchLabelExpressionsBuilder_;

      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement> getMatchLabelExpressionsList() {
        if (matchLabelExpressionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(matchLabelExpressions_);
        } else {
          return matchLabelExpressionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public int getMatchLabelExpressionsCount() {
        if (matchLabelExpressionsBuilder_ == null) {
          return matchLabelExpressions_.size();
        } else {
          return matchLabelExpressionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement getMatchLabelExpressions(int index) {
        if (matchLabelExpressionsBuilder_ == null) {
          return matchLabelExpressions_.get(index);
        } else {
          return matchLabelExpressionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public Builder setMatchLabelExpressions(
          int index, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement value) {
        if (matchLabelExpressionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchLabelExpressionsIsMutable();
          matchLabelExpressions_.set(index, value);
          onChanged();
        } else {
          matchLabelExpressionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public Builder setMatchLabelExpressions(
          int index, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder builderForValue) {
        if (matchLabelExpressionsBuilder_ == null) {
          ensureMatchLabelExpressionsIsMutable();
          matchLabelExpressions_.set(index, builderForValue.build());
          onChanged();
        } else {
          matchLabelExpressionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public Builder addMatchLabelExpressions(io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement value) {
        if (matchLabelExpressionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchLabelExpressionsIsMutable();
          matchLabelExpressions_.add(value);
          onChanged();
        } else {
          matchLabelExpressionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public Builder addMatchLabelExpressions(
          int index, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement value) {
        if (matchLabelExpressionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchLabelExpressionsIsMutable();
          matchLabelExpressions_.add(index, value);
          onChanged();
        } else {
          matchLabelExpressionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public Builder addMatchLabelExpressions(
          io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder builderForValue) {
        if (matchLabelExpressionsBuilder_ == null) {
          ensureMatchLabelExpressionsIsMutable();
          matchLabelExpressions_.add(builderForValue.build());
          onChanged();
        } else {
          matchLabelExpressionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public Builder addMatchLabelExpressions(
          int index, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder builderForValue) {
        if (matchLabelExpressionsBuilder_ == null) {
          ensureMatchLabelExpressionsIsMutable();
          matchLabelExpressions_.add(index, builderForValue.build());
          onChanged();
        } else {
          matchLabelExpressionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public Builder addAllMatchLabelExpressions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement> values) {
        if (matchLabelExpressionsBuilder_ == null) {
          ensureMatchLabelExpressionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, matchLabelExpressions_);
          onChanged();
        } else {
          matchLabelExpressionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public Builder clearMatchLabelExpressions() {
        if (matchLabelExpressionsBuilder_ == null) {
          matchLabelExpressions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          matchLabelExpressionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public Builder removeMatchLabelExpressions(int index) {
        if (matchLabelExpressionsBuilder_ == null) {
          ensureMatchLabelExpressionsIsMutable();
          matchLabelExpressions_.remove(index);
          onChanged();
        } else {
          matchLabelExpressionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder getMatchLabelExpressionsBuilder(
          int index) {
        return getMatchLabelExpressionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirementOrBuilder getMatchLabelExpressionsOrBuilder(
          int index) {
        if (matchLabelExpressionsBuilder_ == null) {
          return matchLabelExpressions_.get(index);  } else {
          return matchLabelExpressionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.TopologySelectorLabelRequirementOrBuilder> 
           getMatchLabelExpressionsOrBuilderList() {
        if (matchLabelExpressionsBuilder_ != null) {
          return matchLabelExpressionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(matchLabelExpressions_);
        }
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder addMatchLabelExpressionsBuilder() {
        return getMatchLabelExpressionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder addMatchLabelExpressionsBuilder(
          int index) {
        return getMatchLabelExpressionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of topology selector requirements by labels.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.TopologySelectorLabelRequirement matchLabelExpressions = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder> 
           getMatchLabelExpressionsBuilderList() {
        return getMatchLabelExpressionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirementOrBuilder> 
          getMatchLabelExpressionsFieldBuilder() {
        if (matchLabelExpressionsBuilder_ == null) {
          matchLabelExpressionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirement.Builder, io.kubernetes.client.proto.V1.TopologySelectorLabelRequirementOrBuilder>(
                  matchLabelExpressions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          matchLabelExpressions_ = null;
        }
        return matchLabelExpressionsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.TopologySelectorTerm)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.TopologySelectorTerm)
    private static final io.kubernetes.client.proto.V1.TopologySelectorTerm DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.TopologySelectorTerm();
    }

    public static io.kubernetes.client.proto.V1.TopologySelectorTerm getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TopologySelectorTerm>
        PARSER = new com.google.protobuf.AbstractParser<TopologySelectorTerm>() {
      @java.lang.Override
      public TopologySelectorTerm 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<TopologySelectorTerm> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TopologySelectorTerm> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.TopologySelectorTerm getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TopologySpreadConstraintOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.TopologySpreadConstraint)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * MaxSkew describes the degree to which pods may be unevenly distributed.
     * When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
     * between the number of matching pods in the target topology and the global minimum.
     * The global minimum is the minimum number of matching pods in an eligible domain
     * or zero if the number of eligible domains is less than MinDomains.
     * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
     * labelSelector spread as 2/2/1:
     * In this case, the global minimum is 1.
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * |  P P  |  P P  |   P   |
     * +-------+-------+-------+
     * - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
     * scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
     * violate MaxSkew(1).
     * - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
     * When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
     * to topologies that satisfy it.
     * It's a required field. Default value is 1 and 0 is not allowed.
     * </pre>
     *
     * <code>optional int32 maxSkew = 1;</code>
     * @return Whether the maxSkew field is set.
     */
    boolean hasMaxSkew();
    /**
     * <pre>
     * MaxSkew describes the degree to which pods may be unevenly distributed.
     * When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
     * between the number of matching pods in the target topology and the global minimum.
     * The global minimum is the minimum number of matching pods in an eligible domain
     * or zero if the number of eligible domains is less than MinDomains.
     * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
     * labelSelector spread as 2/2/1:
     * In this case, the global minimum is 1.
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * |  P P  |  P P  |   P   |
     * +-------+-------+-------+
     * - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
     * scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
     * violate MaxSkew(1).
     * - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
     * When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
     * to topologies that satisfy it.
     * It's a required field. Default value is 1 and 0 is not allowed.
     * </pre>
     *
     * <code>optional int32 maxSkew = 1;</code>
     * @return The maxSkew.
     */
    int getMaxSkew();

    /**
     * <pre>
     * TopologyKey is the key of node labels. Nodes that have a label with this key
     * and identical values are considered to be in the same topology.
     * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
     * of pods into each bucket.
     * We define a domain as a particular instance of a topology.
     * Also, we define an eligible domain as a domain whose nodes meet the requirements of
     * nodeAffinityPolicy and nodeTaintsPolicy.
     * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
     * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
     * It's a required field.
     * </pre>
     *
     * <code>optional string topologyKey = 2;</code>
     * @return Whether the topologyKey field is set.
     */
    boolean hasTopologyKey();
    /**
     * <pre>
     * TopologyKey is the key of node labels. Nodes that have a label with this key
     * and identical values are considered to be in the same topology.
     * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
     * of pods into each bucket.
     * We define a domain as a particular instance of a topology.
     * Also, we define an eligible domain as a domain whose nodes meet the requirements of
     * nodeAffinityPolicy and nodeTaintsPolicy.
     * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
     * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
     * It's a required field.
     * </pre>
     *
     * <code>optional string topologyKey = 2;</code>
     * @return The topologyKey.
     */
    java.lang.String getTopologyKey();
    /**
     * <pre>
     * TopologyKey is the key of node labels. Nodes that have a label with this key
     * and identical values are considered to be in the same topology.
     * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
     * of pods into each bucket.
     * We define a domain as a particular instance of a topology.
     * Also, we define an eligible domain as a domain whose nodes meet the requirements of
     * nodeAffinityPolicy and nodeTaintsPolicy.
     * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
     * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
     * It's a required field.
     * </pre>
     *
     * <code>optional string topologyKey = 2;</code>
     * @return The bytes for topologyKey.
     */
    com.google.protobuf.ByteString
        getTopologyKeyBytes();

    /**
     * <pre>
     * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
     * the spread constraint.
     * - DoNotSchedule (default) tells the scheduler not to schedule it.
     * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
     * but giving higher precedence to topologies that would help reduce the
     * skew.
     * A constraint is considered "Unsatisfiable" for an incoming pod
     * if and only if every possible node assignment for that pod would violate
     * "MaxSkew" on some topology.
     * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
     * labelSelector spread as 3/1/1:
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * | P P P |   P   |   P   |
     * +-------+-------+-------+
     * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
     * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
     * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
     * won't make it *more* imbalanced.
     * It's a required field.
     * </pre>
     *
     * <code>optional string whenUnsatisfiable = 3;</code>
     * @return Whether the whenUnsatisfiable field is set.
     */
    boolean hasWhenUnsatisfiable();
    /**
     * <pre>
     * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
     * the spread constraint.
     * - DoNotSchedule (default) tells the scheduler not to schedule it.
     * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
     * but giving higher precedence to topologies that would help reduce the
     * skew.
     * A constraint is considered "Unsatisfiable" for an incoming pod
     * if and only if every possible node assignment for that pod would violate
     * "MaxSkew" on some topology.
     * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
     * labelSelector spread as 3/1/1:
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * | P P P |   P   |   P   |
     * +-------+-------+-------+
     * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
     * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
     * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
     * won't make it *more* imbalanced.
     * It's a required field.
     * </pre>
     *
     * <code>optional string whenUnsatisfiable = 3;</code>
     * @return The whenUnsatisfiable.
     */
    java.lang.String getWhenUnsatisfiable();
    /**
     * <pre>
     * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
     * the spread constraint.
     * - DoNotSchedule (default) tells the scheduler not to schedule it.
     * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
     * but giving higher precedence to topologies that would help reduce the
     * skew.
     * A constraint is considered "Unsatisfiable" for an incoming pod
     * if and only if every possible node assignment for that pod would violate
     * "MaxSkew" on some topology.
     * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
     * labelSelector spread as 3/1/1:
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * | P P P |   P   |   P   |
     * +-------+-------+-------+
     * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
     * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
     * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
     * won't make it *more* imbalanced.
     * It's a required field.
     * </pre>
     *
     * <code>optional string whenUnsatisfiable = 3;</code>
     * @return The bytes for whenUnsatisfiable.
     */
    com.google.protobuf.ByteString
        getWhenUnsatisfiableBytes();

    /**
     * <pre>
     * LabelSelector is used to find matching pods.
     * Pods that match this label selector are counted to determine the number of pods
     * in their corresponding topology domain.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
     * @return Whether the labelSelector field is set.
     */
    boolean hasLabelSelector();
    /**
     * <pre>
     * LabelSelector is used to find matching pods.
     * Pods that match this label selector are counted to determine the number of pods
     * in their corresponding topology domain.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
     * @return The labelSelector.
     */
    io.kubernetes.client.proto.Meta.LabelSelector getLabelSelector();
    /**
     * <pre>
     * LabelSelector is used to find matching pods.
     * Pods that match this label selector are counted to determine the number of pods
     * in their corresponding topology domain.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
     */
    io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getLabelSelectorOrBuilder();

    /**
     * <pre>
     * MinDomains indicates a minimum number of eligible domains.
     * When the number of eligible domains with matching topology keys is less than minDomains,
     * Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
     * And when the number of eligible domains with matching topology keys equals or greater than minDomains,
     * this value has no effect on scheduling.
     * As a result, when the number of eligible domains is less than minDomains,
     * scheduler won't schedule more than maxSkew Pods to those domains.
     * If value is nil, the constraint behaves as if MinDomains is equal to 1.
     * Valid values are integers greater than 0.
     * When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
     *
     * For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
     * labelSelector spread as 2/2/2:
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * |  P P  |  P P  |  P P  |
     * +-------+-------+-------+
     * The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
     * In this situation, new pod with the same labelSelector cannot be scheduled,
     * because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
     * it will violate MaxSkew.
     * +optional
     * </pre>
     *
     * <code>optional int32 minDomains = 5;</code>
     * @return Whether the minDomains field is set.
     */
    boolean hasMinDomains();
    /**
     * <pre>
     * MinDomains indicates a minimum number of eligible domains.
     * When the number of eligible domains with matching topology keys is less than minDomains,
     * Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
     * And when the number of eligible domains with matching topology keys equals or greater than minDomains,
     * this value has no effect on scheduling.
     * As a result, when the number of eligible domains is less than minDomains,
     * scheduler won't schedule more than maxSkew Pods to those domains.
     * If value is nil, the constraint behaves as if MinDomains is equal to 1.
     * Valid values are integers greater than 0.
     * When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
     *
     * For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
     * labelSelector spread as 2/2/2:
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * |  P P  |  P P  |  P P  |
     * +-------+-------+-------+
     * The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
     * In this situation, new pod with the same labelSelector cannot be scheduled,
     * because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
     * it will violate MaxSkew.
     * +optional
     * </pre>
     *
     * <code>optional int32 minDomains = 5;</code>
     * @return The minDomains.
     */
    int getMinDomains();

    /**
     * <pre>
     * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
     * when calculating pod topology spread skew. Options are:
     * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
     * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
     *
     * If this value is nil, the behavior is equivalent to the Honor policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeAffinityPolicy = 6;</code>
     * @return Whether the nodeAffinityPolicy field is set.
     */
    boolean hasNodeAffinityPolicy();
    /**
     * <pre>
     * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
     * when calculating pod topology spread skew. Options are:
     * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
     * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
     *
     * If this value is nil, the behavior is equivalent to the Honor policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeAffinityPolicy = 6;</code>
     * @return The nodeAffinityPolicy.
     */
    java.lang.String getNodeAffinityPolicy();
    /**
     * <pre>
     * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
     * when calculating pod topology spread skew. Options are:
     * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
     * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
     *
     * If this value is nil, the behavior is equivalent to the Honor policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeAffinityPolicy = 6;</code>
     * @return The bytes for nodeAffinityPolicy.
     */
    com.google.protobuf.ByteString
        getNodeAffinityPolicyBytes();

    /**
     * <pre>
     * NodeTaintsPolicy indicates how we will treat node taints when calculating
     * pod topology spread skew. Options are:
     * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
     * has a toleration, are included.
     * - Ignore: node taints are ignored. All nodes are included.
     *
     * If this value is nil, the behavior is equivalent to the Ignore policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeTaintsPolicy = 7;</code>
     * @return Whether the nodeTaintsPolicy field is set.
     */
    boolean hasNodeTaintsPolicy();
    /**
     * <pre>
     * NodeTaintsPolicy indicates how we will treat node taints when calculating
     * pod topology spread skew. Options are:
     * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
     * has a toleration, are included.
     * - Ignore: node taints are ignored. All nodes are included.
     *
     * If this value is nil, the behavior is equivalent to the Ignore policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeTaintsPolicy = 7;</code>
     * @return The nodeTaintsPolicy.
     */
    java.lang.String getNodeTaintsPolicy();
    /**
     * <pre>
     * NodeTaintsPolicy indicates how we will treat node taints when calculating
     * pod topology spread skew. Options are:
     * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
     * has a toleration, are included.
     * - Ignore: node taints are ignored. All nodes are included.
     *
     * If this value is nil, the behavior is equivalent to the Ignore policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeTaintsPolicy = 7;</code>
     * @return The bytes for nodeTaintsPolicy.
     */
    com.google.protobuf.ByteString
        getNodeTaintsPolicyBytes();

    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select the pods over which
     * spreading will be calculated. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are ANDed with labelSelector
     * to select the group of existing pods over which spreading will be calculated
     * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
     * MatchLabelKeys cannot be set when LabelSelector isn't set.
     * Keys that don't exist in the incoming pod labels will
     * be ignored. A null or empty list means only match against labelSelector.
     *
     * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 8;</code>
     * @return A list containing the matchLabelKeys.
     */
    java.util.List<java.lang.String>
        getMatchLabelKeysList();
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select the pods over which
     * spreading will be calculated. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are ANDed with labelSelector
     * to select the group of existing pods over which spreading will be calculated
     * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
     * MatchLabelKeys cannot be set when LabelSelector isn't set.
     * Keys that don't exist in the incoming pod labels will
     * be ignored. A null or empty list means only match against labelSelector.
     *
     * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 8;</code>
     * @return The count of matchLabelKeys.
     */
    int getMatchLabelKeysCount();
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select the pods over which
     * spreading will be calculated. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are ANDed with labelSelector
     * to select the group of existing pods over which spreading will be calculated
     * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
     * MatchLabelKeys cannot be set when LabelSelector isn't set.
     * Keys that don't exist in the incoming pod labels will
     * be ignored. A null or empty list means only match against labelSelector.
     *
     * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 8;</code>
     * @param index The index of the element to return.
     * @return The matchLabelKeys at the given index.
     */
    java.lang.String getMatchLabelKeys(int index);
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select the pods over which
     * spreading will be calculated. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are ANDed with labelSelector
     * to select the group of existing pods over which spreading will be calculated
     * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
     * MatchLabelKeys cannot be set when LabelSelector isn't set.
     * Keys that don't exist in the incoming pod labels will
     * be ignored. A null or empty list means only match against labelSelector.
     *
     * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 8;</code>
     * @param index The index of the value to return.
     * @return The bytes of the matchLabelKeys at the given index.
     */
    com.google.protobuf.ByteString
        getMatchLabelKeysBytes(int index);
  }
  /**
   * <pre>
   * TopologySpreadConstraint specifies how to spread matching pods among the given topology.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.TopologySpreadConstraint}
   */
  public static final class TopologySpreadConstraint extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.TopologySpreadConstraint)
      TopologySpreadConstraintOrBuilder {
  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= */ "",
        TopologySpreadConstraint.class.getName());
    }
    // Use TopologySpreadConstraint.newBuilder() to construct.
    private TopologySpreadConstraint(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private TopologySpreadConstraint() {
      topologyKey_ = "";
      whenUnsatisfiable_ = "";
      nodeAffinityPolicy_ = "";
      nodeTaintsPolicy_ = "";
      matchLabelKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySpreadConstraint_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySpreadConstraint_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.TopologySpreadConstraint.class, io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder.class);
    }

    private int bitField0_;
    public static final int MAXSKEW_FIELD_NUMBER = 1;
    private int maxSkew_ = 0;
    /**
     * <pre>
     * MaxSkew describes the degree to which pods may be unevenly distributed.
     * When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
     * between the number of matching pods in the target topology and the global minimum.
     * The global minimum is the minimum number of matching pods in an eligible domain
     * or zero if the number of eligible domains is less than MinDomains.
     * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
     * labelSelector spread as 2/2/1:
     * In this case, the global minimum is 1.
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * |  P P  |  P P  |   P   |
     * +-------+-------+-------+
     * - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
     * scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
     * violate MaxSkew(1).
     * - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
     * When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
     * to topologies that satisfy it.
     * It's a required field. Default value is 1 and 0 is not allowed.
     * </pre>
     *
     * <code>optional int32 maxSkew = 1;</code>
     * @return Whether the maxSkew field is set.
     */
    @java.lang.Override
    public boolean hasMaxSkew() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * MaxSkew describes the degree to which pods may be unevenly distributed.
     * When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
     * between the number of matching pods in the target topology and the global minimum.
     * The global minimum is the minimum number of matching pods in an eligible domain
     * or zero if the number of eligible domains is less than MinDomains.
     * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
     * labelSelector spread as 2/2/1:
     * In this case, the global minimum is 1.
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * |  P P  |  P P  |   P   |
     * +-------+-------+-------+
     * - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
     * scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
     * violate MaxSkew(1).
     * - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
     * When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
     * to topologies that satisfy it.
     * It's a required field. Default value is 1 and 0 is not allowed.
     * </pre>
     *
     * <code>optional int32 maxSkew = 1;</code>
     * @return The maxSkew.
     */
    @java.lang.Override
    public int getMaxSkew() {
      return maxSkew_;
    }

    public static final int TOPOLOGYKEY_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object topologyKey_ = "";
    /**
     * <pre>
     * TopologyKey is the key of node labels. Nodes that have a label with this key
     * and identical values are considered to be in the same topology.
     * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
     * of pods into each bucket.
     * We define a domain as a particular instance of a topology.
     * Also, we define an eligible domain as a domain whose nodes meet the requirements of
     * nodeAffinityPolicy and nodeTaintsPolicy.
     * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
     * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
     * It's a required field.
     * </pre>
     *
     * <code>optional string topologyKey = 2;</code>
     * @return Whether the topologyKey field is set.
     */
    @java.lang.Override
    public boolean hasTopologyKey() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * TopologyKey is the key of node labels. Nodes that have a label with this key
     * and identical values are considered to be in the same topology.
     * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
     * of pods into each bucket.
     * We define a domain as a particular instance of a topology.
     * Also, we define an eligible domain as a domain whose nodes meet the requirements of
     * nodeAffinityPolicy and nodeTaintsPolicy.
     * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
     * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
     * It's a required field.
     * </pre>
     *
     * <code>optional string topologyKey = 2;</code>
     * @return The topologyKey.
     */
    @java.lang.Override
    public java.lang.String getTopologyKey() {
      java.lang.Object ref = topologyKey_;
      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()) {
          topologyKey_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * TopologyKey is the key of node labels. Nodes that have a label with this key
     * and identical values are considered to be in the same topology.
     * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
     * of pods into each bucket.
     * We define a domain as a particular instance of a topology.
     * Also, we define an eligible domain as a domain whose nodes meet the requirements of
     * nodeAffinityPolicy and nodeTaintsPolicy.
     * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
     * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
     * It's a required field.
     * </pre>
     *
     * <code>optional string topologyKey = 2;</code>
     * @return The bytes for topologyKey.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTopologyKeyBytes() {
      java.lang.Object ref = topologyKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        topologyKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WHENUNSATISFIABLE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object whenUnsatisfiable_ = "";
    /**
     * <pre>
     * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
     * the spread constraint.
     * - DoNotSchedule (default) tells the scheduler not to schedule it.
     * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
     * but giving higher precedence to topologies that would help reduce the
     * skew.
     * A constraint is considered "Unsatisfiable" for an incoming pod
     * if and only if every possible node assignment for that pod would violate
     * "MaxSkew" on some topology.
     * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
     * labelSelector spread as 3/1/1:
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * | P P P |   P   |   P   |
     * +-------+-------+-------+
     * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
     * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
     * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
     * won't make it *more* imbalanced.
     * It's a required field.
     * </pre>
     *
     * <code>optional string whenUnsatisfiable = 3;</code>
     * @return Whether the whenUnsatisfiable field is set.
     */
    @java.lang.Override
    public boolean hasWhenUnsatisfiable() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
     * the spread constraint.
     * - DoNotSchedule (default) tells the scheduler not to schedule it.
     * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
     * but giving higher precedence to topologies that would help reduce the
     * skew.
     * A constraint is considered "Unsatisfiable" for an incoming pod
     * if and only if every possible node assignment for that pod would violate
     * "MaxSkew" on some topology.
     * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
     * labelSelector spread as 3/1/1:
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * | P P P |   P   |   P   |
     * +-------+-------+-------+
     * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
     * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
     * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
     * won't make it *more* imbalanced.
     * It's a required field.
     * </pre>
     *
     * <code>optional string whenUnsatisfiable = 3;</code>
     * @return The whenUnsatisfiable.
     */
    @java.lang.Override
    public java.lang.String getWhenUnsatisfiable() {
      java.lang.Object ref = whenUnsatisfiable_;
      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()) {
          whenUnsatisfiable_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
     * the spread constraint.
     * - DoNotSchedule (default) tells the scheduler not to schedule it.
     * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
     * but giving higher precedence to topologies that would help reduce the
     * skew.
     * A constraint is considered "Unsatisfiable" for an incoming pod
     * if and only if every possible node assignment for that pod would violate
     * "MaxSkew" on some topology.
     * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
     * labelSelector spread as 3/1/1:
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * | P P P |   P   |   P   |
     * +-------+-------+-------+
     * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
     * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
     * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
     * won't make it *more* imbalanced.
     * It's a required field.
     * </pre>
     *
     * <code>optional string whenUnsatisfiable = 3;</code>
     * @return The bytes for whenUnsatisfiable.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWhenUnsatisfiableBytes() {
      java.lang.Object ref = whenUnsatisfiable_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        whenUnsatisfiable_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LABELSELECTOR_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.Meta.LabelSelector labelSelector_;
    /**
     * <pre>
     * LabelSelector is used to find matching pods.
     * Pods that match this label selector are counted to determine the number of pods
     * in their corresponding topology domain.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
     * @return Whether the labelSelector field is set.
     */
    @java.lang.Override
    public boolean hasLabelSelector() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * LabelSelector is used to find matching pods.
     * Pods that match this label selector are counted to determine the number of pods
     * in their corresponding topology domain.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
     * @return The labelSelector.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.LabelSelector getLabelSelector() {
      return labelSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
    }
    /**
     * <pre>
     * LabelSelector is used to find matching pods.
     * Pods that match this label selector are counted to determine the number of pods
     * in their corresponding topology domain.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getLabelSelectorOrBuilder() {
      return labelSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
    }

    public static final int MINDOMAINS_FIELD_NUMBER = 5;
    private int minDomains_ = 0;
    /**
     * <pre>
     * MinDomains indicates a minimum number of eligible domains.
     * When the number of eligible domains with matching topology keys is less than minDomains,
     * Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
     * And when the number of eligible domains with matching topology keys equals or greater than minDomains,
     * this value has no effect on scheduling.
     * As a result, when the number of eligible domains is less than minDomains,
     * scheduler won't schedule more than maxSkew Pods to those domains.
     * If value is nil, the constraint behaves as if MinDomains is equal to 1.
     * Valid values are integers greater than 0.
     * When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
     *
     * For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
     * labelSelector spread as 2/2/2:
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * |  P P  |  P P  |  P P  |
     * +-------+-------+-------+
     * The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
     * In this situation, new pod with the same labelSelector cannot be scheduled,
     * because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
     * it will violate MaxSkew.
     * +optional
     * </pre>
     *
     * <code>optional int32 minDomains = 5;</code>
     * @return Whether the minDomains field is set.
     */
    @java.lang.Override
    public boolean hasMinDomains() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * MinDomains indicates a minimum number of eligible domains.
     * When the number of eligible domains with matching topology keys is less than minDomains,
     * Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
     * And when the number of eligible domains with matching topology keys equals or greater than minDomains,
     * this value has no effect on scheduling.
     * As a result, when the number of eligible domains is less than minDomains,
     * scheduler won't schedule more than maxSkew Pods to those domains.
     * If value is nil, the constraint behaves as if MinDomains is equal to 1.
     * Valid values are integers greater than 0.
     * When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
     *
     * For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
     * labelSelector spread as 2/2/2:
     * +-------+-------+-------+
     * | zone1 | zone2 | zone3 |
     * +-------+-------+-------+
     * |  P P  |  P P  |  P P  |
     * +-------+-------+-------+
     * The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
     * In this situation, new pod with the same labelSelector cannot be scheduled,
     * because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
     * it will violate MaxSkew.
     * +optional
     * </pre>
     *
     * <code>optional int32 minDomains = 5;</code>
     * @return The minDomains.
     */
    @java.lang.Override
    public int getMinDomains() {
      return minDomains_;
    }

    public static final int NODEAFFINITYPOLICY_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object nodeAffinityPolicy_ = "";
    /**
     * <pre>
     * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
     * when calculating pod topology spread skew. Options are:
     * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
     * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
     *
     * If this value is nil, the behavior is equivalent to the Honor policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeAffinityPolicy = 6;</code>
     * @return Whether the nodeAffinityPolicy field is set.
     */
    @java.lang.Override
    public boolean hasNodeAffinityPolicy() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
     * when calculating pod topology spread skew. Options are:
     * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
     * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
     *
     * If this value is nil, the behavior is equivalent to the Honor policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeAffinityPolicy = 6;</code>
     * @return The nodeAffinityPolicy.
     */
    @java.lang.Override
    public java.lang.String getNodeAffinityPolicy() {
      java.lang.Object ref = nodeAffinityPolicy_;
      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()) {
          nodeAffinityPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
     * when calculating pod topology spread skew. Options are:
     * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
     * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
     *
     * If this value is nil, the behavior is equivalent to the Honor policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeAffinityPolicy = 6;</code>
     * @return The bytes for nodeAffinityPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNodeAffinityPolicyBytes() {
      java.lang.Object ref = nodeAffinityPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nodeAffinityPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NODETAINTSPOLICY_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object nodeTaintsPolicy_ = "";
    /**
     * <pre>
     * NodeTaintsPolicy indicates how we will treat node taints when calculating
     * pod topology spread skew. Options are:
     * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
     * has a toleration, are included.
     * - Ignore: node taints are ignored. All nodes are included.
     *
     * If this value is nil, the behavior is equivalent to the Ignore policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeTaintsPolicy = 7;</code>
     * @return Whether the nodeTaintsPolicy field is set.
     */
    @java.lang.Override
    public boolean hasNodeTaintsPolicy() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * NodeTaintsPolicy indicates how we will treat node taints when calculating
     * pod topology spread skew. Options are:
     * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
     * has a toleration, are included.
     * - Ignore: node taints are ignored. All nodes are included.
     *
     * If this value is nil, the behavior is equivalent to the Ignore policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeTaintsPolicy = 7;</code>
     * @return The nodeTaintsPolicy.
     */
    @java.lang.Override
    public java.lang.String getNodeTaintsPolicy() {
      java.lang.Object ref = nodeTaintsPolicy_;
      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()) {
          nodeTaintsPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * NodeTaintsPolicy indicates how we will treat node taints when calculating
     * pod topology spread skew. Options are:
     * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
     * has a toleration, are included.
     * - Ignore: node taints are ignored. All nodes are included.
     *
     * If this value is nil, the behavior is equivalent to the Ignore policy.
     * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
     * +optional
     * </pre>
     *
     * <code>optional string nodeTaintsPolicy = 7;</code>
     * @return The bytes for nodeTaintsPolicy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNodeTaintsPolicyBytes() {
      java.lang.Object ref = nodeTaintsPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nodeTaintsPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MATCHLABELKEYS_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList matchLabelKeys_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select the pods over which
     * spreading will be calculated. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are ANDed with labelSelector
     * to select the group of existing pods over which spreading will be calculated
     * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
     * MatchLabelKeys cannot be set when LabelSelector isn't set.
     * Keys that don't exist in the incoming pod labels will
     * be ignored. A null or empty list means only match against labelSelector.
     *
     * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 8;</code>
     * @return A list containing the matchLabelKeys.
     */
    public com.google.protobuf.ProtocolStringList
        getMatchLabelKeysList() {
      return matchLabelKeys_;
    }
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select the pods over which
     * spreading will be calculated. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are ANDed with labelSelector
     * to select the group of existing pods over which spreading will be calculated
     * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
     * MatchLabelKeys cannot be set when LabelSelector isn't set.
     * Keys that don't exist in the incoming pod labels will
     * be ignored. A null or empty list means only match against labelSelector.
     *
     * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 8;</code>
     * @return The count of matchLabelKeys.
     */
    public int getMatchLabelKeysCount() {
      return matchLabelKeys_.size();
    }
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select the pods over which
     * spreading will be calculated. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are ANDed with labelSelector
     * to select the group of existing pods over which spreading will be calculated
     * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
     * MatchLabelKeys cannot be set when LabelSelector isn't set.
     * Keys that don't exist in the incoming pod labels will
     * be ignored. A null or empty list means only match against labelSelector.
     *
     * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 8;</code>
     * @param index The index of the element to return.
     * @return The matchLabelKeys at the given index.
     */
    public java.lang.String getMatchLabelKeys(int index) {
      return matchLabelKeys_.get(index);
    }
    /**
     * <pre>
     * MatchLabelKeys is a set of pod label keys to select the pods over which
     * spreading will be calculated. The keys are used to lookup values from the
     * incoming pod labels, those key-value labels are ANDed with labelSelector
     * to select the group of existing pods over which spreading will be calculated
     * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
     * MatchLabelKeys cannot be set when LabelSelector isn't set.
     * Keys that don't exist in the incoming pod labels will
     * be ignored. A null or empty list means only match against labelSelector.
     *
     * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
     * +listType=atomic
     * +optional
     * </pre>
     *
     * <code>repeated string matchLabelKeys = 8;</code>
     * @param index The index of the value to return.
     * @return The bytes of the matchLabelKeys at the given index.
     */
    public com.google.protobuf.ByteString
        getMatchLabelKeysBytes(int index) {
      return matchLabelKeys_.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.writeInt32(1, maxSkew_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, topologyKey_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, whenUnsatisfiable_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getLabelSelector());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt32(5, minDomains_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, nodeAffinityPolicy_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, nodeTaintsPolicy_);
      }
      for (int i = 0; i < matchLabelKeys_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, matchLabelKeys_.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
          .computeInt32Size(1, maxSkew_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, topologyKey_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, whenUnsatisfiable_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getLabelSelector());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, minDomains_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, nodeAffinityPolicy_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, nodeTaintsPolicy_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < matchLabelKeys_.size(); i++) {
          dataSize += computeStringSizeNoTag(matchLabelKeys_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getMatchLabelKeysList().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.V1.TopologySpreadConstraint)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.TopologySpreadConstraint other = (io.kubernetes.client.proto.V1.TopologySpreadConstraint) obj;

      if (hasMaxSkew() != other.hasMaxSkew()) return false;
      if (hasMaxSkew()) {
        if (getMaxSkew()
            != other.getMaxSkew()) return false;
      }
      if (hasTopologyKey() != other.hasTopologyKey()) return false;
      if (hasTopologyKey()) {
        if (!getTopologyKey()
            .equals(other.getTopologyKey())) return false;
      }
      if (hasWhenUnsatisfiable() != other.hasWhenUnsatisfiable()) return false;
      if (hasWhenUnsatisfiable()) {
        if (!getWhenUnsatisfiable()
            .equals(other.getWhenUnsatisfiable())) return false;
      }
      if (hasLabelSelector() != other.hasLabelSelector()) return false;
      if (hasLabelSelector()) {
        if (!getLabelSelector()
            .equals(other.getLabelSelector())) return false;
      }
      if (hasMinDomains() != other.hasMinDomains()) return false;
      if (hasMinDomains()) {
        if (getMinDomains()
            != other.getMinDomains()) return false;
      }
      if (hasNodeAffinityPolicy() != other.hasNodeAffinityPolicy()) return false;
      if (hasNodeAffinityPolicy()) {
        if (!getNodeAffinityPolicy()
            .equals(other.getNodeAffinityPolicy())) return false;
      }
      if (hasNodeTaintsPolicy() != other.hasNodeTaintsPolicy()) return false;
      if (hasNodeTaintsPolicy()) {
        if (!getNodeTaintsPolicy()
            .equals(other.getNodeTaintsPolicy())) return false;
      }
      if (!getMatchLabelKeysList()
          .equals(other.getMatchLabelKeysList())) 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 (hasMaxSkew()) {
        hash = (37 * hash) + MAXSKEW_FIELD_NUMBER;
        hash = (53 * hash) + getMaxSkew();
      }
      if (hasTopologyKey()) {
        hash = (37 * hash) + TOPOLOGYKEY_FIELD_NUMBER;
        hash = (53 * hash) + getTopologyKey().hashCode();
      }
      if (hasWhenUnsatisfiable()) {
        hash = (37 * hash) + WHENUNSATISFIABLE_FIELD_NUMBER;
        hash = (53 * hash) + getWhenUnsatisfiable().hashCode();
      }
      if (hasLabelSelector()) {
        hash = (37 * hash) + LABELSELECTOR_FIELD_NUMBER;
        hash = (53 * hash) + getLabelSelector().hashCode();
      }
      if (hasMinDomains()) {
        hash = (37 * hash) + MINDOMAINS_FIELD_NUMBER;
        hash = (53 * hash) + getMinDomains();
      }
      if (hasNodeAffinityPolicy()) {
        hash = (37 * hash) + NODEAFFINITYPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getNodeAffinityPolicy().hashCode();
      }
      if (hasNodeTaintsPolicy()) {
        hash = (37 * hash) + NODETAINTSPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getNodeTaintsPolicy().hashCode();
      }
      if (getMatchLabelKeysCount() > 0) {
        hash = (37 * hash) + MATCHLABELKEYS_FIELD_NUMBER;
        hash = (53 * hash) + getMatchLabelKeysList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.TopologySpreadConstraint parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TopologySpreadConstraint 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.V1.TopologySpreadConstraint parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TopologySpreadConstraint 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.V1.TopologySpreadConstraint parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TopologySpreadConstraint parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.TopologySpreadConstraint parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TopologySpreadConstraint 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.V1.TopologySpreadConstraint parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.TopologySpreadConstraint 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.V1.TopologySpreadConstraint parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TopologySpreadConstraint 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.V1.TopologySpreadConstraint 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>
     * TopologySpreadConstraint specifies how to spread matching pods among the given topology.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.TopologySpreadConstraint}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.TopologySpreadConstraint)
        io.kubernetes.client.proto.V1.TopologySpreadConstraintOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySpreadConstraint_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySpreadConstraint_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.TopologySpreadConstraint.class, io.kubernetes.client.proto.V1.TopologySpreadConstraint.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.TopologySpreadConstraint.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLabelSelectorFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        maxSkew_ = 0;
        topologyKey_ = "";
        whenUnsatisfiable_ = "";
        labelSelector_ = null;
        if (labelSelectorBuilder_ != null) {
          labelSelectorBuilder_.dispose();
          labelSelectorBuilder_ = null;
        }
        minDomains_ = 0;
        nodeAffinityPolicy_ = "";
        nodeTaintsPolicy_ = "";
        matchLabelKeys_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TopologySpreadConstraint_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TopologySpreadConstraint getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.TopologySpreadConstraint.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TopologySpreadConstraint build() {
        io.kubernetes.client.proto.V1.TopologySpreadConstraint result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TopologySpreadConstraint buildPartial() {
        io.kubernetes.client.proto.V1.TopologySpreadConstraint result = new io.kubernetes.client.proto.V1.TopologySpreadConstraint(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.TopologySpreadConstraint result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.maxSkew_ = maxSkew_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.topologyKey_ = topologyKey_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.whenUnsatisfiable_ = whenUnsatisfiable_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.labelSelector_ = labelSelectorBuilder_ == null
              ? labelSelector_
              : labelSelectorBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.minDomains_ = minDomains_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.nodeAffinityPolicy_ = nodeAffinityPolicy_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.nodeTaintsPolicy_ = nodeTaintsPolicy_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          matchLabelKeys_.makeImmutable();
          result.matchLabelKeys_ = matchLabelKeys_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.TopologySpreadConstraint) {
          return mergeFrom((io.kubernetes.client.proto.V1.TopologySpreadConstraint)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.TopologySpreadConstraint other) {
        if (other == io.kubernetes.client.proto.V1.TopologySpreadConstraint.getDefaultInstance()) return this;
        if (other.hasMaxSkew()) {
          setMaxSkew(other.getMaxSkew());
        }
        if (other.hasTopologyKey()) {
          topologyKey_ = other.topologyKey_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasWhenUnsatisfiable()) {
          whenUnsatisfiable_ = other.whenUnsatisfiable_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasLabelSelector()) {
          mergeLabelSelector(other.getLabelSelector());
        }
        if (other.hasMinDomains()) {
          setMinDomains(other.getMinDomains());
        }
        if (other.hasNodeAffinityPolicy()) {
          nodeAffinityPolicy_ = other.nodeAffinityPolicy_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasNodeTaintsPolicy()) {
          nodeTaintsPolicy_ = other.nodeTaintsPolicy_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (!other.matchLabelKeys_.isEmpty()) {
          if (matchLabelKeys_.isEmpty()) {
            matchLabelKeys_ = other.matchLabelKeys_;
            bitField0_ |= 0x00000080;
          } else {
            ensureMatchLabelKeysIsMutable();
            matchLabelKeys_.addAll(other.matchLabelKeys_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                maxSkew_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                topologyKey_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                whenUnsatisfiable_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getLabelSelectorFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 40: {
                minDomains_ = input.readInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 50: {
                nodeAffinityPolicy_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                nodeTaintsPolicy_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureMatchLabelKeysIsMutable();
                matchLabelKeys_.add(bs);
                break;
              } // case 66
              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 maxSkew_ ;
      /**
       * <pre>
       * MaxSkew describes the degree to which pods may be unevenly distributed.
       * When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
       * between the number of matching pods in the target topology and the global minimum.
       * The global minimum is the minimum number of matching pods in an eligible domain
       * or zero if the number of eligible domains is less than MinDomains.
       * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       * labelSelector spread as 2/2/1:
       * In this case, the global minimum is 1.
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * |  P P  |  P P  |   P   |
       * +-------+-------+-------+
       * - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
       * scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
       * violate MaxSkew(1).
       * - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
       * When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
       * to topologies that satisfy it.
       * It's a required field. Default value is 1 and 0 is not allowed.
       * </pre>
       *
       * <code>optional int32 maxSkew = 1;</code>
       * @return Whether the maxSkew field is set.
       */
      @java.lang.Override
      public boolean hasMaxSkew() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * MaxSkew describes the degree to which pods may be unevenly distributed.
       * When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
       * between the number of matching pods in the target topology and the global minimum.
       * The global minimum is the minimum number of matching pods in an eligible domain
       * or zero if the number of eligible domains is less than MinDomains.
       * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       * labelSelector spread as 2/2/1:
       * In this case, the global minimum is 1.
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * |  P P  |  P P  |   P   |
       * +-------+-------+-------+
       * - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
       * scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
       * violate MaxSkew(1).
       * - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
       * When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
       * to topologies that satisfy it.
       * It's a required field. Default value is 1 and 0 is not allowed.
       * </pre>
       *
       * <code>optional int32 maxSkew = 1;</code>
       * @return The maxSkew.
       */
      @java.lang.Override
      public int getMaxSkew() {
        return maxSkew_;
      }
      /**
       * <pre>
       * MaxSkew describes the degree to which pods may be unevenly distributed.
       * When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
       * between the number of matching pods in the target topology and the global minimum.
       * The global minimum is the minimum number of matching pods in an eligible domain
       * or zero if the number of eligible domains is less than MinDomains.
       * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       * labelSelector spread as 2/2/1:
       * In this case, the global minimum is 1.
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * |  P P  |  P P  |   P   |
       * +-------+-------+-------+
       * - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
       * scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
       * violate MaxSkew(1).
       * - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
       * When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
       * to topologies that satisfy it.
       * It's a required field. Default value is 1 and 0 is not allowed.
       * </pre>
       *
       * <code>optional int32 maxSkew = 1;</code>
       * @param value The maxSkew to set.
       * @return This builder for chaining.
       */
      public Builder setMaxSkew(int value) {

        maxSkew_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MaxSkew describes the degree to which pods may be unevenly distributed.
       * When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
       * between the number of matching pods in the target topology and the global minimum.
       * The global minimum is the minimum number of matching pods in an eligible domain
       * or zero if the number of eligible domains is less than MinDomains.
       * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       * labelSelector spread as 2/2/1:
       * In this case, the global minimum is 1.
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * |  P P  |  P P  |   P   |
       * +-------+-------+-------+
       * - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
       * scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
       * violate MaxSkew(1).
       * - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
       * When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
       * to topologies that satisfy it.
       * It's a required field. Default value is 1 and 0 is not allowed.
       * </pre>
       *
       * <code>optional int32 maxSkew = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxSkew() {
        bitField0_ = (bitField0_ & ~0x00000001);
        maxSkew_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object topologyKey_ = "";
      /**
       * <pre>
       * TopologyKey is the key of node labels. Nodes that have a label with this key
       * and identical values are considered to be in the same topology.
       * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
       * of pods into each bucket.
       * We define a domain as a particular instance of a topology.
       * Also, we define an eligible domain as a domain whose nodes meet the requirements of
       * nodeAffinityPolicy and nodeTaintsPolicy.
       * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
       * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
       * It's a required field.
       * </pre>
       *
       * <code>optional string topologyKey = 2;</code>
       * @return Whether the topologyKey field is set.
       */
      public boolean hasTopologyKey() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * TopologyKey is the key of node labels. Nodes that have a label with this key
       * and identical values are considered to be in the same topology.
       * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
       * of pods into each bucket.
       * We define a domain as a particular instance of a topology.
       * Also, we define an eligible domain as a domain whose nodes meet the requirements of
       * nodeAffinityPolicy and nodeTaintsPolicy.
       * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
       * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
       * It's a required field.
       * </pre>
       *
       * <code>optional string topologyKey = 2;</code>
       * @return The topologyKey.
       */
      public java.lang.String getTopologyKey() {
        java.lang.Object ref = topologyKey_;
        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()) {
            topologyKey_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * TopologyKey is the key of node labels. Nodes that have a label with this key
       * and identical values are considered to be in the same topology.
       * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
       * of pods into each bucket.
       * We define a domain as a particular instance of a topology.
       * Also, we define an eligible domain as a domain whose nodes meet the requirements of
       * nodeAffinityPolicy and nodeTaintsPolicy.
       * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
       * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
       * It's a required field.
       * </pre>
       *
       * <code>optional string topologyKey = 2;</code>
       * @return The bytes for topologyKey.
       */
      public com.google.protobuf.ByteString
          getTopologyKeyBytes() {
        java.lang.Object ref = topologyKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          topologyKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * TopologyKey is the key of node labels. Nodes that have a label with this key
       * and identical values are considered to be in the same topology.
       * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
       * of pods into each bucket.
       * We define a domain as a particular instance of a topology.
       * Also, we define an eligible domain as a domain whose nodes meet the requirements of
       * nodeAffinityPolicy and nodeTaintsPolicy.
       * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
       * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
       * It's a required field.
       * </pre>
       *
       * <code>optional string topologyKey = 2;</code>
       * @param value The topologyKey to set.
       * @return This builder for chaining.
       */
      public Builder setTopologyKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        topologyKey_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TopologyKey is the key of node labels. Nodes that have a label with this key
       * and identical values are considered to be in the same topology.
       * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
       * of pods into each bucket.
       * We define a domain as a particular instance of a topology.
       * Also, we define an eligible domain as a domain whose nodes meet the requirements of
       * nodeAffinityPolicy and nodeTaintsPolicy.
       * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
       * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
       * It's a required field.
       * </pre>
       *
       * <code>optional string topologyKey = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTopologyKey() {
        topologyKey_ = getDefaultInstance().getTopologyKey();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * TopologyKey is the key of node labels. Nodes that have a label with this key
       * and identical values are considered to be in the same topology.
       * We consider each &lt;key, value&gt; as a "bucket", and try to put balanced number
       * of pods into each bucket.
       * We define a domain as a particular instance of a topology.
       * Also, we define an eligible domain as a domain whose nodes meet the requirements of
       * nodeAffinityPolicy and nodeTaintsPolicy.
       * e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
       * And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
       * It's a required field.
       * </pre>
       *
       * <code>optional string topologyKey = 2;</code>
       * @param value The bytes for topologyKey to set.
       * @return This builder for chaining.
       */
      public Builder setTopologyKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        topologyKey_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object whenUnsatisfiable_ = "";
      /**
       * <pre>
       * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
       * the spread constraint.
       * - DoNotSchedule (default) tells the scheduler not to schedule it.
       * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
       * but giving higher precedence to topologies that would help reduce the
       * skew.
       * A constraint is considered "Unsatisfiable" for an incoming pod
       * if and only if every possible node assignment for that pod would violate
       * "MaxSkew" on some topology.
       * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       * labelSelector spread as 3/1/1:
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * | P P P |   P   |   P   |
       * +-------+-------+-------+
       * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
       * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
       * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
       * won't make it *more* imbalanced.
       * It's a required field.
       * </pre>
       *
       * <code>optional string whenUnsatisfiable = 3;</code>
       * @return Whether the whenUnsatisfiable field is set.
       */
      public boolean hasWhenUnsatisfiable() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
       * the spread constraint.
       * - DoNotSchedule (default) tells the scheduler not to schedule it.
       * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
       * but giving higher precedence to topologies that would help reduce the
       * skew.
       * A constraint is considered "Unsatisfiable" for an incoming pod
       * if and only if every possible node assignment for that pod would violate
       * "MaxSkew" on some topology.
       * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       * labelSelector spread as 3/1/1:
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * | P P P |   P   |   P   |
       * +-------+-------+-------+
       * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
       * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
       * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
       * won't make it *more* imbalanced.
       * It's a required field.
       * </pre>
       *
       * <code>optional string whenUnsatisfiable = 3;</code>
       * @return The whenUnsatisfiable.
       */
      public java.lang.String getWhenUnsatisfiable() {
        java.lang.Object ref = whenUnsatisfiable_;
        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()) {
            whenUnsatisfiable_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
       * the spread constraint.
       * - DoNotSchedule (default) tells the scheduler not to schedule it.
       * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
       * but giving higher precedence to topologies that would help reduce the
       * skew.
       * A constraint is considered "Unsatisfiable" for an incoming pod
       * if and only if every possible node assignment for that pod would violate
       * "MaxSkew" on some topology.
       * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       * labelSelector spread as 3/1/1:
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * | P P P |   P   |   P   |
       * +-------+-------+-------+
       * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
       * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
       * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
       * won't make it *more* imbalanced.
       * It's a required field.
       * </pre>
       *
       * <code>optional string whenUnsatisfiable = 3;</code>
       * @return The bytes for whenUnsatisfiable.
       */
      public com.google.protobuf.ByteString
          getWhenUnsatisfiableBytes() {
        java.lang.Object ref = whenUnsatisfiable_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          whenUnsatisfiable_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
       * the spread constraint.
       * - DoNotSchedule (default) tells the scheduler not to schedule it.
       * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
       * but giving higher precedence to topologies that would help reduce the
       * skew.
       * A constraint is considered "Unsatisfiable" for an incoming pod
       * if and only if every possible node assignment for that pod would violate
       * "MaxSkew" on some topology.
       * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       * labelSelector spread as 3/1/1:
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * | P P P |   P   |   P   |
       * +-------+-------+-------+
       * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
       * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
       * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
       * won't make it *more* imbalanced.
       * It's a required field.
       * </pre>
       *
       * <code>optional string whenUnsatisfiable = 3;</code>
       * @param value The whenUnsatisfiable to set.
       * @return This builder for chaining.
       */
      public Builder setWhenUnsatisfiable(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        whenUnsatisfiable_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
       * the spread constraint.
       * - DoNotSchedule (default) tells the scheduler not to schedule it.
       * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
       * but giving higher precedence to topologies that would help reduce the
       * skew.
       * A constraint is considered "Unsatisfiable" for an incoming pod
       * if and only if every possible node assignment for that pod would violate
       * "MaxSkew" on some topology.
       * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       * labelSelector spread as 3/1/1:
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * | P P P |   P   |   P   |
       * +-------+-------+-------+
       * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
       * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
       * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
       * won't make it *more* imbalanced.
       * It's a required field.
       * </pre>
       *
       * <code>optional string whenUnsatisfiable = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearWhenUnsatisfiable() {
        whenUnsatisfiable_ = getDefaultInstance().getWhenUnsatisfiable();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
       * the spread constraint.
       * - DoNotSchedule (default) tells the scheduler not to schedule it.
       * - ScheduleAnyway tells the scheduler to schedule the pod in any location,
       * but giving higher precedence to topologies that would help reduce the
       * skew.
       * A constraint is considered "Unsatisfiable" for an incoming pod
       * if and only if every possible node assignment for that pod would violate
       * "MaxSkew" on some topology.
       * For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       * labelSelector spread as 3/1/1:
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * | P P P |   P   |   P   |
       * +-------+-------+-------+
       * If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
       * to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
       * MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
       * won't make it *more* imbalanced.
       * It's a required field.
       * </pre>
       *
       * <code>optional string whenUnsatisfiable = 3;</code>
       * @param value The bytes for whenUnsatisfiable to set.
       * @return This builder for chaining.
       */
      public Builder setWhenUnsatisfiableBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        whenUnsatisfiable_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.LabelSelector labelSelector_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder> labelSelectorBuilder_;
      /**
       * <pre>
       * LabelSelector is used to find matching pods.
       * Pods that match this label selector are counted to determine the number of pods
       * in their corresponding topology domain.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
       * @return Whether the labelSelector field is set.
       */
      public boolean hasLabelSelector() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * LabelSelector is used to find matching pods.
       * Pods that match this label selector are counted to determine the number of pods
       * in their corresponding topology domain.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
       * @return The labelSelector.
       */
      public io.kubernetes.client.proto.Meta.LabelSelector getLabelSelector() {
        if (labelSelectorBuilder_ == null) {
          return labelSelector_ == null ? io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
        } else {
          return labelSelectorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * LabelSelector is used to find matching pods.
       * Pods that match this label selector are counted to determine the number of pods
       * in their corresponding topology domain.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
       */
      public Builder setLabelSelector(io.kubernetes.client.proto.Meta.LabelSelector value) {
        if (labelSelectorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          labelSelector_ = value;
        } else {
          labelSelectorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LabelSelector is used to find matching pods.
       * Pods that match this label selector are counted to determine the number of pods
       * in their corresponding topology domain.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
       */
      public Builder setLabelSelector(
          io.kubernetes.client.proto.Meta.LabelSelector.Builder builderForValue) {
        if (labelSelectorBuilder_ == null) {
          labelSelector_ = builderForValue.build();
        } else {
          labelSelectorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LabelSelector is used to find matching pods.
       * Pods that match this label selector are counted to determine the number of pods
       * in their corresponding topology domain.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
       */
      public Builder mergeLabelSelector(io.kubernetes.client.proto.Meta.LabelSelector value) {
        if (labelSelectorBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            labelSelector_ != null &&
            labelSelector_ != io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance()) {
            getLabelSelectorBuilder().mergeFrom(value);
          } else {
            labelSelector_ = value;
          }
        } else {
          labelSelectorBuilder_.mergeFrom(value);
        }
        if (labelSelector_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * LabelSelector is used to find matching pods.
       * Pods that match this label selector are counted to determine the number of pods
       * in their corresponding topology domain.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
       */
      public Builder clearLabelSelector() {
        bitField0_ = (bitField0_ & ~0x00000008);
        labelSelector_ = null;
        if (labelSelectorBuilder_ != null) {
          labelSelectorBuilder_.dispose();
          labelSelectorBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * LabelSelector is used to find matching pods.
       * Pods that match this label selector are counted to determine the number of pods
       * in their corresponding topology domain.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.LabelSelector.Builder getLabelSelectorBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getLabelSelectorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * LabelSelector is used to find matching pods.
       * Pods that match this label selector are counted to determine the number of pods
       * in their corresponding topology domain.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder getLabelSelectorOrBuilder() {
        if (labelSelectorBuilder_ != null) {
          return labelSelectorBuilder_.getMessageOrBuilder();
        } else {
          return labelSelector_ == null ?
              io.kubernetes.client.proto.Meta.LabelSelector.getDefaultInstance() : labelSelector_;
        }
      }
      /**
       * <pre>
       * LabelSelector is used to find matching pods.
       * Pods that match this label selector are counted to determine the number of pods
       * in their corresponding topology domain.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder> 
          getLabelSelectorFieldBuilder() {
        if (labelSelectorBuilder_ == null) {
          labelSelectorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.LabelSelector, io.kubernetes.client.proto.Meta.LabelSelector.Builder, io.kubernetes.client.proto.Meta.LabelSelectorOrBuilder>(
                  getLabelSelector(),
                  getParentForChildren(),
                  isClean());
          labelSelector_ = null;
        }
        return labelSelectorBuilder_;
      }

      private int minDomains_ ;
      /**
       * <pre>
       * MinDomains indicates a minimum number of eligible domains.
       * When the number of eligible domains with matching topology keys is less than minDomains,
       * Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
       * And when the number of eligible domains with matching topology keys equals or greater than minDomains,
       * this value has no effect on scheduling.
       * As a result, when the number of eligible domains is less than minDomains,
       * scheduler won't schedule more than maxSkew Pods to those domains.
       * If value is nil, the constraint behaves as if MinDomains is equal to 1.
       * Valid values are integers greater than 0.
       * When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
       *
       * For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
       * labelSelector spread as 2/2/2:
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * |  P P  |  P P  |  P P  |
       * +-------+-------+-------+
       * The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
       * In this situation, new pod with the same labelSelector cannot be scheduled,
       * because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
       * it will violate MaxSkew.
       * +optional
       * </pre>
       *
       * <code>optional int32 minDomains = 5;</code>
       * @return Whether the minDomains field is set.
       */
      @java.lang.Override
      public boolean hasMinDomains() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * MinDomains indicates a minimum number of eligible domains.
       * When the number of eligible domains with matching topology keys is less than minDomains,
       * Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
       * And when the number of eligible domains with matching topology keys equals or greater than minDomains,
       * this value has no effect on scheduling.
       * As a result, when the number of eligible domains is less than minDomains,
       * scheduler won't schedule more than maxSkew Pods to those domains.
       * If value is nil, the constraint behaves as if MinDomains is equal to 1.
       * Valid values are integers greater than 0.
       * When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
       *
       * For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
       * labelSelector spread as 2/2/2:
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * |  P P  |  P P  |  P P  |
       * +-------+-------+-------+
       * The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
       * In this situation, new pod with the same labelSelector cannot be scheduled,
       * because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
       * it will violate MaxSkew.
       * +optional
       * </pre>
       *
       * <code>optional int32 minDomains = 5;</code>
       * @return The minDomains.
       */
      @java.lang.Override
      public int getMinDomains() {
        return minDomains_;
      }
      /**
       * <pre>
       * MinDomains indicates a minimum number of eligible domains.
       * When the number of eligible domains with matching topology keys is less than minDomains,
       * Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
       * And when the number of eligible domains with matching topology keys equals or greater than minDomains,
       * this value has no effect on scheduling.
       * As a result, when the number of eligible domains is less than minDomains,
       * scheduler won't schedule more than maxSkew Pods to those domains.
       * If value is nil, the constraint behaves as if MinDomains is equal to 1.
       * Valid values are integers greater than 0.
       * When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
       *
       * For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
       * labelSelector spread as 2/2/2:
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * |  P P  |  P P  |  P P  |
       * +-------+-------+-------+
       * The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
       * In this situation, new pod with the same labelSelector cannot be scheduled,
       * because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
       * it will violate MaxSkew.
       * +optional
       * </pre>
       *
       * <code>optional int32 minDomains = 5;</code>
       * @param value The minDomains to set.
       * @return This builder for chaining.
       */
      public Builder setMinDomains(int value) {

        minDomains_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MinDomains indicates a minimum number of eligible domains.
       * When the number of eligible domains with matching topology keys is less than minDomains,
       * Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
       * And when the number of eligible domains with matching topology keys equals or greater than minDomains,
       * this value has no effect on scheduling.
       * As a result, when the number of eligible domains is less than minDomains,
       * scheduler won't schedule more than maxSkew Pods to those domains.
       * If value is nil, the constraint behaves as if MinDomains is equal to 1.
       * Valid values are integers greater than 0.
       * When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
       *
       * For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
       * labelSelector spread as 2/2/2:
       * +-------+-------+-------+
       * | zone1 | zone2 | zone3 |
       * +-------+-------+-------+
       * |  P P  |  P P  |  P P  |
       * +-------+-------+-------+
       * The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
       * In this situation, new pod with the same labelSelector cannot be scheduled,
       * because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
       * it will violate MaxSkew.
       * +optional
       * </pre>
       *
       * <code>optional int32 minDomains = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearMinDomains() {
        bitField0_ = (bitField0_ & ~0x00000010);
        minDomains_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object nodeAffinityPolicy_ = "";
      /**
       * <pre>
       * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
       * when calculating pod topology spread skew. Options are:
       * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
       * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
       *
       * If this value is nil, the behavior is equivalent to the Honor policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeAffinityPolicy = 6;</code>
       * @return Whether the nodeAffinityPolicy field is set.
       */
      public boolean hasNodeAffinityPolicy() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
       * when calculating pod topology spread skew. Options are:
       * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
       * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
       *
       * If this value is nil, the behavior is equivalent to the Honor policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeAffinityPolicy = 6;</code>
       * @return The nodeAffinityPolicy.
       */
      public java.lang.String getNodeAffinityPolicy() {
        java.lang.Object ref = nodeAffinityPolicy_;
        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()) {
            nodeAffinityPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
       * when calculating pod topology spread skew. Options are:
       * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
       * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
       *
       * If this value is nil, the behavior is equivalent to the Honor policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeAffinityPolicy = 6;</code>
       * @return The bytes for nodeAffinityPolicy.
       */
      public com.google.protobuf.ByteString
          getNodeAffinityPolicyBytes() {
        java.lang.Object ref = nodeAffinityPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nodeAffinityPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
       * when calculating pod topology spread skew. Options are:
       * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
       * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
       *
       * If this value is nil, the behavior is equivalent to the Honor policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeAffinityPolicy = 6;</code>
       * @param value The nodeAffinityPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setNodeAffinityPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        nodeAffinityPolicy_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
       * when calculating pod topology spread skew. Options are:
       * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
       * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
       *
       * If this value is nil, the behavior is equivalent to the Honor policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeAffinityPolicy = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearNodeAffinityPolicy() {
        nodeAffinityPolicy_ = getDefaultInstance().getNodeAffinityPolicy();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
       * when calculating pod topology spread skew. Options are:
       * - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
       * - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
       *
       * If this value is nil, the behavior is equivalent to the Honor policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeAffinityPolicy = 6;</code>
       * @param value The bytes for nodeAffinityPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setNodeAffinityPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        nodeAffinityPolicy_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object nodeTaintsPolicy_ = "";
      /**
       * <pre>
       * NodeTaintsPolicy indicates how we will treat node taints when calculating
       * pod topology spread skew. Options are:
       * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
       * has a toleration, are included.
       * - Ignore: node taints are ignored. All nodes are included.
       *
       * If this value is nil, the behavior is equivalent to the Ignore policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeTaintsPolicy = 7;</code>
       * @return Whether the nodeTaintsPolicy field is set.
       */
      public boolean hasNodeTaintsPolicy() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * NodeTaintsPolicy indicates how we will treat node taints when calculating
       * pod topology spread skew. Options are:
       * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
       * has a toleration, are included.
       * - Ignore: node taints are ignored. All nodes are included.
       *
       * If this value is nil, the behavior is equivalent to the Ignore policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeTaintsPolicy = 7;</code>
       * @return The nodeTaintsPolicy.
       */
      public java.lang.String getNodeTaintsPolicy() {
        java.lang.Object ref = nodeTaintsPolicy_;
        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()) {
            nodeTaintsPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * NodeTaintsPolicy indicates how we will treat node taints when calculating
       * pod topology spread skew. Options are:
       * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
       * has a toleration, are included.
       * - Ignore: node taints are ignored. All nodes are included.
       *
       * If this value is nil, the behavior is equivalent to the Ignore policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeTaintsPolicy = 7;</code>
       * @return The bytes for nodeTaintsPolicy.
       */
      public com.google.protobuf.ByteString
          getNodeTaintsPolicyBytes() {
        java.lang.Object ref = nodeTaintsPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nodeTaintsPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * NodeTaintsPolicy indicates how we will treat node taints when calculating
       * pod topology spread skew. Options are:
       * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
       * has a toleration, are included.
       * - Ignore: node taints are ignored. All nodes are included.
       *
       * If this value is nil, the behavior is equivalent to the Ignore policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeTaintsPolicy = 7;</code>
       * @param value The nodeTaintsPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setNodeTaintsPolicy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        nodeTaintsPolicy_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NodeTaintsPolicy indicates how we will treat node taints when calculating
       * pod topology spread skew. Options are:
       * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
       * has a toleration, are included.
       * - Ignore: node taints are ignored. All nodes are included.
       *
       * If this value is nil, the behavior is equivalent to the Ignore policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeTaintsPolicy = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearNodeTaintsPolicy() {
        nodeTaintsPolicy_ = getDefaultInstance().getNodeTaintsPolicy();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NodeTaintsPolicy indicates how we will treat node taints when calculating
       * pod topology spread skew. Options are:
       * - Honor: nodes without taints, along with tainted nodes for which the incoming pod
       * has a toleration, are included.
       * - Ignore: node taints are ignored. All nodes are included.
       *
       * If this value is nil, the behavior is equivalent to the Ignore policy.
       * This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
       * +optional
       * </pre>
       *
       * <code>optional string nodeTaintsPolicy = 7;</code>
       * @param value The bytes for nodeTaintsPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setNodeTaintsPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        nodeTaintsPolicy_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList matchLabelKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureMatchLabelKeysIsMutable() {
        if (!matchLabelKeys_.isModifiable()) {
          matchLabelKeys_ = new com.google.protobuf.LazyStringArrayList(matchLabelKeys_);
        }
        bitField0_ |= 0x00000080;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select the pods over which
       * spreading will be calculated. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are ANDed with labelSelector
       * to select the group of existing pods over which spreading will be calculated
       * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
       * MatchLabelKeys cannot be set when LabelSelector isn't set.
       * Keys that don't exist in the incoming pod labels will
       * be ignored. A null or empty list means only match against labelSelector.
       *
       * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 8;</code>
       * @return A list containing the matchLabelKeys.
       */
      public com.google.protobuf.ProtocolStringList
          getMatchLabelKeysList() {
        matchLabelKeys_.makeImmutable();
        return matchLabelKeys_;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select the pods over which
       * spreading will be calculated. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are ANDed with labelSelector
       * to select the group of existing pods over which spreading will be calculated
       * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
       * MatchLabelKeys cannot be set when LabelSelector isn't set.
       * Keys that don't exist in the incoming pod labels will
       * be ignored. A null or empty list means only match against labelSelector.
       *
       * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 8;</code>
       * @return The count of matchLabelKeys.
       */
      public int getMatchLabelKeysCount() {
        return matchLabelKeys_.size();
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select the pods over which
       * spreading will be calculated. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are ANDed with labelSelector
       * to select the group of existing pods over which spreading will be calculated
       * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
       * MatchLabelKeys cannot be set when LabelSelector isn't set.
       * Keys that don't exist in the incoming pod labels will
       * be ignored. A null or empty list means only match against labelSelector.
       *
       * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 8;</code>
       * @param index The index of the element to return.
       * @return The matchLabelKeys at the given index.
       */
      public java.lang.String getMatchLabelKeys(int index) {
        return matchLabelKeys_.get(index);
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select the pods over which
       * spreading will be calculated. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are ANDed with labelSelector
       * to select the group of existing pods over which spreading will be calculated
       * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
       * MatchLabelKeys cannot be set when LabelSelector isn't set.
       * Keys that don't exist in the incoming pod labels will
       * be ignored. A null or empty list means only match against labelSelector.
       *
       * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 8;</code>
       * @param index The index of the value to return.
       * @return The bytes of the matchLabelKeys at the given index.
       */
      public com.google.protobuf.ByteString
          getMatchLabelKeysBytes(int index) {
        return matchLabelKeys_.getByteString(index);
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select the pods over which
       * spreading will be calculated. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are ANDed with labelSelector
       * to select the group of existing pods over which spreading will be calculated
       * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
       * MatchLabelKeys cannot be set when LabelSelector isn't set.
       * Keys that don't exist in the incoming pod labels will
       * be ignored. A null or empty list means only match against labelSelector.
       *
       * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 8;</code>
       * @param index The index to set the value at.
       * @param value The matchLabelKeys to set.
       * @return This builder for chaining.
       */
      public Builder setMatchLabelKeys(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMatchLabelKeysIsMutable();
        matchLabelKeys_.set(index, value);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select the pods over which
       * spreading will be calculated. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are ANDed with labelSelector
       * to select the group of existing pods over which spreading will be calculated
       * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
       * MatchLabelKeys cannot be set when LabelSelector isn't set.
       * Keys that don't exist in the incoming pod labels will
       * be ignored. A null or empty list means only match against labelSelector.
       *
       * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 8;</code>
       * @param value The matchLabelKeys to add.
       * @return This builder for chaining.
       */
      public Builder addMatchLabelKeys(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMatchLabelKeysIsMutable();
        matchLabelKeys_.add(value);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select the pods over which
       * spreading will be calculated. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are ANDed with labelSelector
       * to select the group of existing pods over which spreading will be calculated
       * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
       * MatchLabelKeys cannot be set when LabelSelector isn't set.
       * Keys that don't exist in the incoming pod labels will
       * be ignored. A null or empty list means only match against labelSelector.
       *
       * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 8;</code>
       * @param values The matchLabelKeys to add.
       * @return This builder for chaining.
       */
      public Builder addAllMatchLabelKeys(
          java.lang.Iterable<java.lang.String> values) {
        ensureMatchLabelKeysIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, matchLabelKeys_);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select the pods over which
       * spreading will be calculated. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are ANDed with labelSelector
       * to select the group of existing pods over which spreading will be calculated
       * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
       * MatchLabelKeys cannot be set when LabelSelector isn't set.
       * Keys that don't exist in the incoming pod labels will
       * be ignored. A null or empty list means only match against labelSelector.
       *
       * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearMatchLabelKeys() {
        matchLabelKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MatchLabelKeys is a set of pod label keys to select the pods over which
       * spreading will be calculated. The keys are used to lookup values from the
       * incoming pod labels, those key-value labels are ANDed with labelSelector
       * to select the group of existing pods over which spreading will be calculated
       * for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
       * MatchLabelKeys cannot be set when LabelSelector isn't set.
       * Keys that don't exist in the incoming pod labels will
       * be ignored. A null or empty list means only match against labelSelector.
       *
       * This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
       * +listType=atomic
       * +optional
       * </pre>
       *
       * <code>repeated string matchLabelKeys = 8;</code>
       * @param value The bytes of the matchLabelKeys to add.
       * @return This builder for chaining.
       */
      public Builder addMatchLabelKeysBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureMatchLabelKeysIsMutable();
        matchLabelKeys_.add(value);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.TopologySpreadConstraint)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.TopologySpreadConstraint)
    private static final io.kubernetes.client.proto.V1.TopologySpreadConstraint DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.TopologySpreadConstraint();
    }

    public static io.kubernetes.client.proto.V1.TopologySpreadConstraint getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TopologySpreadConstraint>
        PARSER = new com.google.protobuf.AbstractParser<TopologySpreadConstraint>() {
      @java.lang.Override
      public TopologySpreadConstraint 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<TopologySpreadConstraint> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TopologySpreadConstraint> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.TopologySpreadConstraint getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TypedLocalObjectReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.TypedLocalObjectReference)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return Whether the apiGroup field is set.
     */
    boolean hasApiGroup();
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return The apiGroup.
     */
    java.lang.String getApiGroup();
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return The bytes for apiGroup.
     */
    com.google.protobuf.ByteString
        getApiGroupBytes();

    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     * @return Whether the kind field is set.
     */
    boolean hasKind();
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     * @return The kind.
     */
    java.lang.String getKind();
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     * @return The bytes for kind.
     */
    com.google.protobuf.ByteString
        getKindBytes();

    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   * TypedLocalObjectReference contains enough information to let you locate the
   * typed referenced object inside the same namespace.
   * +structType=atomic
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.TypedLocalObjectReference}
   */
  public static final class TypedLocalObjectReference extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.TypedLocalObjectReference)
      TypedLocalObjectReferenceOrBuilder {
  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= */ "",
        TypedLocalObjectReference.class.getName());
    }
    // Use TypedLocalObjectReference.newBuilder() to construct.
    private TypedLocalObjectReference(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private TypedLocalObjectReference() {
      apiGroup_ = "";
      kind_ = "";
      name_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TypedLocalObjectReference_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TypedLocalObjectReference_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.TypedLocalObjectReference.class, io.kubernetes.client.proto.V1.TypedLocalObjectReference.Builder.class);
    }

    private int bitField0_;
    public static final int APIGROUP_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object apiGroup_ = "";
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return Whether the apiGroup field is set.
     */
    @java.lang.Override
    public boolean hasApiGroup() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return The apiGroup.
     */
    @java.lang.Override
    public java.lang.String getApiGroup() {
      java.lang.Object ref = apiGroup_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          apiGroup_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return The bytes for apiGroup.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getApiGroupBytes() {
      java.lang.Object ref = apiGroup_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        apiGroup_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KIND_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object kind_ = "";
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     * @return Whether the kind field is set.
     */
    @java.lang.Override
    public boolean hasKind() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</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 type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</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 NAME_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</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 resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</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;
      }
    }

    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, apiGroup_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, kind_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, name_);
      }
      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, apiGroup_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, kind_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, name_);
      }
      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.V1.TypedLocalObjectReference)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.TypedLocalObjectReference other = (io.kubernetes.client.proto.V1.TypedLocalObjectReference) obj;

      if (hasApiGroup() != other.hasApiGroup()) return false;
      if (hasApiGroup()) {
        if (!getApiGroup()
            .equals(other.getApiGroup())) return false;
      }
      if (hasKind() != other.hasKind()) return false;
      if (hasKind()) {
        if (!getKind()
            .equals(other.getKind())) return false;
      }
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) 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 (hasApiGroup()) {
        hash = (37 * hash) + APIGROUP_FIELD_NUMBER;
        hash = (53 * hash) + getApiGroup().hashCode();
      }
      if (hasKind()) {
        hash = (37 * hash) + KIND_FIELD_NUMBER;
        hash = (53 * hash) + getKind().hashCode();
      }
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.TypedLocalObjectReference parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TypedLocalObjectReference 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.V1.TypedLocalObjectReference parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TypedLocalObjectReference 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.V1.TypedLocalObjectReference parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TypedLocalObjectReference parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.TypedLocalObjectReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TypedLocalObjectReference 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.V1.TypedLocalObjectReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.TypedLocalObjectReference 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.V1.TypedLocalObjectReference parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TypedLocalObjectReference 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.V1.TypedLocalObjectReference 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>
     * TypedLocalObjectReference contains enough information to let you locate the
     * typed referenced object inside the same namespace.
     * +structType=atomic
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.TypedLocalObjectReference}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.TypedLocalObjectReference)
        io.kubernetes.client.proto.V1.TypedLocalObjectReferenceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TypedLocalObjectReference_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TypedLocalObjectReference_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.TypedLocalObjectReference.class, io.kubernetes.client.proto.V1.TypedLocalObjectReference.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.TypedLocalObjectReference.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        apiGroup_ = "";
        kind_ = "";
        name_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TypedLocalObjectReference_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TypedLocalObjectReference getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.TypedLocalObjectReference.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TypedLocalObjectReference build() {
        io.kubernetes.client.proto.V1.TypedLocalObjectReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TypedLocalObjectReference buildPartial() {
        io.kubernetes.client.proto.V1.TypedLocalObjectReference result = new io.kubernetes.client.proto.V1.TypedLocalObjectReference(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.TypedLocalObjectReference result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.apiGroup_ = apiGroup_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.kind_ = kind_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.name_ = name_;
          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.V1.TypedLocalObjectReference) {
          return mergeFrom((io.kubernetes.client.proto.V1.TypedLocalObjectReference)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.TypedLocalObjectReference other) {
        if (other == io.kubernetes.client.proto.V1.TypedLocalObjectReference.getDefaultInstance()) return this;
        if (other.hasApiGroup()) {
          apiGroup_ = other.apiGroup_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasKind()) {
          kind_ = other.kind_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasName()) {
          name_ = other.name_;
          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: {
                apiGroup_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                kind_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                name_ = 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 apiGroup_ = "";
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @return Whether the apiGroup field is set.
       */
      public boolean hasApiGroup() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @return The apiGroup.
       */
      public java.lang.String getApiGroup() {
        java.lang.Object ref = apiGroup_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            apiGroup_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @return The bytes for apiGroup.
       */
      public com.google.protobuf.ByteString
          getApiGroupBytes() {
        java.lang.Object ref = apiGroup_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          apiGroup_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @param value The apiGroup to set.
       * @return This builder for chaining.
       */
      public Builder setApiGroup(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        apiGroup_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearApiGroup() {
        apiGroup_ = getDefaultInstance().getApiGroup();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @param value The bytes for apiGroup to set.
       * @return This builder for chaining.
       */
      public Builder setApiGroupBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        apiGroup_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object kind_ = "";
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</code>
       * @return Whether the kind field is set.
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</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 type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</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 type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearKind() {
        kind_ = getDefaultInstance().getKind();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</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 resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</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 resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.TypedLocalObjectReference)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.TypedLocalObjectReference)
    private static final io.kubernetes.client.proto.V1.TypedLocalObjectReference DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.TypedLocalObjectReference();
    }

    public static io.kubernetes.client.proto.V1.TypedLocalObjectReference getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TypedLocalObjectReference>
        PARSER = new com.google.protobuf.AbstractParser<TypedLocalObjectReference>() {
      @java.lang.Override
      public TypedLocalObjectReference 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<TypedLocalObjectReference> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TypedLocalObjectReference> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.TypedLocalObjectReference getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TypedObjectReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.TypedObjectReference)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return Whether the apiGroup field is set.
     */
    boolean hasApiGroup();
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return The apiGroup.
     */
    java.lang.String getApiGroup();
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return The bytes for apiGroup.
     */
    com.google.protobuf.ByteString
        getApiGroupBytes();

    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     * @return Whether the kind field is set.
     */
    boolean hasKind();
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     * @return The kind.
     */
    java.lang.String getKind();
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     * @return The bytes for kind.
     */
    com.google.protobuf.ByteString
        getKindBytes();

    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Namespace is the namespace of resource being referenced
     * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
     * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +featureGate=CrossNamespaceVolumeDataSource
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</code>
     * @return Whether the namespace field is set.
     */
    boolean hasNamespace();
    /**
     * <pre>
     * Namespace is the namespace of resource being referenced
     * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
     * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +featureGate=CrossNamespaceVolumeDataSource
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</code>
     * @return The namespace.
     */
    java.lang.String getNamespace();
    /**
     * <pre>
     * Namespace is the namespace of resource being referenced
     * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
     * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +featureGate=CrossNamespaceVolumeDataSource
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</code>
     * @return The bytes for namespace.
     */
    com.google.protobuf.ByteString
        getNamespaceBytes();
  }
  /**
   * Protobuf type {@code k8s.io.api.core.v1.TypedObjectReference}
   */
  public static final class TypedObjectReference extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.TypedObjectReference)
      TypedObjectReferenceOrBuilder {
  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= */ "",
        TypedObjectReference.class.getName());
    }
    // Use TypedObjectReference.newBuilder() to construct.
    private TypedObjectReference(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private TypedObjectReference() {
      apiGroup_ = "";
      kind_ = "";
      name_ = "";
      namespace_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TypedObjectReference_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TypedObjectReference_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.TypedObjectReference.class, io.kubernetes.client.proto.V1.TypedObjectReference.Builder.class);
    }

    private int bitField0_;
    public static final int APIGROUP_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object apiGroup_ = "";
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return Whether the apiGroup field is set.
     */
    @java.lang.Override
    public boolean hasApiGroup() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return The apiGroup.
     */
    @java.lang.Override
    public java.lang.String getApiGroup() {
      java.lang.Object ref = apiGroup_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          apiGroup_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced.
     * If APIGroup is not specified, the specified Kind must be in the core API group.
     * For any other third-party types, APIGroup is required.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     * @return The bytes for apiGroup.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getApiGroupBytes() {
      java.lang.Object ref = apiGroup_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        apiGroup_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KIND_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object kind_ = "";
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     * @return Whether the kind field is set.
     */
    @java.lang.Override
    public boolean hasKind() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</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 type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</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 NAME_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</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 resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</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 NAMESPACE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object namespace_ = "";
    /**
     * <pre>
     * Namespace is the namespace of resource being referenced
     * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
     * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +featureGate=CrossNamespaceVolumeDataSource
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</code>
     * @return Whether the namespace field is set.
     */
    @java.lang.Override
    public boolean hasNamespace() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Namespace is the namespace of resource being referenced
     * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
     * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +featureGate=CrossNamespaceVolumeDataSource
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</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 resource being referenced
     * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
     * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
     * +featureGate=CrossNamespaceVolumeDataSource
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</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;
      }
    }

    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, apiGroup_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, kind_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, name_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, namespace_);
      }
      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, apiGroup_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, kind_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, name_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, namespace_);
      }
      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.V1.TypedObjectReference)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.TypedObjectReference other = (io.kubernetes.client.proto.V1.TypedObjectReference) obj;

      if (hasApiGroup() != other.hasApiGroup()) return false;
      if (hasApiGroup()) {
        if (!getApiGroup()
            .equals(other.getApiGroup())) return false;
      }
      if (hasKind() != other.hasKind()) return false;
      if (hasKind()) {
        if (!getKind()
            .equals(other.getKind())) return false;
      }
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasNamespace() != other.hasNamespace()) return false;
      if (hasNamespace()) {
        if (!getNamespace()
            .equals(other.getNamespace())) 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 (hasApiGroup()) {
        hash = (37 * hash) + APIGROUP_FIELD_NUMBER;
        hash = (53 * hash) + getApiGroup().hashCode();
      }
      if (hasKind()) {
        hash = (37 * hash) + KIND_FIELD_NUMBER;
        hash = (53 * hash) + getKind().hashCode();
      }
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasNamespace()) {
        hash = (37 * hash) + NAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getNamespace().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.TypedObjectReference parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TypedObjectReference 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.V1.TypedObjectReference parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TypedObjectReference 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.V1.TypedObjectReference parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.TypedObjectReference parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.TypedObjectReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TypedObjectReference 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.V1.TypedObjectReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.TypedObjectReference 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.V1.TypedObjectReference parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.TypedObjectReference 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.V1.TypedObjectReference 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;
    }
    /**
     * Protobuf type {@code k8s.io.api.core.v1.TypedObjectReference}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.TypedObjectReference)
        io.kubernetes.client.proto.V1.TypedObjectReferenceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TypedObjectReference_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TypedObjectReference_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.TypedObjectReference.class, io.kubernetes.client.proto.V1.TypedObjectReference.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.TypedObjectReference.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        apiGroup_ = "";
        kind_ = "";
        name_ = "";
        namespace_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_TypedObjectReference_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TypedObjectReference getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.TypedObjectReference.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TypedObjectReference build() {
        io.kubernetes.client.proto.V1.TypedObjectReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.TypedObjectReference buildPartial() {
        io.kubernetes.client.proto.V1.TypedObjectReference result = new io.kubernetes.client.proto.V1.TypedObjectReference(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.TypedObjectReference result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.apiGroup_ = apiGroup_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.kind_ = kind_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.namespace_ = namespace_;
          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.V1.TypedObjectReference) {
          return mergeFrom((io.kubernetes.client.proto.V1.TypedObjectReference)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.TypedObjectReference other) {
        if (other == io.kubernetes.client.proto.V1.TypedObjectReference.getDefaultInstance()) return this;
        if (other.hasApiGroup()) {
          apiGroup_ = other.apiGroup_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasKind()) {
          kind_ = other.kind_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasNamespace()) {
          namespace_ = other.namespace_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                apiGroup_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                kind_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                namespace_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object apiGroup_ = "";
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @return Whether the apiGroup field is set.
       */
      public boolean hasApiGroup() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @return The apiGroup.
       */
      public java.lang.String getApiGroup() {
        java.lang.Object ref = apiGroup_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            apiGroup_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @return The bytes for apiGroup.
       */
      public com.google.protobuf.ByteString
          getApiGroupBytes() {
        java.lang.Object ref = apiGroup_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          apiGroup_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @param value The apiGroup to set.
       * @return This builder for chaining.
       */
      public Builder setApiGroup(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        apiGroup_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearApiGroup() {
        apiGroup_ = getDefaultInstance().getApiGroup();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced.
       * If APIGroup is not specified, the specified Kind must be in the core API group.
       * For any other third-party types, APIGroup is required.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       * @param value The bytes for apiGroup to set.
       * @return This builder for chaining.
       */
      public Builder setApiGroupBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        apiGroup_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object kind_ = "";
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</code>
       * @return Whether the kind field is set.
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</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 type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</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 type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearKind() {
        kind_ = getDefaultInstance().getKind();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</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_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</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 resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</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 resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</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_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object namespace_ = "";
      /**
       * <pre>
       * Namespace is the namespace of resource being referenced
       * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
       * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +featureGate=CrossNamespaceVolumeDataSource
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</code>
       * @return Whether the namespace field is set.
       */
      public boolean hasNamespace() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Namespace is the namespace of resource being referenced
       * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
       * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +featureGate=CrossNamespaceVolumeDataSource
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</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 resource being referenced
       * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
       * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +featureGate=CrossNamespaceVolumeDataSource
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</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 resource being referenced
       * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
       * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +featureGate=CrossNamespaceVolumeDataSource
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Namespace is the namespace of resource being referenced
       * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
       * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +featureGate=CrossNamespaceVolumeDataSource
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearNamespace() {
        namespace_ = getDefaultInstance().getNamespace();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Namespace is the namespace of resource being referenced
       * Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
       * (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
       * +featureGate=CrossNamespaceVolumeDataSource
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</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_ |= 0x00000008;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.TypedObjectReference)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.TypedObjectReference)
    private static final io.kubernetes.client.proto.V1.TypedObjectReference DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.TypedObjectReference();
    }

    public static io.kubernetes.client.proto.V1.TypedObjectReference getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TypedObjectReference>
        PARSER = new com.google.protobuf.AbstractParser<TypedObjectReference>() {
      @java.lang.Override
      public TypedObjectReference 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<TypedObjectReference> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TypedObjectReference> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.TypedObjectReference getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VolumeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.Volume)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * name of the volume.
     * Must be a DNS_LABEL and unique within the pod.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * name of the volume.
     * Must be a DNS_LABEL and unique within the pod.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * name of the volume.
     * Must be a DNS_LABEL and unique within the pod.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * volumeSource represents the location and type of the mounted volume.
     * If not specified, the Volume is implied to be an EmptyDir.
     * This implied behavior is deprecated and will be removed in a future version.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
     * @return Whether the volumeSource field is set.
     */
    boolean hasVolumeSource();
    /**
     * <pre>
     * volumeSource represents the location and type of the mounted volume.
     * If not specified, the Volume is implied to be an EmptyDir.
     * This implied behavior is deprecated and will be removed in a future version.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
     * @return The volumeSource.
     */
    io.kubernetes.client.proto.V1.VolumeSource getVolumeSource();
    /**
     * <pre>
     * volumeSource represents the location and type of the mounted volume.
     * If not specified, the Volume is implied to be an EmptyDir.
     * This implied behavior is deprecated and will be removed in a future version.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
     */
    io.kubernetes.client.proto.V1.VolumeSourceOrBuilder getVolumeSourceOrBuilder();
  }
  /**
   * <pre>
   * Volume represents a named volume in a pod that may be accessed by any container in the pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.Volume}
   */
  public static final class Volume extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.Volume)
      VolumeOrBuilder {
  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= */ "",
        Volume.class.getName());
    }
    // Use Volume.newBuilder() to construct.
    private Volume(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Volume() {
      name_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Volume_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Volume_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.Volume.class, io.kubernetes.client.proto.V1.Volume.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * name of the volume.
     * Must be a DNS_LABEL and unique within the pod.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * </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 of the volume.
     * Must be a DNS_LABEL and unique within the pod.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * </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 of the volume.
     * Must be a DNS_LABEL and unique within the pod.
     * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
     * </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 VOLUMESOURCE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.VolumeSource volumeSource_;
    /**
     * <pre>
     * volumeSource represents the location and type of the mounted volume.
     * If not specified, the Volume is implied to be an EmptyDir.
     * This implied behavior is deprecated and will be removed in a future version.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
     * @return Whether the volumeSource field is set.
     */
    @java.lang.Override
    public boolean hasVolumeSource() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * volumeSource represents the location and type of the mounted volume.
     * If not specified, the Volume is implied to be an EmptyDir.
     * This implied behavior is deprecated and will be removed in a future version.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
     * @return The volumeSource.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeSource getVolumeSource() {
      return volumeSource_ == null ? io.kubernetes.client.proto.V1.VolumeSource.getDefaultInstance() : volumeSource_;
    }
    /**
     * <pre>
     * volumeSource represents the location and type of the mounted volume.
     * If not specified, the Volume is implied to be an EmptyDir.
     * This implied behavior is deprecated and will be removed in a future version.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeSourceOrBuilder getVolumeSourceOrBuilder() {
      return volumeSource_ == null ? io.kubernetes.client.proto.V1.VolumeSource.getDefaultInstance() : volumeSource_;
    }

    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.writeMessage(2, getVolumeSource());
      }
      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
          .computeMessageSize(2, getVolumeSource());
      }
      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.V1.Volume)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.Volume other = (io.kubernetes.client.proto.V1.Volume) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasVolumeSource() != other.hasVolumeSource()) return false;
      if (hasVolumeSource()) {
        if (!getVolumeSource()
            .equals(other.getVolumeSource())) 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 (hasVolumeSource()) {
        hash = (37 * hash) + VOLUMESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getVolumeSource().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.Volume parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Volume 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.V1.Volume parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Volume 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.V1.Volume parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.Volume parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.Volume parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Volume 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.V1.Volume parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.Volume 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.V1.Volume parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.Volume 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.V1.Volume 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>
     * Volume represents a named volume in a pod that may be accessed by any container in the pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.Volume}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.Volume)
        io.kubernetes.client.proto.V1.VolumeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Volume_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Volume_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.Volume.class, io.kubernetes.client.proto.V1.Volume.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.Volume.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getVolumeSourceFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        volumeSource_ = null;
        if (volumeSourceBuilder_ != null) {
          volumeSourceBuilder_.dispose();
          volumeSourceBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_Volume_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Volume getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.Volume.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Volume build() {
        io.kubernetes.client.proto.V1.Volume result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.Volume buildPartial() {
        io.kubernetes.client.proto.V1.Volume result = new io.kubernetes.client.proto.V1.Volume(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.Volume 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.volumeSource_ = volumeSourceBuilder_ == null
              ? volumeSource_
              : volumeSourceBuilder_.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.V1.Volume) {
          return mergeFrom((io.kubernetes.client.proto.V1.Volume)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.Volume other) {
        if (other == io.kubernetes.client.proto.V1.Volume.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasVolumeSource()) {
          mergeVolumeSource(other.getVolumeSource());
        }
        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: {
                input.readMessage(
                    getVolumeSourceFieldBuilder().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 java.lang.Object name_ = "";
      /**
       * <pre>
       * name of the volume.
       * Must be a DNS_LABEL and unique within the pod.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * name of the volume.
       * Must be a DNS_LABEL and unique within the pod.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * </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 of the volume.
       * Must be a DNS_LABEL and unique within the pod.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * </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 of the volume.
       * Must be a DNS_LABEL and unique within the pod.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * </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 of the volume.
       * Must be a DNS_LABEL and unique within the pod.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * </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 of the volume.
       * Must be a DNS_LABEL and unique within the pod.
       * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
       * </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 io.kubernetes.client.proto.V1.VolumeSource volumeSource_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeSource, io.kubernetes.client.proto.V1.VolumeSource.Builder, io.kubernetes.client.proto.V1.VolumeSourceOrBuilder> volumeSourceBuilder_;
      /**
       * <pre>
       * volumeSource represents the location and type of the mounted volume.
       * If not specified, the Volume is implied to be an EmptyDir.
       * This implied behavior is deprecated and will be removed in a future version.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
       * @return Whether the volumeSource field is set.
       */
      public boolean hasVolumeSource() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * volumeSource represents the location and type of the mounted volume.
       * If not specified, the Volume is implied to be an EmptyDir.
       * This implied behavior is deprecated and will be removed in a future version.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
       * @return The volumeSource.
       */
      public io.kubernetes.client.proto.V1.VolumeSource getVolumeSource() {
        if (volumeSourceBuilder_ == null) {
          return volumeSource_ == null ? io.kubernetes.client.proto.V1.VolumeSource.getDefaultInstance() : volumeSource_;
        } else {
          return volumeSourceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * volumeSource represents the location and type of the mounted volume.
       * If not specified, the Volume is implied to be an EmptyDir.
       * This implied behavior is deprecated and will be removed in a future version.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
       */
      public Builder setVolumeSource(io.kubernetes.client.proto.V1.VolumeSource value) {
        if (volumeSourceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          volumeSource_ = value;
        } else {
          volumeSourceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeSource represents the location and type of the mounted volume.
       * If not specified, the Volume is implied to be an EmptyDir.
       * This implied behavior is deprecated and will be removed in a future version.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
       */
      public Builder setVolumeSource(
          io.kubernetes.client.proto.V1.VolumeSource.Builder builderForValue) {
        if (volumeSourceBuilder_ == null) {
          volumeSource_ = builderForValue.build();
        } else {
          volumeSourceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeSource represents the location and type of the mounted volume.
       * If not specified, the Volume is implied to be an EmptyDir.
       * This implied behavior is deprecated and will be removed in a future version.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
       */
      public Builder mergeVolumeSource(io.kubernetes.client.proto.V1.VolumeSource value) {
        if (volumeSourceBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            volumeSource_ != null &&
            volumeSource_ != io.kubernetes.client.proto.V1.VolumeSource.getDefaultInstance()) {
            getVolumeSourceBuilder().mergeFrom(value);
          } else {
            volumeSource_ = value;
          }
        } else {
          volumeSourceBuilder_.mergeFrom(value);
        }
        if (volumeSource_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * volumeSource represents the location and type of the mounted volume.
       * If not specified, the Volume is implied to be an EmptyDir.
       * This implied behavior is deprecated and will be removed in a future version.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
       */
      public Builder clearVolumeSource() {
        bitField0_ = (bitField0_ & ~0x00000002);
        volumeSource_ = null;
        if (volumeSourceBuilder_ != null) {
          volumeSourceBuilder_.dispose();
          volumeSourceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumeSource represents the location and type of the mounted volume.
       * If not specified, the Volume is implied to be an EmptyDir.
       * This implied behavior is deprecated and will be removed in a future version.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeSource.Builder getVolumeSourceBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getVolumeSourceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * volumeSource represents the location and type of the mounted volume.
       * If not specified, the Volume is implied to be an EmptyDir.
       * This implied behavior is deprecated and will be removed in a future version.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
       */
      public io.kubernetes.client.proto.V1.VolumeSourceOrBuilder getVolumeSourceOrBuilder() {
        if (volumeSourceBuilder_ != null) {
          return volumeSourceBuilder_.getMessageOrBuilder();
        } else {
          return volumeSource_ == null ?
              io.kubernetes.client.proto.V1.VolumeSource.getDefaultInstance() : volumeSource_;
        }
      }
      /**
       * <pre>
       * volumeSource represents the location and type of the mounted volume.
       * If not specified, the Volume is implied to be an EmptyDir.
       * This implied behavior is deprecated and will be removed in a future version.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VolumeSource volumeSource = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.VolumeSource, io.kubernetes.client.proto.V1.VolumeSource.Builder, io.kubernetes.client.proto.V1.VolumeSourceOrBuilder> 
          getVolumeSourceFieldBuilder() {
        if (volumeSourceBuilder_ == null) {
          volumeSourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.VolumeSource, io.kubernetes.client.proto.V1.VolumeSource.Builder, io.kubernetes.client.proto.V1.VolumeSourceOrBuilder>(
                  getVolumeSource(),
                  getParentForChildren(),
                  isClean());
          volumeSource_ = null;
        }
        return volumeSourceBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.Volume)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.Volume)
    private static final io.kubernetes.client.proto.V1.Volume DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.Volume();
    }

    public static io.kubernetes.client.proto.V1.Volume getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Volume>
        PARSER = new com.google.protobuf.AbstractParser<Volume>() {
      @java.lang.Override
      public Volume 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<Volume> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Volume> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.Volume getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VolumeDeviceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.VolumeDevice)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * name must match the name of a persistentVolumeClaim in the pod
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * name must match the name of a persistentVolumeClaim in the pod
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * name must match the name of a persistentVolumeClaim in the pod
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * devicePath is the path inside of the container that the device will be mapped to.
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return Whether the devicePath field is set.
     */
    boolean hasDevicePath();
    /**
     * <pre>
     * devicePath is the path inside of the container that the device will be mapped to.
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return The devicePath.
     */
    java.lang.String getDevicePath();
    /**
     * <pre>
     * devicePath is the path inside of the container that the device will be mapped to.
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return The bytes for devicePath.
     */
    com.google.protobuf.ByteString
        getDevicePathBytes();
  }
  /**
   * <pre>
   * volumeDevice describes a mapping of a raw block device within a container.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.VolumeDevice}
   */
  public static final class VolumeDevice extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.VolumeDevice)
      VolumeDeviceOrBuilder {
  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= */ "",
        VolumeDevice.class.getName());
    }
    // Use VolumeDevice.newBuilder() to construct.
    private VolumeDevice(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VolumeDevice() {
      name_ = "";
      devicePath_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeDevice_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeDevice_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.VolumeDevice.class, io.kubernetes.client.proto.V1.VolumeDevice.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * name must match the name of a persistentVolumeClaim in the pod
     * </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 must match the name of a persistentVolumeClaim in the pod
     * </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 must match the name of a persistentVolumeClaim in the pod
     * </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 DEVICEPATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object devicePath_ = "";
    /**
     * <pre>
     * devicePath is the path inside of the container that the device will be mapped to.
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return Whether the devicePath field is set.
     */
    @java.lang.Override
    public boolean hasDevicePath() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * devicePath is the path inside of the container that the device will be mapped to.
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return The devicePath.
     */
    @java.lang.Override
    public java.lang.String getDevicePath() {
      java.lang.Object ref = devicePath_;
      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()) {
          devicePath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * devicePath is the path inside of the container that the device will be mapped to.
     * </pre>
     *
     * <code>optional string devicePath = 2;</code>
     * @return The bytes for devicePath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDevicePathBytes() {
      java.lang.Object ref = devicePath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        devicePath_ = 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, devicePath_);
      }
      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, devicePath_);
      }
      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.V1.VolumeDevice)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.VolumeDevice other = (io.kubernetes.client.proto.V1.VolumeDevice) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasDevicePath() != other.hasDevicePath()) return false;
      if (hasDevicePath()) {
        if (!getDevicePath()
            .equals(other.getDevicePath())) 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 (hasDevicePath()) {
        hash = (37 * hash) + DEVICEPATH_FIELD_NUMBER;
        hash = (53 * hash) + getDevicePath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.VolumeDevice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeDevice 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.V1.VolumeDevice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeDevice 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.V1.VolumeDevice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeDevice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.VolumeDevice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeDevice 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.V1.VolumeDevice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.VolumeDevice 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.V1.VolumeDevice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeDevice 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.V1.VolumeDevice 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>
     * volumeDevice describes a mapping of a raw block device within a container.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.VolumeDevice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.VolumeDevice)
        io.kubernetes.client.proto.V1.VolumeDeviceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeDevice_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeDevice_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.VolumeDevice.class, io.kubernetes.client.proto.V1.VolumeDevice.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.VolumeDevice.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        devicePath_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeDevice_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeDevice getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.VolumeDevice.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeDevice build() {
        io.kubernetes.client.proto.V1.VolumeDevice result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeDevice buildPartial() {
        io.kubernetes.client.proto.V1.VolumeDevice result = new io.kubernetes.client.proto.V1.VolumeDevice(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.VolumeDevice 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.devicePath_ = devicePath_;
          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.V1.VolumeDevice) {
          return mergeFrom((io.kubernetes.client.proto.V1.VolumeDevice)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.VolumeDevice other) {
        if (other == io.kubernetes.client.proto.V1.VolumeDevice.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasDevicePath()) {
          devicePath_ = other.devicePath_;
          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: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                devicePath_ = 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 name_ = "";
      /**
       * <pre>
       * name must match the name of a persistentVolumeClaim in the pod
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * name must match the name of a persistentVolumeClaim in the pod
       * </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 must match the name of a persistentVolumeClaim in the pod
       * </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 must match the name of a persistentVolumeClaim in the pod
       * </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 must match the name of a persistentVolumeClaim in the pod
       * </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 must match the name of a persistentVolumeClaim in the pod
       * </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 devicePath_ = "";
      /**
       * <pre>
       * devicePath is the path inside of the container that the device will be mapped to.
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @return Whether the devicePath field is set.
       */
      public boolean hasDevicePath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * devicePath is the path inside of the container that the device will be mapped to.
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @return The devicePath.
       */
      public java.lang.String getDevicePath() {
        java.lang.Object ref = devicePath_;
        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()) {
            devicePath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * devicePath is the path inside of the container that the device will be mapped to.
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @return The bytes for devicePath.
       */
      public com.google.protobuf.ByteString
          getDevicePathBytes() {
        java.lang.Object ref = devicePath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          devicePath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * devicePath is the path inside of the container that the device will be mapped to.
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @param value The devicePath to set.
       * @return This builder for chaining.
       */
      public Builder setDevicePath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        devicePath_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * devicePath is the path inside of the container that the device will be mapped to.
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDevicePath() {
        devicePath_ = getDefaultInstance().getDevicePath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * devicePath is the path inside of the container that the device will be mapped to.
       * </pre>
       *
       * <code>optional string devicePath = 2;</code>
       * @param value The bytes for devicePath to set.
       * @return This builder for chaining.
       */
      public Builder setDevicePathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        devicePath_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.VolumeDevice)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.VolumeDevice)
    private static final io.kubernetes.client.proto.V1.VolumeDevice DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.VolumeDevice();
    }

    public static io.kubernetes.client.proto.V1.VolumeDevice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VolumeDevice>
        PARSER = new com.google.protobuf.AbstractParser<VolumeDevice>() {
      @java.lang.Override
      public VolumeDevice 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<VolumeDevice> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VolumeDevice> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeDevice getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VolumeMountOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.VolumeMount)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * This must match the Name of a Volume.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * This must match the Name of a Volume.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * This must match the Name of a Volume.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Mounted read-only if true, read-write otherwise (false or unspecified).
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * Mounted read-only if true, read-write otherwise (false or unspecified).
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * RecursiveReadOnly specifies whether read-only mounts should be handled
     * recursively.
     *
     * If ReadOnly is false, this field has no meaning and must be unspecified.
     *
     * If ReadOnly is true, and this field is set to Disabled, the mount is not made
     * recursively read-only.  If this field is set to IfPossible, the mount is made
     * recursively read-only, if it is supported by the container runtime.  If this
     * field is set to Enabled, the mount is made recursively read-only if it is
     * supported by the container runtime, otherwise the pod will not be started and
     * an error will be generated to indicate the reason.
     *
     * If this field is set to IfPossible or Enabled, MountPropagation must be set to
     * None (or be unspecified, which defaults to None).
     *
     * If this field is not specified, it is treated as an equivalent of Disabled.
     *
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 7;</code>
     * @return Whether the recursiveReadOnly field is set.
     */
    boolean hasRecursiveReadOnly();
    /**
     * <pre>
     * RecursiveReadOnly specifies whether read-only mounts should be handled
     * recursively.
     *
     * If ReadOnly is false, this field has no meaning and must be unspecified.
     *
     * If ReadOnly is true, and this field is set to Disabled, the mount is not made
     * recursively read-only.  If this field is set to IfPossible, the mount is made
     * recursively read-only, if it is supported by the container runtime.  If this
     * field is set to Enabled, the mount is made recursively read-only if it is
     * supported by the container runtime, otherwise the pod will not be started and
     * an error will be generated to indicate the reason.
     *
     * If this field is set to IfPossible or Enabled, MountPropagation must be set to
     * None (or be unspecified, which defaults to None).
     *
     * If this field is not specified, it is treated as an equivalent of Disabled.
     *
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 7;</code>
     * @return The recursiveReadOnly.
     */
    java.lang.String getRecursiveReadOnly();
    /**
     * <pre>
     * RecursiveReadOnly specifies whether read-only mounts should be handled
     * recursively.
     *
     * If ReadOnly is false, this field has no meaning and must be unspecified.
     *
     * If ReadOnly is true, and this field is set to Disabled, the mount is not made
     * recursively read-only.  If this field is set to IfPossible, the mount is made
     * recursively read-only, if it is supported by the container runtime.  If this
     * field is set to Enabled, the mount is made recursively read-only if it is
     * supported by the container runtime, otherwise the pod will not be started and
     * an error will be generated to indicate the reason.
     *
     * If this field is set to IfPossible or Enabled, MountPropagation must be set to
     * None (or be unspecified, which defaults to None).
     *
     * If this field is not specified, it is treated as an equivalent of Disabled.
     *
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 7;</code>
     * @return The bytes for recursiveReadOnly.
     */
    com.google.protobuf.ByteString
        getRecursiveReadOnlyBytes();

    /**
     * <pre>
     * Path within the container at which the volume should be mounted.  Must
     * not contain ':'.
     * </pre>
     *
     * <code>optional string mountPath = 3;</code>
     * @return Whether the mountPath field is set.
     */
    boolean hasMountPath();
    /**
     * <pre>
     * Path within the container at which the volume should be mounted.  Must
     * not contain ':'.
     * </pre>
     *
     * <code>optional string mountPath = 3;</code>
     * @return The mountPath.
     */
    java.lang.String getMountPath();
    /**
     * <pre>
     * Path within the container at which the volume should be mounted.  Must
     * not contain ':'.
     * </pre>
     *
     * <code>optional string mountPath = 3;</code>
     * @return The bytes for mountPath.
     */
    com.google.protobuf.ByteString
        getMountPathBytes();

    /**
     * <pre>
     * Path within the volume from which the container's volume should be mounted.
     * Defaults to "" (volume's root).
     * +optional
     * </pre>
     *
     * <code>optional string subPath = 4;</code>
     * @return Whether the subPath field is set.
     */
    boolean hasSubPath();
    /**
     * <pre>
     * Path within the volume from which the container's volume should be mounted.
     * Defaults to "" (volume's root).
     * +optional
     * </pre>
     *
     * <code>optional string subPath = 4;</code>
     * @return The subPath.
     */
    java.lang.String getSubPath();
    /**
     * <pre>
     * Path within the volume from which the container's volume should be mounted.
     * Defaults to "" (volume's root).
     * +optional
     * </pre>
     *
     * <code>optional string subPath = 4;</code>
     * @return The bytes for subPath.
     */
    com.google.protobuf.ByteString
        getSubPathBytes();

    /**
     * <pre>
     * mountPropagation determines how mounts are propagated from the host
     * to container and the other way around.
     * When not set, MountPropagationNone is used.
     * This field is beta in 1.10.
     * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
     * (which defaults to None).
     * +optional
     * </pre>
     *
     * <code>optional string mountPropagation = 5;</code>
     * @return Whether the mountPropagation field is set.
     */
    boolean hasMountPropagation();
    /**
     * <pre>
     * mountPropagation determines how mounts are propagated from the host
     * to container and the other way around.
     * When not set, MountPropagationNone is used.
     * This field is beta in 1.10.
     * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
     * (which defaults to None).
     * +optional
     * </pre>
     *
     * <code>optional string mountPropagation = 5;</code>
     * @return The mountPropagation.
     */
    java.lang.String getMountPropagation();
    /**
     * <pre>
     * mountPropagation determines how mounts are propagated from the host
     * to container and the other way around.
     * When not set, MountPropagationNone is used.
     * This field is beta in 1.10.
     * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
     * (which defaults to None).
     * +optional
     * </pre>
     *
     * <code>optional string mountPropagation = 5;</code>
     * @return The bytes for mountPropagation.
     */
    com.google.protobuf.ByteString
        getMountPropagationBytes();

    /**
     * <pre>
     * Expanded path within the volume from which the container's volume should be mounted.
     * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
     * Defaults to "" (volume's root).
     * SubPathExpr and SubPath are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional string subPathExpr = 6;</code>
     * @return Whether the subPathExpr field is set.
     */
    boolean hasSubPathExpr();
    /**
     * <pre>
     * Expanded path within the volume from which the container's volume should be mounted.
     * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
     * Defaults to "" (volume's root).
     * SubPathExpr and SubPath are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional string subPathExpr = 6;</code>
     * @return The subPathExpr.
     */
    java.lang.String getSubPathExpr();
    /**
     * <pre>
     * Expanded path within the volume from which the container's volume should be mounted.
     * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
     * Defaults to "" (volume's root).
     * SubPathExpr and SubPath are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional string subPathExpr = 6;</code>
     * @return The bytes for subPathExpr.
     */
    com.google.protobuf.ByteString
        getSubPathExprBytes();
  }
  /**
   * <pre>
   * VolumeMount describes a mounting of a Volume within a container.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.VolumeMount}
   */
  public static final class VolumeMount extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.VolumeMount)
      VolumeMountOrBuilder {
  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= */ "",
        VolumeMount.class.getName());
    }
    // Use VolumeMount.newBuilder() to construct.
    private VolumeMount(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VolumeMount() {
      name_ = "";
      recursiveReadOnly_ = "";
      mountPath_ = "";
      subPath_ = "";
      mountPropagation_ = "";
      subPathExpr_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeMount_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeMount_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.VolumeMount.class, io.kubernetes.client.proto.V1.VolumeMount.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * This must match the Name of a Volume.
     * </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>
     * This must match the Name of a Volume.
     * </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>
     * This must match the Name of a Volume.
     * </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 READONLY_FIELD_NUMBER = 2;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * Mounted read-only if true, read-write otherwise (false or unspecified).
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Mounted read-only if true, read-write otherwise (false or unspecified).
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 2;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int RECURSIVEREADONLY_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object recursiveReadOnly_ = "";
    /**
     * <pre>
     * RecursiveReadOnly specifies whether read-only mounts should be handled
     * recursively.
     *
     * If ReadOnly is false, this field has no meaning and must be unspecified.
     *
     * If ReadOnly is true, and this field is set to Disabled, the mount is not made
     * recursively read-only.  If this field is set to IfPossible, the mount is made
     * recursively read-only, if it is supported by the container runtime.  If this
     * field is set to Enabled, the mount is made recursively read-only if it is
     * supported by the container runtime, otherwise the pod will not be started and
     * an error will be generated to indicate the reason.
     *
     * If this field is set to IfPossible or Enabled, MountPropagation must be set to
     * None (or be unspecified, which defaults to None).
     *
     * If this field is not specified, it is treated as an equivalent of Disabled.
     *
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 7;</code>
     * @return Whether the recursiveReadOnly field is set.
     */
    @java.lang.Override
    public boolean hasRecursiveReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * RecursiveReadOnly specifies whether read-only mounts should be handled
     * recursively.
     *
     * If ReadOnly is false, this field has no meaning and must be unspecified.
     *
     * If ReadOnly is true, and this field is set to Disabled, the mount is not made
     * recursively read-only.  If this field is set to IfPossible, the mount is made
     * recursively read-only, if it is supported by the container runtime.  If this
     * field is set to Enabled, the mount is made recursively read-only if it is
     * supported by the container runtime, otherwise the pod will not be started and
     * an error will be generated to indicate the reason.
     *
     * If this field is set to IfPossible or Enabled, MountPropagation must be set to
     * None (or be unspecified, which defaults to None).
     *
     * If this field is not specified, it is treated as an equivalent of Disabled.
     *
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 7;</code>
     * @return The recursiveReadOnly.
     */
    @java.lang.Override
    public java.lang.String getRecursiveReadOnly() {
      java.lang.Object ref = recursiveReadOnly_;
      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()) {
          recursiveReadOnly_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * RecursiveReadOnly specifies whether read-only mounts should be handled
     * recursively.
     *
     * If ReadOnly is false, this field has no meaning and must be unspecified.
     *
     * If ReadOnly is true, and this field is set to Disabled, the mount is not made
     * recursively read-only.  If this field is set to IfPossible, the mount is made
     * recursively read-only, if it is supported by the container runtime.  If this
     * field is set to Enabled, the mount is made recursively read-only if it is
     * supported by the container runtime, otherwise the pod will not be started and
     * an error will be generated to indicate the reason.
     *
     * If this field is set to IfPossible or Enabled, MountPropagation must be set to
     * None (or be unspecified, which defaults to None).
     *
     * If this field is not specified, it is treated as an equivalent of Disabled.
     *
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 7;</code>
     * @return The bytes for recursiveReadOnly.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRecursiveReadOnlyBytes() {
      java.lang.Object ref = recursiveReadOnly_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        recursiveReadOnly_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MOUNTPATH_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object mountPath_ = "";
    /**
     * <pre>
     * Path within the container at which the volume should be mounted.  Must
     * not contain ':'.
     * </pre>
     *
     * <code>optional string mountPath = 3;</code>
     * @return Whether the mountPath field is set.
     */
    @java.lang.Override
    public boolean hasMountPath() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Path within the container at which the volume should be mounted.  Must
     * not contain ':'.
     * </pre>
     *
     * <code>optional string mountPath = 3;</code>
     * @return The mountPath.
     */
    @java.lang.Override
    public java.lang.String getMountPath() {
      java.lang.Object ref = mountPath_;
      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()) {
          mountPath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Path within the container at which the volume should be mounted.  Must
     * not contain ':'.
     * </pre>
     *
     * <code>optional string mountPath = 3;</code>
     * @return The bytes for mountPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMountPathBytes() {
      java.lang.Object ref = mountPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mountPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SUBPATH_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object subPath_ = "";
    /**
     * <pre>
     * Path within the volume from which the container's volume should be mounted.
     * Defaults to "" (volume's root).
     * +optional
     * </pre>
     *
     * <code>optional string subPath = 4;</code>
     * @return Whether the subPath field is set.
     */
    @java.lang.Override
    public boolean hasSubPath() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * Path within the volume from which the container's volume should be mounted.
     * Defaults to "" (volume's root).
     * +optional
     * </pre>
     *
     * <code>optional string subPath = 4;</code>
     * @return The subPath.
     */
    @java.lang.Override
    public java.lang.String getSubPath() {
      java.lang.Object ref = subPath_;
      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()) {
          subPath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Path within the volume from which the container's volume should be mounted.
     * Defaults to "" (volume's root).
     * +optional
     * </pre>
     *
     * <code>optional string subPath = 4;</code>
     * @return The bytes for subPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSubPathBytes() {
      java.lang.Object ref = subPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        subPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MOUNTPROPAGATION_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object mountPropagation_ = "";
    /**
     * <pre>
     * mountPropagation determines how mounts are propagated from the host
     * to container and the other way around.
     * When not set, MountPropagationNone is used.
     * This field is beta in 1.10.
     * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
     * (which defaults to None).
     * +optional
     * </pre>
     *
     * <code>optional string mountPropagation = 5;</code>
     * @return Whether the mountPropagation field is set.
     */
    @java.lang.Override
    public boolean hasMountPropagation() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * mountPropagation determines how mounts are propagated from the host
     * to container and the other way around.
     * When not set, MountPropagationNone is used.
     * This field is beta in 1.10.
     * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
     * (which defaults to None).
     * +optional
     * </pre>
     *
     * <code>optional string mountPropagation = 5;</code>
     * @return The mountPropagation.
     */
    @java.lang.Override
    public java.lang.String getMountPropagation() {
      java.lang.Object ref = mountPropagation_;
      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()) {
          mountPropagation_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * mountPropagation determines how mounts are propagated from the host
     * to container and the other way around.
     * When not set, MountPropagationNone is used.
     * This field is beta in 1.10.
     * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
     * (which defaults to None).
     * +optional
     * </pre>
     *
     * <code>optional string mountPropagation = 5;</code>
     * @return The bytes for mountPropagation.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMountPropagationBytes() {
      java.lang.Object ref = mountPropagation_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mountPropagation_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SUBPATHEXPR_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object subPathExpr_ = "";
    /**
     * <pre>
     * Expanded path within the volume from which the container's volume should be mounted.
     * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
     * Defaults to "" (volume's root).
     * SubPathExpr and SubPath are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional string subPathExpr = 6;</code>
     * @return Whether the subPathExpr field is set.
     */
    @java.lang.Override
    public boolean hasSubPathExpr() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Expanded path within the volume from which the container's volume should be mounted.
     * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
     * Defaults to "" (volume's root).
     * SubPathExpr and SubPath are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional string subPathExpr = 6;</code>
     * @return The subPathExpr.
     */
    @java.lang.Override
    public java.lang.String getSubPathExpr() {
      java.lang.Object ref = subPathExpr_;
      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()) {
          subPathExpr_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Expanded path within the volume from which the container's volume should be mounted.
     * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
     * Defaults to "" (volume's root).
     * SubPathExpr and SubPath are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional string subPathExpr = 6;</code>
     * @return The bytes for subPathExpr.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSubPathExprBytes() {
      java.lang.Object ref = subPathExpr_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        subPathExpr_ = 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)) {
        output.writeBool(2, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, mountPath_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, subPath_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, mountPropagation_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, subPathExpr_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, recursiveReadOnly_);
      }
      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, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, mountPath_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, subPath_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, mountPropagation_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, subPathExpr_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, recursiveReadOnly_);
      }
      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.V1.VolumeMount)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.VolumeMount other = (io.kubernetes.client.proto.V1.VolumeMount) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasRecursiveReadOnly() != other.hasRecursiveReadOnly()) return false;
      if (hasRecursiveReadOnly()) {
        if (!getRecursiveReadOnly()
            .equals(other.getRecursiveReadOnly())) return false;
      }
      if (hasMountPath() != other.hasMountPath()) return false;
      if (hasMountPath()) {
        if (!getMountPath()
            .equals(other.getMountPath())) return false;
      }
      if (hasSubPath() != other.hasSubPath()) return false;
      if (hasSubPath()) {
        if (!getSubPath()
            .equals(other.getSubPath())) return false;
      }
      if (hasMountPropagation() != other.hasMountPropagation()) return false;
      if (hasMountPropagation()) {
        if (!getMountPropagation()
            .equals(other.getMountPropagation())) return false;
      }
      if (hasSubPathExpr() != other.hasSubPathExpr()) return false;
      if (hasSubPathExpr()) {
        if (!getSubPathExpr()
            .equals(other.getSubPathExpr())) 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 (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasRecursiveReadOnly()) {
        hash = (37 * hash) + RECURSIVEREADONLY_FIELD_NUMBER;
        hash = (53 * hash) + getRecursiveReadOnly().hashCode();
      }
      if (hasMountPath()) {
        hash = (37 * hash) + MOUNTPATH_FIELD_NUMBER;
        hash = (53 * hash) + getMountPath().hashCode();
      }
      if (hasSubPath()) {
        hash = (37 * hash) + SUBPATH_FIELD_NUMBER;
        hash = (53 * hash) + getSubPath().hashCode();
      }
      if (hasMountPropagation()) {
        hash = (37 * hash) + MOUNTPROPAGATION_FIELD_NUMBER;
        hash = (53 * hash) + getMountPropagation().hashCode();
      }
      if (hasSubPathExpr()) {
        hash = (37 * hash) + SUBPATHEXPR_FIELD_NUMBER;
        hash = (53 * hash) + getSubPathExpr().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.VolumeMount parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeMount 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.V1.VolumeMount parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeMount 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.V1.VolumeMount parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeMount parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.VolumeMount parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeMount 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.V1.VolumeMount parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.VolumeMount 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.V1.VolumeMount parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeMount 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.V1.VolumeMount 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>
     * VolumeMount describes a mounting of a Volume within a container.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.VolumeMount}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.VolumeMount)
        io.kubernetes.client.proto.V1.VolumeMountOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeMount_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeMount_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.VolumeMount.class, io.kubernetes.client.proto.V1.VolumeMount.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.VolumeMount.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        readOnly_ = false;
        recursiveReadOnly_ = "";
        mountPath_ = "";
        subPath_ = "";
        mountPropagation_ = "";
        subPathExpr_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeMount_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeMount getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.VolumeMount.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeMount build() {
        io.kubernetes.client.proto.V1.VolumeMount result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeMount buildPartial() {
        io.kubernetes.client.proto.V1.VolumeMount result = new io.kubernetes.client.proto.V1.VolumeMount(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.VolumeMount 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.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.recursiveReadOnly_ = recursiveReadOnly_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.mountPath_ = mountPath_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.subPath_ = subPath_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.mountPropagation_ = mountPropagation_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.subPathExpr_ = subPathExpr_;
          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.V1.VolumeMount) {
          return mergeFrom((io.kubernetes.client.proto.V1.VolumeMount)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.VolumeMount other) {
        if (other == io.kubernetes.client.proto.V1.VolumeMount.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasRecursiveReadOnly()) {
          recursiveReadOnly_ = other.recursiveReadOnly_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasMountPath()) {
          mountPath_ = other.mountPath_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasSubPath()) {
          subPath_ = other.subPath_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasMountPropagation()) {
          mountPropagation_ = other.mountPropagation_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasSubPathExpr()) {
          subPathExpr_ = other.subPathExpr_;
          bitField0_ |= 0x00000040;
          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 16: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                mountPath_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 26
              case 34: {
                subPath_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 34
              case 42: {
                mountPropagation_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 42
              case 50: {
                subPathExpr_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 50
              case 58: {
                recursiveReadOnly_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * This must match the Name of a Volume.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * This must match the Name of a Volume.
       * </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>
       * This must match the Name of a Volume.
       * </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>
       * This must match the Name of a Volume.
       * </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>
       * This must match the Name of a Volume.
       * </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>
       * This must match the Name of a Volume.
       * </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 readOnly_ ;
      /**
       * <pre>
       * Mounted read-only if true, read-write otherwise (false or unspecified).
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Mounted read-only if true, read-write otherwise (false or unspecified).
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * Mounted read-only if true, read-write otherwise (false or unspecified).
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Mounted read-only if true, read-write otherwise (false or unspecified).
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000002);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object recursiveReadOnly_ = "";
      /**
       * <pre>
       * RecursiveReadOnly specifies whether read-only mounts should be handled
       * recursively.
       *
       * If ReadOnly is false, this field has no meaning and must be unspecified.
       *
       * If ReadOnly is true, and this field is set to Disabled, the mount is not made
       * recursively read-only.  If this field is set to IfPossible, the mount is made
       * recursively read-only, if it is supported by the container runtime.  If this
       * field is set to Enabled, the mount is made recursively read-only if it is
       * supported by the container runtime, otherwise the pod will not be started and
       * an error will be generated to indicate the reason.
       *
       * If this field is set to IfPossible or Enabled, MountPropagation must be set to
       * None (or be unspecified, which defaults to None).
       *
       * If this field is not specified, it is treated as an equivalent of Disabled.
       *
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 7;</code>
       * @return Whether the recursiveReadOnly field is set.
       */
      public boolean hasRecursiveReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * RecursiveReadOnly specifies whether read-only mounts should be handled
       * recursively.
       *
       * If ReadOnly is false, this field has no meaning and must be unspecified.
       *
       * If ReadOnly is true, and this field is set to Disabled, the mount is not made
       * recursively read-only.  If this field is set to IfPossible, the mount is made
       * recursively read-only, if it is supported by the container runtime.  If this
       * field is set to Enabled, the mount is made recursively read-only if it is
       * supported by the container runtime, otherwise the pod will not be started and
       * an error will be generated to indicate the reason.
       *
       * If this field is set to IfPossible or Enabled, MountPropagation must be set to
       * None (or be unspecified, which defaults to None).
       *
       * If this field is not specified, it is treated as an equivalent of Disabled.
       *
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 7;</code>
       * @return The recursiveReadOnly.
       */
      public java.lang.String getRecursiveReadOnly() {
        java.lang.Object ref = recursiveReadOnly_;
        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()) {
            recursiveReadOnly_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * RecursiveReadOnly specifies whether read-only mounts should be handled
       * recursively.
       *
       * If ReadOnly is false, this field has no meaning and must be unspecified.
       *
       * If ReadOnly is true, and this field is set to Disabled, the mount is not made
       * recursively read-only.  If this field is set to IfPossible, the mount is made
       * recursively read-only, if it is supported by the container runtime.  If this
       * field is set to Enabled, the mount is made recursively read-only if it is
       * supported by the container runtime, otherwise the pod will not be started and
       * an error will be generated to indicate the reason.
       *
       * If this field is set to IfPossible or Enabled, MountPropagation must be set to
       * None (or be unspecified, which defaults to None).
       *
       * If this field is not specified, it is treated as an equivalent of Disabled.
       *
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 7;</code>
       * @return The bytes for recursiveReadOnly.
       */
      public com.google.protobuf.ByteString
          getRecursiveReadOnlyBytes() {
        java.lang.Object ref = recursiveReadOnly_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          recursiveReadOnly_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * RecursiveReadOnly specifies whether read-only mounts should be handled
       * recursively.
       *
       * If ReadOnly is false, this field has no meaning and must be unspecified.
       *
       * If ReadOnly is true, and this field is set to Disabled, the mount is not made
       * recursively read-only.  If this field is set to IfPossible, the mount is made
       * recursively read-only, if it is supported by the container runtime.  If this
       * field is set to Enabled, the mount is made recursively read-only if it is
       * supported by the container runtime, otherwise the pod will not be started and
       * an error will be generated to indicate the reason.
       *
       * If this field is set to IfPossible or Enabled, MountPropagation must be set to
       * None (or be unspecified, which defaults to None).
       *
       * If this field is not specified, it is treated as an equivalent of Disabled.
       *
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 7;</code>
       * @param value The recursiveReadOnly to set.
       * @return This builder for chaining.
       */
      public Builder setRecursiveReadOnly(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        recursiveReadOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RecursiveReadOnly specifies whether read-only mounts should be handled
       * recursively.
       *
       * If ReadOnly is false, this field has no meaning and must be unspecified.
       *
       * If ReadOnly is true, and this field is set to Disabled, the mount is not made
       * recursively read-only.  If this field is set to IfPossible, the mount is made
       * recursively read-only, if it is supported by the container runtime.  If this
       * field is set to Enabled, the mount is made recursively read-only if it is
       * supported by the container runtime, otherwise the pod will not be started and
       * an error will be generated to indicate the reason.
       *
       * If this field is set to IfPossible or Enabled, MountPropagation must be set to
       * None (or be unspecified, which defaults to None).
       *
       * If this field is not specified, it is treated as an equivalent of Disabled.
       *
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearRecursiveReadOnly() {
        recursiveReadOnly_ = getDefaultInstance().getRecursiveReadOnly();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RecursiveReadOnly specifies whether read-only mounts should be handled
       * recursively.
       *
       * If ReadOnly is false, this field has no meaning and must be unspecified.
       *
       * If ReadOnly is true, and this field is set to Disabled, the mount is not made
       * recursively read-only.  If this field is set to IfPossible, the mount is made
       * recursively read-only, if it is supported by the container runtime.  If this
       * field is set to Enabled, the mount is made recursively read-only if it is
       * supported by the container runtime, otherwise the pod will not be started and
       * an error will be generated to indicate the reason.
       *
       * If this field is set to IfPossible or Enabled, MountPropagation must be set to
       * None (or be unspecified, which defaults to None).
       *
       * If this field is not specified, it is treated as an equivalent of Disabled.
       *
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 7;</code>
       * @param value The bytes for recursiveReadOnly to set.
       * @return This builder for chaining.
       */
      public Builder setRecursiveReadOnlyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        recursiveReadOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object mountPath_ = "";
      /**
       * <pre>
       * Path within the container at which the volume should be mounted.  Must
       * not contain ':'.
       * </pre>
       *
       * <code>optional string mountPath = 3;</code>
       * @return Whether the mountPath field is set.
       */
      public boolean hasMountPath() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Path within the container at which the volume should be mounted.  Must
       * not contain ':'.
       * </pre>
       *
       * <code>optional string mountPath = 3;</code>
       * @return The mountPath.
       */
      public java.lang.String getMountPath() {
        java.lang.Object ref = mountPath_;
        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()) {
            mountPath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Path within the container at which the volume should be mounted.  Must
       * not contain ':'.
       * </pre>
       *
       * <code>optional string mountPath = 3;</code>
       * @return The bytes for mountPath.
       */
      public com.google.protobuf.ByteString
          getMountPathBytes() {
        java.lang.Object ref = mountPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mountPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Path within the container at which the volume should be mounted.  Must
       * not contain ':'.
       * </pre>
       *
       * <code>optional string mountPath = 3;</code>
       * @param value The mountPath to set.
       * @return This builder for chaining.
       */
      public Builder setMountPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        mountPath_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path within the container at which the volume should be mounted.  Must
       * not contain ':'.
       * </pre>
       *
       * <code>optional string mountPath = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMountPath() {
        mountPath_ = getDefaultInstance().getMountPath();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path within the container at which the volume should be mounted.  Must
       * not contain ':'.
       * </pre>
       *
       * <code>optional string mountPath = 3;</code>
       * @param value The bytes for mountPath to set.
       * @return This builder for chaining.
       */
      public Builder setMountPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        mountPath_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object subPath_ = "";
      /**
       * <pre>
       * Path within the volume from which the container's volume should be mounted.
       * Defaults to "" (volume's root).
       * +optional
       * </pre>
       *
       * <code>optional string subPath = 4;</code>
       * @return Whether the subPath field is set.
       */
      public boolean hasSubPath() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Path within the volume from which the container's volume should be mounted.
       * Defaults to "" (volume's root).
       * +optional
       * </pre>
       *
       * <code>optional string subPath = 4;</code>
       * @return The subPath.
       */
      public java.lang.String getSubPath() {
        java.lang.Object ref = subPath_;
        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()) {
            subPath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Path within the volume from which the container's volume should be mounted.
       * Defaults to "" (volume's root).
       * +optional
       * </pre>
       *
       * <code>optional string subPath = 4;</code>
       * @return The bytes for subPath.
       */
      public com.google.protobuf.ByteString
          getSubPathBytes() {
        java.lang.Object ref = subPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          subPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Path within the volume from which the container's volume should be mounted.
       * Defaults to "" (volume's root).
       * +optional
       * </pre>
       *
       * <code>optional string subPath = 4;</code>
       * @param value The subPath to set.
       * @return This builder for chaining.
       */
      public Builder setSubPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        subPath_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path within the volume from which the container's volume should be mounted.
       * Defaults to "" (volume's root).
       * +optional
       * </pre>
       *
       * <code>optional string subPath = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubPath() {
        subPath_ = getDefaultInstance().getSubPath();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path within the volume from which the container's volume should be mounted.
       * Defaults to "" (volume's root).
       * +optional
       * </pre>
       *
       * <code>optional string subPath = 4;</code>
       * @param value The bytes for subPath to set.
       * @return This builder for chaining.
       */
      public Builder setSubPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        subPath_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object mountPropagation_ = "";
      /**
       * <pre>
       * mountPropagation determines how mounts are propagated from the host
       * to container and the other way around.
       * When not set, MountPropagationNone is used.
       * This field is beta in 1.10.
       * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
       * (which defaults to None).
       * +optional
       * </pre>
       *
       * <code>optional string mountPropagation = 5;</code>
       * @return Whether the mountPropagation field is set.
       */
      public boolean hasMountPropagation() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * mountPropagation determines how mounts are propagated from the host
       * to container and the other way around.
       * When not set, MountPropagationNone is used.
       * This field is beta in 1.10.
       * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
       * (which defaults to None).
       * +optional
       * </pre>
       *
       * <code>optional string mountPropagation = 5;</code>
       * @return The mountPropagation.
       */
      public java.lang.String getMountPropagation() {
        java.lang.Object ref = mountPropagation_;
        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()) {
            mountPropagation_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * mountPropagation determines how mounts are propagated from the host
       * to container and the other way around.
       * When not set, MountPropagationNone is used.
       * This field is beta in 1.10.
       * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
       * (which defaults to None).
       * +optional
       * </pre>
       *
       * <code>optional string mountPropagation = 5;</code>
       * @return The bytes for mountPropagation.
       */
      public com.google.protobuf.ByteString
          getMountPropagationBytes() {
        java.lang.Object ref = mountPropagation_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mountPropagation_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * mountPropagation determines how mounts are propagated from the host
       * to container and the other way around.
       * When not set, MountPropagationNone is used.
       * This field is beta in 1.10.
       * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
       * (which defaults to None).
       * +optional
       * </pre>
       *
       * <code>optional string mountPropagation = 5;</code>
       * @param value The mountPropagation to set.
       * @return This builder for chaining.
       */
      public Builder setMountPropagation(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        mountPropagation_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mountPropagation determines how mounts are propagated from the host
       * to container and the other way around.
       * When not set, MountPropagationNone is used.
       * This field is beta in 1.10.
       * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
       * (which defaults to None).
       * +optional
       * </pre>
       *
       * <code>optional string mountPropagation = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearMountPropagation() {
        mountPropagation_ = getDefaultInstance().getMountPropagation();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mountPropagation determines how mounts are propagated from the host
       * to container and the other way around.
       * When not set, MountPropagationNone is used.
       * This field is beta in 1.10.
       * When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
       * (which defaults to None).
       * +optional
       * </pre>
       *
       * <code>optional string mountPropagation = 5;</code>
       * @param value The bytes for mountPropagation to set.
       * @return This builder for chaining.
       */
      public Builder setMountPropagationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        mountPropagation_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object subPathExpr_ = "";
      /**
       * <pre>
       * Expanded path within the volume from which the container's volume should be mounted.
       * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
       * Defaults to "" (volume's root).
       * SubPathExpr and SubPath are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional string subPathExpr = 6;</code>
       * @return Whether the subPathExpr field is set.
       */
      public boolean hasSubPathExpr() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Expanded path within the volume from which the container's volume should be mounted.
       * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
       * Defaults to "" (volume's root).
       * SubPathExpr and SubPath are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional string subPathExpr = 6;</code>
       * @return The subPathExpr.
       */
      public java.lang.String getSubPathExpr() {
        java.lang.Object ref = subPathExpr_;
        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()) {
            subPathExpr_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Expanded path within the volume from which the container's volume should be mounted.
       * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
       * Defaults to "" (volume's root).
       * SubPathExpr and SubPath are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional string subPathExpr = 6;</code>
       * @return The bytes for subPathExpr.
       */
      public com.google.protobuf.ByteString
          getSubPathExprBytes() {
        java.lang.Object ref = subPathExpr_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          subPathExpr_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Expanded path within the volume from which the container's volume should be mounted.
       * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
       * Defaults to "" (volume's root).
       * SubPathExpr and SubPath are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional string subPathExpr = 6;</code>
       * @param value The subPathExpr to set.
       * @return This builder for chaining.
       */
      public Builder setSubPathExpr(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        subPathExpr_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Expanded path within the volume from which the container's volume should be mounted.
       * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
       * Defaults to "" (volume's root).
       * SubPathExpr and SubPath are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional string subPathExpr = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubPathExpr() {
        subPathExpr_ = getDefaultInstance().getSubPathExpr();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Expanded path within the volume from which the container's volume should be mounted.
       * Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
       * Defaults to "" (volume's root).
       * SubPathExpr and SubPath are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional string subPathExpr = 6;</code>
       * @param value The bytes for subPathExpr to set.
       * @return This builder for chaining.
       */
      public Builder setSubPathExprBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        subPathExpr_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.VolumeMount)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.VolumeMount)
    private static final io.kubernetes.client.proto.V1.VolumeMount DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.VolumeMount();
    }

    public static io.kubernetes.client.proto.V1.VolumeMount getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VolumeMount>
        PARSER = new com.google.protobuf.AbstractParser<VolumeMount>() {
      @java.lang.Override
      public VolumeMount 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<VolumeMount> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VolumeMount> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeMount getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VolumeMountStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.VolumeMountStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name corresponds to the name of the original VolumeMount.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name corresponds to the name of the original VolumeMount.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name corresponds to the name of the original VolumeMount.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * MountPath corresponds to the original VolumeMount.
     * </pre>
     *
     * <code>optional string mountPath = 2;</code>
     * @return Whether the mountPath field is set.
     */
    boolean hasMountPath();
    /**
     * <pre>
     * MountPath corresponds to the original VolumeMount.
     * </pre>
     *
     * <code>optional string mountPath = 2;</code>
     * @return The mountPath.
     */
    java.lang.String getMountPath();
    /**
     * <pre>
     * MountPath corresponds to the original VolumeMount.
     * </pre>
     *
     * <code>optional string mountPath = 2;</code>
     * @return The bytes for mountPath.
     */
    com.google.protobuf.ByteString
        getMountPathBytes();

    /**
     * <pre>
     * ReadOnly corresponds to the original VolumeMount.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    boolean hasReadOnly();
    /**
     * <pre>
     * ReadOnly corresponds to the original VolumeMount.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    boolean getReadOnly();

    /**
     * <pre>
     * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
     * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
     * depending on the mount result.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 4;</code>
     * @return Whether the recursiveReadOnly field is set.
     */
    boolean hasRecursiveReadOnly();
    /**
     * <pre>
     * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
     * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
     * depending on the mount result.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 4;</code>
     * @return The recursiveReadOnly.
     */
    java.lang.String getRecursiveReadOnly();
    /**
     * <pre>
     * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
     * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
     * depending on the mount result.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 4;</code>
     * @return The bytes for recursiveReadOnly.
     */
    com.google.protobuf.ByteString
        getRecursiveReadOnlyBytes();
  }
  /**
   * <pre>
   * VolumeMountStatus shows status of volume mounts.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.VolumeMountStatus}
   */
  public static final class VolumeMountStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.VolumeMountStatus)
      VolumeMountStatusOrBuilder {
  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= */ "",
        VolumeMountStatus.class.getName());
    }
    // Use VolumeMountStatus.newBuilder() to construct.
    private VolumeMountStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VolumeMountStatus() {
      name_ = "";
      mountPath_ = "";
      recursiveReadOnly_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeMountStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeMountStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.VolumeMountStatus.class, io.kubernetes.client.proto.V1.VolumeMountStatus.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name corresponds to the name of the original VolumeMount.
     * </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 corresponds to the name of the original VolumeMount.
     * </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 corresponds to the name of the original VolumeMount.
     * </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 MOUNTPATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object mountPath_ = "";
    /**
     * <pre>
     * MountPath corresponds to the original VolumeMount.
     * </pre>
     *
     * <code>optional string mountPath = 2;</code>
     * @return Whether the mountPath field is set.
     */
    @java.lang.Override
    public boolean hasMountPath() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * MountPath corresponds to the original VolumeMount.
     * </pre>
     *
     * <code>optional string mountPath = 2;</code>
     * @return The mountPath.
     */
    @java.lang.Override
    public java.lang.String getMountPath() {
      java.lang.Object ref = mountPath_;
      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()) {
          mountPath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * MountPath corresponds to the original VolumeMount.
     * </pre>
     *
     * <code>optional string mountPath = 2;</code>
     * @return The bytes for mountPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMountPathBytes() {
      java.lang.Object ref = mountPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mountPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READONLY_FIELD_NUMBER = 3;
    private boolean readOnly_ = false;
    /**
     * <pre>
     * ReadOnly corresponds to the original VolumeMount.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return Whether the readOnly field is set.
     */
    @java.lang.Override
    public boolean hasReadOnly() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * ReadOnly corresponds to the original VolumeMount.
     * +optional
     * </pre>
     *
     * <code>optional bool readOnly = 3;</code>
     * @return The readOnly.
     */
    @java.lang.Override
    public boolean getReadOnly() {
      return readOnly_;
    }

    public static final int RECURSIVEREADONLY_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object recursiveReadOnly_ = "";
    /**
     * <pre>
     * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
     * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
     * depending on the mount result.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 4;</code>
     * @return Whether the recursiveReadOnly field is set.
     */
    @java.lang.Override
    public boolean hasRecursiveReadOnly() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
     * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
     * depending on the mount result.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 4;</code>
     * @return The recursiveReadOnly.
     */
    @java.lang.Override
    public java.lang.String getRecursiveReadOnly() {
      java.lang.Object ref = recursiveReadOnly_;
      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()) {
          recursiveReadOnly_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
     * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
     * depending on the mount result.
     * +featureGate=RecursiveReadOnlyMounts
     * +optional
     * </pre>
     *
     * <code>optional string recursiveReadOnly = 4;</code>
     * @return The bytes for recursiveReadOnly.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRecursiveReadOnlyBytes() {
      java.lang.Object ref = recursiveReadOnly_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        recursiveReadOnly_ = 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, mountPath_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, recursiveReadOnly_);
      }
      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, mountPath_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, readOnly_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, recursiveReadOnly_);
      }
      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.V1.VolumeMountStatus)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.VolumeMountStatus other = (io.kubernetes.client.proto.V1.VolumeMountStatus) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasMountPath() != other.hasMountPath()) return false;
      if (hasMountPath()) {
        if (!getMountPath()
            .equals(other.getMountPath())) return false;
      }
      if (hasReadOnly() != other.hasReadOnly()) return false;
      if (hasReadOnly()) {
        if (getReadOnly()
            != other.getReadOnly()) return false;
      }
      if (hasRecursiveReadOnly() != other.hasRecursiveReadOnly()) return false;
      if (hasRecursiveReadOnly()) {
        if (!getRecursiveReadOnly()
            .equals(other.getRecursiveReadOnly())) 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 (hasMountPath()) {
        hash = (37 * hash) + MOUNTPATH_FIELD_NUMBER;
        hash = (53 * hash) + getMountPath().hashCode();
      }
      if (hasReadOnly()) {
        hash = (37 * hash) + READONLY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReadOnly());
      }
      if (hasRecursiveReadOnly()) {
        hash = (37 * hash) + RECURSIVEREADONLY_FIELD_NUMBER;
        hash = (53 * hash) + getRecursiveReadOnly().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.VolumeMountStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeMountStatus 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.V1.VolumeMountStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeMountStatus 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.V1.VolumeMountStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeMountStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.VolumeMountStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeMountStatus 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.V1.VolumeMountStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.VolumeMountStatus 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.V1.VolumeMountStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeMountStatus 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.V1.VolumeMountStatus 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>
     * VolumeMountStatus shows status of volume mounts.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.VolumeMountStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.VolumeMountStatus)
        io.kubernetes.client.proto.V1.VolumeMountStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeMountStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeMountStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.VolumeMountStatus.class, io.kubernetes.client.proto.V1.VolumeMountStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.VolumeMountStatus.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        mountPath_ = "";
        readOnly_ = false;
        recursiveReadOnly_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeMountStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeMountStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.VolumeMountStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeMountStatus build() {
        io.kubernetes.client.proto.V1.VolumeMountStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeMountStatus buildPartial() {
        io.kubernetes.client.proto.V1.VolumeMountStatus result = new io.kubernetes.client.proto.V1.VolumeMountStatus(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.VolumeMountStatus 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.mountPath_ = mountPath_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.readOnly_ = readOnly_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.recursiveReadOnly_ = recursiveReadOnly_;
          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.V1.VolumeMountStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1.VolumeMountStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.VolumeMountStatus other) {
        if (other == io.kubernetes.client.proto.V1.VolumeMountStatus.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasMountPath()) {
          mountPath_ = other.mountPath_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasReadOnly()) {
          setReadOnly(other.getReadOnly());
        }
        if (other.hasRecursiveReadOnly()) {
          recursiveReadOnly_ = other.recursiveReadOnly_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                mountPath_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                readOnly_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                recursiveReadOnly_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name corresponds to the name of the original VolumeMount.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Name corresponds to the name of the original VolumeMount.
       * </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 corresponds to the name of the original VolumeMount.
       * </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 corresponds to the name of the original VolumeMount.
       * </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 corresponds to the name of the original VolumeMount.
       * </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 corresponds to the name of the original VolumeMount.
       * </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 mountPath_ = "";
      /**
       * <pre>
       * MountPath corresponds to the original VolumeMount.
       * </pre>
       *
       * <code>optional string mountPath = 2;</code>
       * @return Whether the mountPath field is set.
       */
      public boolean hasMountPath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * MountPath corresponds to the original VolumeMount.
       * </pre>
       *
       * <code>optional string mountPath = 2;</code>
       * @return The mountPath.
       */
      public java.lang.String getMountPath() {
        java.lang.Object ref = mountPath_;
        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()) {
            mountPath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * MountPath corresponds to the original VolumeMount.
       * </pre>
       *
       * <code>optional string mountPath = 2;</code>
       * @return The bytes for mountPath.
       */
      public com.google.protobuf.ByteString
          getMountPathBytes() {
        java.lang.Object ref = mountPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mountPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * MountPath corresponds to the original VolumeMount.
       * </pre>
       *
       * <code>optional string mountPath = 2;</code>
       * @param value The mountPath to set.
       * @return This builder for chaining.
       */
      public Builder setMountPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        mountPath_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MountPath corresponds to the original VolumeMount.
       * </pre>
       *
       * <code>optional string mountPath = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMountPath() {
        mountPath_ = getDefaultInstance().getMountPath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MountPath corresponds to the original VolumeMount.
       * </pre>
       *
       * <code>optional string mountPath = 2;</code>
       * @param value The bytes for mountPath to set.
       * @return This builder for chaining.
       */
      public Builder setMountPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        mountPath_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean readOnly_ ;
      /**
       * <pre>
       * ReadOnly corresponds to the original VolumeMount.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return Whether the readOnly field is set.
       */
      @java.lang.Override
      public boolean hasReadOnly() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * ReadOnly corresponds to the original VolumeMount.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return The readOnly.
       */
      @java.lang.Override
      public boolean getReadOnly() {
        return readOnly_;
      }
      /**
       * <pre>
       * ReadOnly corresponds to the original VolumeMount.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @param value The readOnly to set.
       * @return This builder for chaining.
       */
      public Builder setReadOnly(boolean value) {

        readOnly_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ReadOnly corresponds to the original VolumeMount.
       * +optional
       * </pre>
       *
       * <code>optional bool readOnly = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readOnly_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object recursiveReadOnly_ = "";
      /**
       * <pre>
       * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
       * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
       * depending on the mount result.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 4;</code>
       * @return Whether the recursiveReadOnly field is set.
       */
      public boolean hasRecursiveReadOnly() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
       * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
       * depending on the mount result.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 4;</code>
       * @return The recursiveReadOnly.
       */
      public java.lang.String getRecursiveReadOnly() {
        java.lang.Object ref = recursiveReadOnly_;
        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()) {
            recursiveReadOnly_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
       * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
       * depending on the mount result.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 4;</code>
       * @return The bytes for recursiveReadOnly.
       */
      public com.google.protobuf.ByteString
          getRecursiveReadOnlyBytes() {
        java.lang.Object ref = recursiveReadOnly_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          recursiveReadOnly_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
       * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
       * depending on the mount result.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 4;</code>
       * @param value The recursiveReadOnly to set.
       * @return This builder for chaining.
       */
      public Builder setRecursiveReadOnly(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        recursiveReadOnly_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
       * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
       * depending on the mount result.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearRecursiveReadOnly() {
        recursiveReadOnly_ = getDefaultInstance().getRecursiveReadOnly();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts).
       * An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled,
       * depending on the mount result.
       * +featureGate=RecursiveReadOnlyMounts
       * +optional
       * </pre>
       *
       * <code>optional string recursiveReadOnly = 4;</code>
       * @param value The bytes for recursiveReadOnly to set.
       * @return This builder for chaining.
       */
      public Builder setRecursiveReadOnlyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        recursiveReadOnly_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.VolumeMountStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.VolumeMountStatus)
    private static final io.kubernetes.client.proto.V1.VolumeMountStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.VolumeMountStatus();
    }

    public static io.kubernetes.client.proto.V1.VolumeMountStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VolumeMountStatus>
        PARSER = new com.google.protobuf.AbstractParser<VolumeMountStatus>() {
      @java.lang.Override
      public VolumeMountStatus 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<VolumeMountStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VolumeMountStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeMountStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VolumeNodeAffinityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.VolumeNodeAffinity)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * required specifies hard node constraints that must be met.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
     * @return Whether the required field is set.
     */
    boolean hasRequired();
    /**
     * <pre>
     * required specifies hard node constraints that must be met.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
     * @return The required.
     */
    io.kubernetes.client.proto.V1.NodeSelector getRequired();
    /**
     * <pre>
     * required specifies hard node constraints that must be met.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
     */
    io.kubernetes.client.proto.V1.NodeSelectorOrBuilder getRequiredOrBuilder();
  }
  /**
   * <pre>
   * VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.VolumeNodeAffinity}
   */
  public static final class VolumeNodeAffinity extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.VolumeNodeAffinity)
      VolumeNodeAffinityOrBuilder {
  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= */ "",
        VolumeNodeAffinity.class.getName());
    }
    // Use VolumeNodeAffinity.newBuilder() to construct.
    private VolumeNodeAffinity(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VolumeNodeAffinity() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeNodeAffinity_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeNodeAffinity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.VolumeNodeAffinity.class, io.kubernetes.client.proto.V1.VolumeNodeAffinity.Builder.class);
    }

    private int bitField0_;
    public static final int REQUIRED_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.NodeSelector required_;
    /**
     * <pre>
     * required specifies hard node constraints that must be met.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
     * @return Whether the required field is set.
     */
    @java.lang.Override
    public boolean hasRequired() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * required specifies hard node constraints that must be met.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
     * @return The required.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelector getRequired() {
      return required_ == null ? io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance() : required_;
    }
    /**
     * <pre>
     * required specifies hard node constraints that must be met.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NodeSelectorOrBuilder getRequiredOrBuilder() {
      return required_ == null ? io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance() : required_;
    }

    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, getRequired());
      }
      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, getRequired());
      }
      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.V1.VolumeNodeAffinity)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.VolumeNodeAffinity other = (io.kubernetes.client.proto.V1.VolumeNodeAffinity) obj;

      if (hasRequired() != other.hasRequired()) return false;
      if (hasRequired()) {
        if (!getRequired()
            .equals(other.getRequired())) 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 (hasRequired()) {
        hash = (37 * hash) + REQUIRED_FIELD_NUMBER;
        hash = (53 * hash) + getRequired().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.VolumeNodeAffinity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeNodeAffinity 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.V1.VolumeNodeAffinity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeNodeAffinity 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.V1.VolumeNodeAffinity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeNodeAffinity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.VolumeNodeAffinity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeNodeAffinity 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.V1.VolumeNodeAffinity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.VolumeNodeAffinity 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.V1.VolumeNodeAffinity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeNodeAffinity 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.V1.VolumeNodeAffinity 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>
     * VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.VolumeNodeAffinity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.VolumeNodeAffinity)
        io.kubernetes.client.proto.V1.VolumeNodeAffinityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeNodeAffinity_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeNodeAffinity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.VolumeNodeAffinity.class, io.kubernetes.client.proto.V1.VolumeNodeAffinity.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.VolumeNodeAffinity.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getRequiredFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        required_ = null;
        if (requiredBuilder_ != null) {
          requiredBuilder_.dispose();
          requiredBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeNodeAffinity_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeNodeAffinity getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.VolumeNodeAffinity.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeNodeAffinity build() {
        io.kubernetes.client.proto.V1.VolumeNodeAffinity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeNodeAffinity buildPartial() {
        io.kubernetes.client.proto.V1.VolumeNodeAffinity result = new io.kubernetes.client.proto.V1.VolumeNodeAffinity(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.VolumeNodeAffinity result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.required_ = requiredBuilder_ == null
              ? required_
              : requiredBuilder_.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.V1.VolumeNodeAffinity) {
          return mergeFrom((io.kubernetes.client.proto.V1.VolumeNodeAffinity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.VolumeNodeAffinity other) {
        if (other == io.kubernetes.client.proto.V1.VolumeNodeAffinity.getDefaultInstance()) return this;
        if (other.hasRequired()) {
          mergeRequired(other.getRequired());
        }
        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(
                    getRequiredFieldBuilder().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.V1.NodeSelector required_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelector, io.kubernetes.client.proto.V1.NodeSelector.Builder, io.kubernetes.client.proto.V1.NodeSelectorOrBuilder> requiredBuilder_;
      /**
       * <pre>
       * required specifies hard node constraints that must be met.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
       * @return Whether the required field is set.
       */
      public boolean hasRequired() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * required specifies hard node constraints that must be met.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
       * @return The required.
       */
      public io.kubernetes.client.proto.V1.NodeSelector getRequired() {
        if (requiredBuilder_ == null) {
          return required_ == null ? io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance() : required_;
        } else {
          return requiredBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * required specifies hard node constraints that must be met.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
       */
      public Builder setRequired(io.kubernetes.client.proto.V1.NodeSelector value) {
        if (requiredBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          required_ = value;
        } else {
          requiredBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required specifies hard node constraints that must be met.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
       */
      public Builder setRequired(
          io.kubernetes.client.proto.V1.NodeSelector.Builder builderForValue) {
        if (requiredBuilder_ == null) {
          required_ = builderForValue.build();
        } else {
          requiredBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required specifies hard node constraints that must be met.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
       */
      public Builder mergeRequired(io.kubernetes.client.proto.V1.NodeSelector value) {
        if (requiredBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            required_ != null &&
            required_ != io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance()) {
            getRequiredBuilder().mergeFrom(value);
          } else {
            required_ = value;
          }
        } else {
          requiredBuilder_.mergeFrom(value);
        }
        if (required_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * required specifies hard node constraints that must be met.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
       */
      public Builder clearRequired() {
        bitField0_ = (bitField0_ & ~0x00000001);
        required_ = null;
        if (requiredBuilder_ != null) {
          requiredBuilder_.dispose();
          requiredBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required specifies hard node constraints that must be met.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelector.Builder getRequiredBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRequiredFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * required specifies hard node constraints that must be met.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
       */
      public io.kubernetes.client.proto.V1.NodeSelectorOrBuilder getRequiredOrBuilder() {
        if (requiredBuilder_ != null) {
          return requiredBuilder_.getMessageOrBuilder();
        } else {
          return required_ == null ?
              io.kubernetes.client.proto.V1.NodeSelector.getDefaultInstance() : required_;
        }
      }
      /**
       * <pre>
       * required specifies hard node constraints that must be met.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NodeSelector required = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NodeSelector, io.kubernetes.client.proto.V1.NodeSelector.Builder, io.kubernetes.client.proto.V1.NodeSelectorOrBuilder> 
          getRequiredFieldBuilder() {
        if (requiredBuilder_ == null) {
          requiredBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NodeSelector, io.kubernetes.client.proto.V1.NodeSelector.Builder, io.kubernetes.client.proto.V1.NodeSelectorOrBuilder>(
                  getRequired(),
                  getParentForChildren(),
                  isClean());
          required_ = null;
        }
        return requiredBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.VolumeNodeAffinity)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.VolumeNodeAffinity)
    private static final io.kubernetes.client.proto.V1.VolumeNodeAffinity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.VolumeNodeAffinity();
    }

    public static io.kubernetes.client.proto.V1.VolumeNodeAffinity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VolumeNodeAffinity>
        PARSER = new com.google.protobuf.AbstractParser<VolumeNodeAffinity>() {
      @java.lang.Override
      public VolumeNodeAffinity 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<VolumeNodeAffinity> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VolumeNodeAffinity> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeNodeAffinity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VolumeProjectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.VolumeProjection)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * secret information about the secret data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
     * @return Whether the secret field is set.
     */
    boolean hasSecret();
    /**
     * <pre>
     * secret information about the secret data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
     * @return The secret.
     */
    io.kubernetes.client.proto.V1.SecretProjection getSecret();
    /**
     * <pre>
     * secret information about the secret data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
     */
    io.kubernetes.client.proto.V1.SecretProjectionOrBuilder getSecretOrBuilder();

    /**
     * <pre>
     * downwardAPI information about the downwardAPI data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
     * @return Whether the downwardAPI field is set.
     */
    boolean hasDownwardAPI();
    /**
     * <pre>
     * downwardAPI information about the downwardAPI data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
     * @return The downwardAPI.
     */
    io.kubernetes.client.proto.V1.DownwardAPIProjection getDownwardAPI();
    /**
     * <pre>
     * downwardAPI information about the downwardAPI data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
     */
    io.kubernetes.client.proto.V1.DownwardAPIProjectionOrBuilder getDownwardAPIOrBuilder();

    /**
     * <pre>
     * configMap information about the configMap data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
     * @return Whether the configMap field is set.
     */
    boolean hasConfigMap();
    /**
     * <pre>
     * configMap information about the configMap data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
     * @return The configMap.
     */
    io.kubernetes.client.proto.V1.ConfigMapProjection getConfigMap();
    /**
     * <pre>
     * configMap information about the configMap data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
     */
    io.kubernetes.client.proto.V1.ConfigMapProjectionOrBuilder getConfigMapOrBuilder();

    /**
     * <pre>
     * serviceAccountToken is information about the serviceAccountToken data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
     * @return Whether the serviceAccountToken field is set.
     */
    boolean hasServiceAccountToken();
    /**
     * <pre>
     * serviceAccountToken is information about the serviceAccountToken data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
     * @return The serviceAccountToken.
     */
    io.kubernetes.client.proto.V1.ServiceAccountTokenProjection getServiceAccountToken();
    /**
     * <pre>
     * serviceAccountToken is information about the serviceAccountToken data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
     */
    io.kubernetes.client.proto.V1.ServiceAccountTokenProjectionOrBuilder getServiceAccountTokenOrBuilder();

    /**
     * <pre>
     * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
     * of ClusterTrustBundle objects in an auto-updating file.
     *
     * Alpha, gated by the ClusterTrustBundleProjection feature gate.
     *
     * ClusterTrustBundle objects can either be selected by name, or by the
     * combination of signer name and a label selector.
     *
     * Kubelet performs aggressive normalization of the PEM contents written
     * into the pod filesystem.  Esoteric PEM features such as inter-block
     * comments and block headers are stripped.  Certificates are deduplicated.
     * The ordering of certificates within the file is arbitrary, and Kubelet
     * may change the order over time.
     *
     * +featureGate=ClusterTrustBundleProjection
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
     * @return Whether the clusterTrustBundle field is set.
     */
    boolean hasClusterTrustBundle();
    /**
     * <pre>
     * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
     * of ClusterTrustBundle objects in an auto-updating file.
     *
     * Alpha, gated by the ClusterTrustBundleProjection feature gate.
     *
     * ClusterTrustBundle objects can either be selected by name, or by the
     * combination of signer name and a label selector.
     *
     * Kubelet performs aggressive normalization of the PEM contents written
     * into the pod filesystem.  Esoteric PEM features such as inter-block
     * comments and block headers are stripped.  Certificates are deduplicated.
     * The ordering of certificates within the file is arbitrary, and Kubelet
     * may change the order over time.
     *
     * +featureGate=ClusterTrustBundleProjection
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
     * @return The clusterTrustBundle.
     */
    io.kubernetes.client.proto.V1.ClusterTrustBundleProjection getClusterTrustBundle();
    /**
     * <pre>
     * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
     * of ClusterTrustBundle objects in an auto-updating file.
     *
     * Alpha, gated by the ClusterTrustBundleProjection feature gate.
     *
     * ClusterTrustBundle objects can either be selected by name, or by the
     * combination of signer name and a label selector.
     *
     * Kubelet performs aggressive normalization of the PEM contents written
     * into the pod filesystem.  Esoteric PEM features such as inter-block
     * comments and block headers are stripped.  Certificates are deduplicated.
     * The ordering of certificates within the file is arbitrary, and Kubelet
     * may change the order over time.
     *
     * +featureGate=ClusterTrustBundleProjection
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
     */
    io.kubernetes.client.proto.V1.ClusterTrustBundleProjectionOrBuilder getClusterTrustBundleOrBuilder();
  }
  /**
   * <pre>
   * Projection that may be projected along with other supported volume types
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.VolumeProjection}
   */
  public static final class VolumeProjection extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.VolumeProjection)
      VolumeProjectionOrBuilder {
  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= */ "",
        VolumeProjection.class.getName());
    }
    // Use VolumeProjection.newBuilder() to construct.
    private VolumeProjection(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VolumeProjection() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeProjection_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeProjection_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.VolumeProjection.class, io.kubernetes.client.proto.V1.VolumeProjection.Builder.class);
    }

    private int bitField0_;
    public static final int SECRET_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.SecretProjection secret_;
    /**
     * <pre>
     * secret information about the secret data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
     * @return Whether the secret field is set.
     */
    @java.lang.Override
    public boolean hasSecret() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * secret information about the secret data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
     * @return The secret.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretProjection getSecret() {
      return secret_ == null ? io.kubernetes.client.proto.V1.SecretProjection.getDefaultInstance() : secret_;
    }
    /**
     * <pre>
     * secret information about the secret data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretProjectionOrBuilder getSecretOrBuilder() {
      return secret_ == null ? io.kubernetes.client.proto.V1.SecretProjection.getDefaultInstance() : secret_;
    }

    public static final int DOWNWARDAPI_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.DownwardAPIProjection downwardAPI_;
    /**
     * <pre>
     * downwardAPI information about the downwardAPI data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
     * @return Whether the downwardAPI field is set.
     */
    @java.lang.Override
    public boolean hasDownwardAPI() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * downwardAPI information about the downwardAPI data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
     * @return The downwardAPI.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.DownwardAPIProjection getDownwardAPI() {
      return downwardAPI_ == null ? io.kubernetes.client.proto.V1.DownwardAPIProjection.getDefaultInstance() : downwardAPI_;
    }
    /**
     * <pre>
     * downwardAPI information about the downwardAPI data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.DownwardAPIProjectionOrBuilder getDownwardAPIOrBuilder() {
      return downwardAPI_ == null ? io.kubernetes.client.proto.V1.DownwardAPIProjection.getDefaultInstance() : downwardAPI_;
    }

    public static final int CONFIGMAP_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.ConfigMapProjection configMap_;
    /**
     * <pre>
     * configMap information about the configMap data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
     * @return Whether the configMap field is set.
     */
    @java.lang.Override
    public boolean hasConfigMap() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * configMap information about the configMap data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
     * @return The configMap.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapProjection getConfigMap() {
      return configMap_ == null ? io.kubernetes.client.proto.V1.ConfigMapProjection.getDefaultInstance() : configMap_;
    }
    /**
     * <pre>
     * configMap information about the configMap data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapProjectionOrBuilder getConfigMapOrBuilder() {
      return configMap_ == null ? io.kubernetes.client.proto.V1.ConfigMapProjection.getDefaultInstance() : configMap_;
    }

    public static final int SERVICEACCOUNTTOKEN_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.V1.ServiceAccountTokenProjection serviceAccountToken_;
    /**
     * <pre>
     * serviceAccountToken is information about the serviceAccountToken data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
     * @return Whether the serviceAccountToken field is set.
     */
    @java.lang.Override
    public boolean hasServiceAccountToken() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * serviceAccountToken is information about the serviceAccountToken data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
     * @return The serviceAccountToken.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceAccountTokenProjection getServiceAccountToken() {
      return serviceAccountToken_ == null ? io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.getDefaultInstance() : serviceAccountToken_;
    }
    /**
     * <pre>
     * serviceAccountToken is information about the serviceAccountToken data to project
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ServiceAccountTokenProjectionOrBuilder getServiceAccountTokenOrBuilder() {
      return serviceAccountToken_ == null ? io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.getDefaultInstance() : serviceAccountToken_;
    }

    public static final int CLUSTERTRUSTBUNDLE_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1.ClusterTrustBundleProjection clusterTrustBundle_;
    /**
     * <pre>
     * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
     * of ClusterTrustBundle objects in an auto-updating file.
     *
     * Alpha, gated by the ClusterTrustBundleProjection feature gate.
     *
     * ClusterTrustBundle objects can either be selected by name, or by the
     * combination of signer name and a label selector.
     *
     * Kubelet performs aggressive normalization of the PEM contents written
     * into the pod filesystem.  Esoteric PEM features such as inter-block
     * comments and block headers are stripped.  Certificates are deduplicated.
     * The ordering of certificates within the file is arbitrary, and Kubelet
     * may change the order over time.
     *
     * +featureGate=ClusterTrustBundleProjection
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
     * @return Whether the clusterTrustBundle field is set.
     */
    @java.lang.Override
    public boolean hasClusterTrustBundle() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
     * of ClusterTrustBundle objects in an auto-updating file.
     *
     * Alpha, gated by the ClusterTrustBundleProjection feature gate.
     *
     * ClusterTrustBundle objects can either be selected by name, or by the
     * combination of signer name and a label selector.
     *
     * Kubelet performs aggressive normalization of the PEM contents written
     * into the pod filesystem.  Esoteric PEM features such as inter-block
     * comments and block headers are stripped.  Certificates are deduplicated.
     * The ordering of certificates within the file is arbitrary, and Kubelet
     * may change the order over time.
     *
     * +featureGate=ClusterTrustBundleProjection
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
     * @return The clusterTrustBundle.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ClusterTrustBundleProjection getClusterTrustBundle() {
      return clusterTrustBundle_ == null ? io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.getDefaultInstance() : clusterTrustBundle_;
    }
    /**
     * <pre>
     * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
     * of ClusterTrustBundle objects in an auto-updating file.
     *
     * Alpha, gated by the ClusterTrustBundleProjection feature gate.
     *
     * ClusterTrustBundle objects can either be selected by name, or by the
     * combination of signer name and a label selector.
     *
     * Kubelet performs aggressive normalization of the PEM contents written
     * into the pod filesystem.  Esoteric PEM features such as inter-block
     * comments and block headers are stripped.  Certificates are deduplicated.
     * The ordering of certificates within the file is arbitrary, and Kubelet
     * may change the order over time.
     *
     * +featureGate=ClusterTrustBundleProjection
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ClusterTrustBundleProjectionOrBuilder getClusterTrustBundleOrBuilder() {
      return clusterTrustBundle_ == null ? io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.getDefaultInstance() : clusterTrustBundle_;
    }

    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, getSecret());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getDownwardAPI());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getConfigMap());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getServiceAccountToken());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getClusterTrustBundle());
      }
      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, getSecret());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDownwardAPI());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getConfigMap());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getServiceAccountToken());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getClusterTrustBundle());
      }
      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.V1.VolumeProjection)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.VolumeProjection other = (io.kubernetes.client.proto.V1.VolumeProjection) obj;

      if (hasSecret() != other.hasSecret()) return false;
      if (hasSecret()) {
        if (!getSecret()
            .equals(other.getSecret())) return false;
      }
      if (hasDownwardAPI() != other.hasDownwardAPI()) return false;
      if (hasDownwardAPI()) {
        if (!getDownwardAPI()
            .equals(other.getDownwardAPI())) return false;
      }
      if (hasConfigMap() != other.hasConfigMap()) return false;
      if (hasConfigMap()) {
        if (!getConfigMap()
            .equals(other.getConfigMap())) return false;
      }
      if (hasServiceAccountToken() != other.hasServiceAccountToken()) return false;
      if (hasServiceAccountToken()) {
        if (!getServiceAccountToken()
            .equals(other.getServiceAccountToken())) return false;
      }
      if (hasClusterTrustBundle() != other.hasClusterTrustBundle()) return false;
      if (hasClusterTrustBundle()) {
        if (!getClusterTrustBundle()
            .equals(other.getClusterTrustBundle())) 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 (hasSecret()) {
        hash = (37 * hash) + SECRET_FIELD_NUMBER;
        hash = (53 * hash) + getSecret().hashCode();
      }
      if (hasDownwardAPI()) {
        hash = (37 * hash) + DOWNWARDAPI_FIELD_NUMBER;
        hash = (53 * hash) + getDownwardAPI().hashCode();
      }
      if (hasConfigMap()) {
        hash = (37 * hash) + CONFIGMAP_FIELD_NUMBER;
        hash = (53 * hash) + getConfigMap().hashCode();
      }
      if (hasServiceAccountToken()) {
        hash = (37 * hash) + SERVICEACCOUNTTOKEN_FIELD_NUMBER;
        hash = (53 * hash) + getServiceAccountToken().hashCode();
      }
      if (hasClusterTrustBundle()) {
        hash = (37 * hash) + CLUSTERTRUSTBUNDLE_FIELD_NUMBER;
        hash = (53 * hash) + getClusterTrustBundle().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.VolumeProjection parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeProjection 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.V1.VolumeProjection parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeProjection 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.V1.VolumeProjection parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeProjection parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.VolumeProjection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeProjection 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.V1.VolumeProjection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.VolumeProjection 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.V1.VolumeProjection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeProjection 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.V1.VolumeProjection 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>
     * Projection that may be projected along with other supported volume types
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.VolumeProjection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.VolumeProjection)
        io.kubernetes.client.proto.V1.VolumeProjectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeProjection_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeProjection_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.VolumeProjection.class, io.kubernetes.client.proto.V1.VolumeProjection.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.VolumeProjection.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSecretFieldBuilder();
          getDownwardAPIFieldBuilder();
          getConfigMapFieldBuilder();
          getServiceAccountTokenFieldBuilder();
          getClusterTrustBundleFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        secret_ = null;
        if (secretBuilder_ != null) {
          secretBuilder_.dispose();
          secretBuilder_ = null;
        }
        downwardAPI_ = null;
        if (downwardAPIBuilder_ != null) {
          downwardAPIBuilder_.dispose();
          downwardAPIBuilder_ = null;
        }
        configMap_ = null;
        if (configMapBuilder_ != null) {
          configMapBuilder_.dispose();
          configMapBuilder_ = null;
        }
        serviceAccountToken_ = null;
        if (serviceAccountTokenBuilder_ != null) {
          serviceAccountTokenBuilder_.dispose();
          serviceAccountTokenBuilder_ = null;
        }
        clusterTrustBundle_ = null;
        if (clusterTrustBundleBuilder_ != null) {
          clusterTrustBundleBuilder_.dispose();
          clusterTrustBundleBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeProjection_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeProjection getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.VolumeProjection.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeProjection build() {
        io.kubernetes.client.proto.V1.VolumeProjection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeProjection buildPartial() {
        io.kubernetes.client.proto.V1.VolumeProjection result = new io.kubernetes.client.proto.V1.VolumeProjection(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.VolumeProjection result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.secret_ = secretBuilder_ == null
              ? secret_
              : secretBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.downwardAPI_ = downwardAPIBuilder_ == null
              ? downwardAPI_
              : downwardAPIBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.configMap_ = configMapBuilder_ == null
              ? configMap_
              : configMapBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.serviceAccountToken_ = serviceAccountTokenBuilder_ == null
              ? serviceAccountToken_
              : serviceAccountTokenBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.clusterTrustBundle_ = clusterTrustBundleBuilder_ == null
              ? clusterTrustBundle_
              : clusterTrustBundleBuilder_.build();
          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.V1.VolumeProjection) {
          return mergeFrom((io.kubernetes.client.proto.V1.VolumeProjection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.VolumeProjection other) {
        if (other == io.kubernetes.client.proto.V1.VolumeProjection.getDefaultInstance()) return this;
        if (other.hasSecret()) {
          mergeSecret(other.getSecret());
        }
        if (other.hasDownwardAPI()) {
          mergeDownwardAPI(other.getDownwardAPI());
        }
        if (other.hasConfigMap()) {
          mergeConfigMap(other.getConfigMap());
        }
        if (other.hasServiceAccountToken()) {
          mergeServiceAccountToken(other.getServiceAccountToken());
        }
        if (other.hasClusterTrustBundle()) {
          mergeClusterTrustBundle(other.getClusterTrustBundle());
        }
        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(
                    getSecretFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getDownwardAPIFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getConfigMapFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getServiceAccountTokenFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getClusterTrustBundleFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.V1.SecretProjection secret_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretProjection, io.kubernetes.client.proto.V1.SecretProjection.Builder, io.kubernetes.client.proto.V1.SecretProjectionOrBuilder> secretBuilder_;
      /**
       * <pre>
       * secret information about the secret data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
       * @return Whether the secret field is set.
       */
      public boolean hasSecret() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * secret information about the secret data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
       * @return The secret.
       */
      public io.kubernetes.client.proto.V1.SecretProjection getSecret() {
        if (secretBuilder_ == null) {
          return secret_ == null ? io.kubernetes.client.proto.V1.SecretProjection.getDefaultInstance() : secret_;
        } else {
          return secretBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secret information about the secret data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
       */
      public Builder setSecret(io.kubernetes.client.proto.V1.SecretProjection value) {
        if (secretBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secret_ = value;
        } else {
          secretBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secret information about the secret data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
       */
      public Builder setSecret(
          io.kubernetes.client.proto.V1.SecretProjection.Builder builderForValue) {
        if (secretBuilder_ == null) {
          secret_ = builderForValue.build();
        } else {
          secretBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secret information about the secret data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
       */
      public Builder mergeSecret(io.kubernetes.client.proto.V1.SecretProjection value) {
        if (secretBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            secret_ != null &&
            secret_ != io.kubernetes.client.proto.V1.SecretProjection.getDefaultInstance()) {
            getSecretBuilder().mergeFrom(value);
          } else {
            secret_ = value;
          }
        } else {
          secretBuilder_.mergeFrom(value);
        }
        if (secret_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secret information about the secret data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
       */
      public Builder clearSecret() {
        bitField0_ = (bitField0_ & ~0x00000001);
        secret_ = null;
        if (secretBuilder_ != null) {
          secretBuilder_.dispose();
          secretBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secret information about the secret data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
       */
      public io.kubernetes.client.proto.V1.SecretProjection.Builder getSecretBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSecretFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secret information about the secret data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
       */
      public io.kubernetes.client.proto.V1.SecretProjectionOrBuilder getSecretOrBuilder() {
        if (secretBuilder_ != null) {
          return secretBuilder_.getMessageOrBuilder();
        } else {
          return secret_ == null ?
              io.kubernetes.client.proto.V1.SecretProjection.getDefaultInstance() : secret_;
        }
      }
      /**
       * <pre>
       * secret information about the secret data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretProjection secret = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretProjection, io.kubernetes.client.proto.V1.SecretProjection.Builder, io.kubernetes.client.proto.V1.SecretProjectionOrBuilder> 
          getSecretFieldBuilder() {
        if (secretBuilder_ == null) {
          secretBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretProjection, io.kubernetes.client.proto.V1.SecretProjection.Builder, io.kubernetes.client.proto.V1.SecretProjectionOrBuilder>(
                  getSecret(),
                  getParentForChildren(),
                  isClean());
          secret_ = null;
        }
        return secretBuilder_;
      }

      private io.kubernetes.client.proto.V1.DownwardAPIProjection downwardAPI_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.DownwardAPIProjection, io.kubernetes.client.proto.V1.DownwardAPIProjection.Builder, io.kubernetes.client.proto.V1.DownwardAPIProjectionOrBuilder> downwardAPIBuilder_;
      /**
       * <pre>
       * downwardAPI information about the downwardAPI data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
       * @return Whether the downwardAPI field is set.
       */
      public boolean hasDownwardAPI() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * downwardAPI information about the downwardAPI data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
       * @return The downwardAPI.
       */
      public io.kubernetes.client.proto.V1.DownwardAPIProjection getDownwardAPI() {
        if (downwardAPIBuilder_ == null) {
          return downwardAPI_ == null ? io.kubernetes.client.proto.V1.DownwardAPIProjection.getDefaultInstance() : downwardAPI_;
        } else {
          return downwardAPIBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * downwardAPI information about the downwardAPI data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
       */
      public Builder setDownwardAPI(io.kubernetes.client.proto.V1.DownwardAPIProjection value) {
        if (downwardAPIBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          downwardAPI_ = value;
        } else {
          downwardAPIBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * downwardAPI information about the downwardAPI data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
       */
      public Builder setDownwardAPI(
          io.kubernetes.client.proto.V1.DownwardAPIProjection.Builder builderForValue) {
        if (downwardAPIBuilder_ == null) {
          downwardAPI_ = builderForValue.build();
        } else {
          downwardAPIBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * downwardAPI information about the downwardAPI data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
       */
      public Builder mergeDownwardAPI(io.kubernetes.client.proto.V1.DownwardAPIProjection value) {
        if (downwardAPIBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            downwardAPI_ != null &&
            downwardAPI_ != io.kubernetes.client.proto.V1.DownwardAPIProjection.getDefaultInstance()) {
            getDownwardAPIBuilder().mergeFrom(value);
          } else {
            downwardAPI_ = value;
          }
        } else {
          downwardAPIBuilder_.mergeFrom(value);
        }
        if (downwardAPI_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * downwardAPI information about the downwardAPI data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
       */
      public Builder clearDownwardAPI() {
        bitField0_ = (bitField0_ & ~0x00000002);
        downwardAPI_ = null;
        if (downwardAPIBuilder_ != null) {
          downwardAPIBuilder_.dispose();
          downwardAPIBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * downwardAPI information about the downwardAPI data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIProjection.Builder getDownwardAPIBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getDownwardAPIFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * downwardAPI information about the downwardAPI data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIProjectionOrBuilder getDownwardAPIOrBuilder() {
        if (downwardAPIBuilder_ != null) {
          return downwardAPIBuilder_.getMessageOrBuilder();
        } else {
          return downwardAPI_ == null ?
              io.kubernetes.client.proto.V1.DownwardAPIProjection.getDefaultInstance() : downwardAPI_;
        }
      }
      /**
       * <pre>
       * downwardAPI information about the downwardAPI data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIProjection downwardAPI = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.DownwardAPIProjection, io.kubernetes.client.proto.V1.DownwardAPIProjection.Builder, io.kubernetes.client.proto.V1.DownwardAPIProjectionOrBuilder> 
          getDownwardAPIFieldBuilder() {
        if (downwardAPIBuilder_ == null) {
          downwardAPIBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.DownwardAPIProjection, io.kubernetes.client.proto.V1.DownwardAPIProjection.Builder, io.kubernetes.client.proto.V1.DownwardAPIProjectionOrBuilder>(
                  getDownwardAPI(),
                  getParentForChildren(),
                  isClean());
          downwardAPI_ = null;
        }
        return downwardAPIBuilder_;
      }

      private io.kubernetes.client.proto.V1.ConfigMapProjection configMap_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMapProjection, io.kubernetes.client.proto.V1.ConfigMapProjection.Builder, io.kubernetes.client.proto.V1.ConfigMapProjectionOrBuilder> configMapBuilder_;
      /**
       * <pre>
       * configMap information about the configMap data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
       * @return Whether the configMap field is set.
       */
      public boolean hasConfigMap() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * configMap information about the configMap data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
       * @return The configMap.
       */
      public io.kubernetes.client.proto.V1.ConfigMapProjection getConfigMap() {
        if (configMapBuilder_ == null) {
          return configMap_ == null ? io.kubernetes.client.proto.V1.ConfigMapProjection.getDefaultInstance() : configMap_;
        } else {
          return configMapBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * configMap information about the configMap data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
       */
      public Builder setConfigMap(io.kubernetes.client.proto.V1.ConfigMapProjection value) {
        if (configMapBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configMap_ = value;
        } else {
          configMapBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * configMap information about the configMap data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
       */
      public Builder setConfigMap(
          io.kubernetes.client.proto.V1.ConfigMapProjection.Builder builderForValue) {
        if (configMapBuilder_ == null) {
          configMap_ = builderForValue.build();
        } else {
          configMapBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * configMap information about the configMap data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
       */
      public Builder mergeConfigMap(io.kubernetes.client.proto.V1.ConfigMapProjection value) {
        if (configMapBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            configMap_ != null &&
            configMap_ != io.kubernetes.client.proto.V1.ConfigMapProjection.getDefaultInstance()) {
            getConfigMapBuilder().mergeFrom(value);
          } else {
            configMap_ = value;
          }
        } else {
          configMapBuilder_.mergeFrom(value);
        }
        if (configMap_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * configMap information about the configMap data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
       */
      public Builder clearConfigMap() {
        bitField0_ = (bitField0_ & ~0x00000004);
        configMap_ = null;
        if (configMapBuilder_ != null) {
          configMapBuilder_.dispose();
          configMapBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * configMap information about the configMap data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ConfigMapProjection.Builder getConfigMapBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getConfigMapFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * configMap information about the configMap data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
       */
      public io.kubernetes.client.proto.V1.ConfigMapProjectionOrBuilder getConfigMapOrBuilder() {
        if (configMapBuilder_ != null) {
          return configMapBuilder_.getMessageOrBuilder();
        } else {
          return configMap_ == null ?
              io.kubernetes.client.proto.V1.ConfigMapProjection.getDefaultInstance() : configMap_;
        }
      }
      /**
       * <pre>
       * configMap information about the configMap data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapProjection configMap = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMapProjection, io.kubernetes.client.proto.V1.ConfigMapProjection.Builder, io.kubernetes.client.proto.V1.ConfigMapProjectionOrBuilder> 
          getConfigMapFieldBuilder() {
        if (configMapBuilder_ == null) {
          configMapBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ConfigMapProjection, io.kubernetes.client.proto.V1.ConfigMapProjection.Builder, io.kubernetes.client.proto.V1.ConfigMapProjectionOrBuilder>(
                  getConfigMap(),
                  getParentForChildren(),
                  isClean());
          configMap_ = null;
        }
        return configMapBuilder_;
      }

      private io.kubernetes.client.proto.V1.ServiceAccountTokenProjection serviceAccountToken_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ServiceAccountTokenProjection, io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.Builder, io.kubernetes.client.proto.V1.ServiceAccountTokenProjectionOrBuilder> serviceAccountTokenBuilder_;
      /**
       * <pre>
       * serviceAccountToken is information about the serviceAccountToken data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
       * @return Whether the serviceAccountToken field is set.
       */
      public boolean hasServiceAccountToken() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * serviceAccountToken is information about the serviceAccountToken data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
       * @return The serviceAccountToken.
       */
      public io.kubernetes.client.proto.V1.ServiceAccountTokenProjection getServiceAccountToken() {
        if (serviceAccountTokenBuilder_ == null) {
          return serviceAccountToken_ == null ? io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.getDefaultInstance() : serviceAccountToken_;
        } else {
          return serviceAccountTokenBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * serviceAccountToken is information about the serviceAccountToken data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
       */
      public Builder setServiceAccountToken(io.kubernetes.client.proto.V1.ServiceAccountTokenProjection value) {
        if (serviceAccountTokenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          serviceAccountToken_ = value;
        } else {
          serviceAccountTokenBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * serviceAccountToken is information about the serviceAccountToken data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
       */
      public Builder setServiceAccountToken(
          io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.Builder builderForValue) {
        if (serviceAccountTokenBuilder_ == null) {
          serviceAccountToken_ = builderForValue.build();
        } else {
          serviceAccountTokenBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * serviceAccountToken is information about the serviceAccountToken data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
       */
      public Builder mergeServiceAccountToken(io.kubernetes.client.proto.V1.ServiceAccountTokenProjection value) {
        if (serviceAccountTokenBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            serviceAccountToken_ != null &&
            serviceAccountToken_ != io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.getDefaultInstance()) {
            getServiceAccountTokenBuilder().mergeFrom(value);
          } else {
            serviceAccountToken_ = value;
          }
        } else {
          serviceAccountTokenBuilder_.mergeFrom(value);
        }
        if (serviceAccountToken_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * serviceAccountToken is information about the serviceAccountToken data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
       */
      public Builder clearServiceAccountToken() {
        bitField0_ = (bitField0_ & ~0x00000008);
        serviceAccountToken_ = null;
        if (serviceAccountTokenBuilder_ != null) {
          serviceAccountTokenBuilder_.dispose();
          serviceAccountTokenBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * serviceAccountToken is information about the serviceAccountToken data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.Builder getServiceAccountTokenBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getServiceAccountTokenFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * serviceAccountToken is information about the serviceAccountToken data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
       */
      public io.kubernetes.client.proto.V1.ServiceAccountTokenProjectionOrBuilder getServiceAccountTokenOrBuilder() {
        if (serviceAccountTokenBuilder_ != null) {
          return serviceAccountTokenBuilder_.getMessageOrBuilder();
        } else {
          return serviceAccountToken_ == null ?
              io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.getDefaultInstance() : serviceAccountToken_;
        }
      }
      /**
       * <pre>
       * serviceAccountToken is information about the serviceAccountToken data to project
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ServiceAccountTokenProjection serviceAccountToken = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ServiceAccountTokenProjection, io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.Builder, io.kubernetes.client.proto.V1.ServiceAccountTokenProjectionOrBuilder> 
          getServiceAccountTokenFieldBuilder() {
        if (serviceAccountTokenBuilder_ == null) {
          serviceAccountTokenBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ServiceAccountTokenProjection, io.kubernetes.client.proto.V1.ServiceAccountTokenProjection.Builder, io.kubernetes.client.proto.V1.ServiceAccountTokenProjectionOrBuilder>(
                  getServiceAccountToken(),
                  getParentForChildren(),
                  isClean());
          serviceAccountToken_ = null;
        }
        return serviceAccountTokenBuilder_;
      }

      private io.kubernetes.client.proto.V1.ClusterTrustBundleProjection clusterTrustBundle_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ClusterTrustBundleProjection, io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.Builder, io.kubernetes.client.proto.V1.ClusterTrustBundleProjectionOrBuilder> clusterTrustBundleBuilder_;
      /**
       * <pre>
       * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
       * of ClusterTrustBundle objects in an auto-updating file.
       *
       * Alpha, gated by the ClusterTrustBundleProjection feature gate.
       *
       * ClusterTrustBundle objects can either be selected by name, or by the
       * combination of signer name and a label selector.
       *
       * Kubelet performs aggressive normalization of the PEM contents written
       * into the pod filesystem.  Esoteric PEM features such as inter-block
       * comments and block headers are stripped.  Certificates are deduplicated.
       * The ordering of certificates within the file is arbitrary, and Kubelet
       * may change the order over time.
       *
       * +featureGate=ClusterTrustBundleProjection
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
       * @return Whether the clusterTrustBundle field is set.
       */
      public boolean hasClusterTrustBundle() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
       * of ClusterTrustBundle objects in an auto-updating file.
       *
       * Alpha, gated by the ClusterTrustBundleProjection feature gate.
       *
       * ClusterTrustBundle objects can either be selected by name, or by the
       * combination of signer name and a label selector.
       *
       * Kubelet performs aggressive normalization of the PEM contents written
       * into the pod filesystem.  Esoteric PEM features such as inter-block
       * comments and block headers are stripped.  Certificates are deduplicated.
       * The ordering of certificates within the file is arbitrary, and Kubelet
       * may change the order over time.
       *
       * +featureGate=ClusterTrustBundleProjection
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
       * @return The clusterTrustBundle.
       */
      public io.kubernetes.client.proto.V1.ClusterTrustBundleProjection getClusterTrustBundle() {
        if (clusterTrustBundleBuilder_ == null) {
          return clusterTrustBundle_ == null ? io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.getDefaultInstance() : clusterTrustBundle_;
        } else {
          return clusterTrustBundleBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
       * of ClusterTrustBundle objects in an auto-updating file.
       *
       * Alpha, gated by the ClusterTrustBundleProjection feature gate.
       *
       * ClusterTrustBundle objects can either be selected by name, or by the
       * combination of signer name and a label selector.
       *
       * Kubelet performs aggressive normalization of the PEM contents written
       * into the pod filesystem.  Esoteric PEM features such as inter-block
       * comments and block headers are stripped.  Certificates are deduplicated.
       * The ordering of certificates within the file is arbitrary, and Kubelet
       * may change the order over time.
       *
       * +featureGate=ClusterTrustBundleProjection
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
       */
      public Builder setClusterTrustBundle(io.kubernetes.client.proto.V1.ClusterTrustBundleProjection value) {
        if (clusterTrustBundleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterTrustBundle_ = value;
        } else {
          clusterTrustBundleBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
       * of ClusterTrustBundle objects in an auto-updating file.
       *
       * Alpha, gated by the ClusterTrustBundleProjection feature gate.
       *
       * ClusterTrustBundle objects can either be selected by name, or by the
       * combination of signer name and a label selector.
       *
       * Kubelet performs aggressive normalization of the PEM contents written
       * into the pod filesystem.  Esoteric PEM features such as inter-block
       * comments and block headers are stripped.  Certificates are deduplicated.
       * The ordering of certificates within the file is arbitrary, and Kubelet
       * may change the order over time.
       *
       * +featureGate=ClusterTrustBundleProjection
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
       */
      public Builder setClusterTrustBundle(
          io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.Builder builderForValue) {
        if (clusterTrustBundleBuilder_ == null) {
          clusterTrustBundle_ = builderForValue.build();
        } else {
          clusterTrustBundleBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
       * of ClusterTrustBundle objects in an auto-updating file.
       *
       * Alpha, gated by the ClusterTrustBundleProjection feature gate.
       *
       * ClusterTrustBundle objects can either be selected by name, or by the
       * combination of signer name and a label selector.
       *
       * Kubelet performs aggressive normalization of the PEM contents written
       * into the pod filesystem.  Esoteric PEM features such as inter-block
       * comments and block headers are stripped.  Certificates are deduplicated.
       * The ordering of certificates within the file is arbitrary, and Kubelet
       * may change the order over time.
       *
       * +featureGate=ClusterTrustBundleProjection
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
       */
      public Builder mergeClusterTrustBundle(io.kubernetes.client.proto.V1.ClusterTrustBundleProjection value) {
        if (clusterTrustBundleBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            clusterTrustBundle_ != null &&
            clusterTrustBundle_ != io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.getDefaultInstance()) {
            getClusterTrustBundleBuilder().mergeFrom(value);
          } else {
            clusterTrustBundle_ = value;
          }
        } else {
          clusterTrustBundleBuilder_.mergeFrom(value);
        }
        if (clusterTrustBundle_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
       * of ClusterTrustBundle objects in an auto-updating file.
       *
       * Alpha, gated by the ClusterTrustBundleProjection feature gate.
       *
       * ClusterTrustBundle objects can either be selected by name, or by the
       * combination of signer name and a label selector.
       *
       * Kubelet performs aggressive normalization of the PEM contents written
       * into the pod filesystem.  Esoteric PEM features such as inter-block
       * comments and block headers are stripped.  Certificates are deduplicated.
       * The ordering of certificates within the file is arbitrary, and Kubelet
       * may change the order over time.
       *
       * +featureGate=ClusterTrustBundleProjection
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
       */
      public Builder clearClusterTrustBundle() {
        bitField0_ = (bitField0_ & ~0x00000010);
        clusterTrustBundle_ = null;
        if (clusterTrustBundleBuilder_ != null) {
          clusterTrustBundleBuilder_.dispose();
          clusterTrustBundleBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
       * of ClusterTrustBundle objects in an auto-updating file.
       *
       * Alpha, gated by the ClusterTrustBundleProjection feature gate.
       *
       * ClusterTrustBundle objects can either be selected by name, or by the
       * combination of signer name and a label selector.
       *
       * Kubelet performs aggressive normalization of the PEM contents written
       * into the pod filesystem.  Esoteric PEM features such as inter-block
       * comments and block headers are stripped.  Certificates are deduplicated.
       * The ordering of certificates within the file is arbitrary, and Kubelet
       * may change the order over time.
       *
       * +featureGate=ClusterTrustBundleProjection
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
       */
      public io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.Builder getClusterTrustBundleBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getClusterTrustBundleFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
       * of ClusterTrustBundle objects in an auto-updating file.
       *
       * Alpha, gated by the ClusterTrustBundleProjection feature gate.
       *
       * ClusterTrustBundle objects can either be selected by name, or by the
       * combination of signer name and a label selector.
       *
       * Kubelet performs aggressive normalization of the PEM contents written
       * into the pod filesystem.  Esoteric PEM features such as inter-block
       * comments and block headers are stripped.  Certificates are deduplicated.
       * The ordering of certificates within the file is arbitrary, and Kubelet
       * may change the order over time.
       *
       * +featureGate=ClusterTrustBundleProjection
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
       */
      public io.kubernetes.client.proto.V1.ClusterTrustBundleProjectionOrBuilder getClusterTrustBundleOrBuilder() {
        if (clusterTrustBundleBuilder_ != null) {
          return clusterTrustBundleBuilder_.getMessageOrBuilder();
        } else {
          return clusterTrustBundle_ == null ?
              io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.getDefaultInstance() : clusterTrustBundle_;
        }
      }
      /**
       * <pre>
       * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
       * of ClusterTrustBundle objects in an auto-updating file.
       *
       * Alpha, gated by the ClusterTrustBundleProjection feature gate.
       *
       * ClusterTrustBundle objects can either be selected by name, or by the
       * combination of signer name and a label selector.
       *
       * Kubelet performs aggressive normalization of the PEM contents written
       * into the pod filesystem.  Esoteric PEM features such as inter-block
       * comments and block headers are stripped.  Certificates are deduplicated.
       * The ordering of certificates within the file is arbitrary, and Kubelet
       * may change the order over time.
       *
       * +featureGate=ClusterTrustBundleProjection
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ClusterTrustBundleProjection clusterTrustBundle = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ClusterTrustBundleProjection, io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.Builder, io.kubernetes.client.proto.V1.ClusterTrustBundleProjectionOrBuilder> 
          getClusterTrustBundleFieldBuilder() {
        if (clusterTrustBundleBuilder_ == null) {
          clusterTrustBundleBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ClusterTrustBundleProjection, io.kubernetes.client.proto.V1.ClusterTrustBundleProjection.Builder, io.kubernetes.client.proto.V1.ClusterTrustBundleProjectionOrBuilder>(
                  getClusterTrustBundle(),
                  getParentForChildren(),
                  isClean());
          clusterTrustBundle_ = null;
        }
        return clusterTrustBundleBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.VolumeProjection)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.VolumeProjection)
    private static final io.kubernetes.client.proto.V1.VolumeProjection DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.VolumeProjection();
    }

    public static io.kubernetes.client.proto.V1.VolumeProjection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VolumeProjection>
        PARSER = new com.google.protobuf.AbstractParser<VolumeProjection>() {
      @java.lang.Override
      public VolumeProjection 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<VolumeProjection> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VolumeProjection> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeProjection getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VolumeResourceRequirementsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.VolumeResourceRequirements)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    int getLimitsCount();
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    boolean containsLimits(
        java.lang.String key);
    /**
     * Use {@link #getLimitsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getLimits();
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getLimitsMap();
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getLimitsOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getLimitsOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    int getRequestsCount();
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    boolean containsRequests(
        java.lang.String key);
    /**
     * Use {@link #getRequestsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getRequests();
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    getRequestsMap();
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    /* nullable */
io.kubernetes.client.proto.Resource.Quantity getRequestsOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue);
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    io.kubernetes.client.proto.Resource.Quantity getRequestsOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * VolumeResourceRequirements describes the storage resource requirements for a volume.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.VolumeResourceRequirements}
   */
  public static final class VolumeResourceRequirements extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.VolumeResourceRequirements)
      VolumeResourceRequirementsOrBuilder {
  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= */ "",
        VolumeResourceRequirements.class.getName());
    }
    // Use VolumeResourceRequirements.newBuilder() to construct.
    private VolumeResourceRequirements(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VolumeResourceRequirements() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 1:
          return internalGetLimits();
        case 2:
          return internalGetRequests();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.VolumeResourceRequirements.class, io.kubernetes.client.proto.V1.VolumeResourceRequirements.Builder.class);
    }

    public static final int LIMITS_FIELD_NUMBER = 1;
    private static final class LimitsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_LimitsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> limits_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetLimits() {
      if (limits_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            LimitsDefaultEntryHolder.defaultEntry);
      }
      return limits_;
    }
    public int getLimitsCount() {
      return internalGetLimits().getMap().size();
    }
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    @java.lang.Override
    public boolean containsLimits(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetLimits().getMap().containsKey(key);
    }
    /**
     * Use {@link #getLimitsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getLimits() {
      return getLimitsMap();
    }
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getLimitsMap() {
      return internalGetLimits().getMap();
    }
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getLimitsOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetLimits().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Limits describes the maximum amount of compute resources allowed.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getLimitsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetLimits().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int REQUESTS_FIELD_NUMBER = 2;
    private static final class RequestsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>newDefaultInstance(
                  io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_RequestsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.Resource.Quantity.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.Resource.Quantity> requests_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
    internalGetRequests() {
      if (requests_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            RequestsDefaultEntryHolder.defaultEntry);
      }
      return requests_;
    }
    public int getRequestsCount() {
      return internalGetRequests().getMap().size();
    }
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    @java.lang.Override
    public boolean containsRequests(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetRequests().getMap().containsKey(key);
    }
    /**
     * Use {@link #getRequestsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getRequests() {
      return getRequestsMap();
    }
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getRequestsMap() {
      return internalGetRequests().getMap();
    }
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getRequestsOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetRequests().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Requests describes the minimum amount of compute resources required.
     * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
     * otherwise to an implementation-defined value. Requests cannot exceed Limits.
     * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
     * +optional
     * </pre>
     *
     * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Resource.Quantity getRequestsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> map =
          internalGetRequests().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetLimits(),
          LimitsDefaultEntryHolder.defaultEntry,
          1);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetRequests(),
          RequestsDefaultEntryHolder.defaultEntry,
          2);
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetLimits().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        limits__ = LimitsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, limits__);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> entry
           : internalGetRequests().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
        requests__ = RequestsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, requests__);
      }
      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.V1.VolumeResourceRequirements)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.VolumeResourceRequirements other = (io.kubernetes.client.proto.V1.VolumeResourceRequirements) obj;

      if (!internalGetLimits().equals(
          other.internalGetLimits())) return false;
      if (!internalGetRequests().equals(
          other.internalGetRequests())) 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 (!internalGetLimits().getMap().isEmpty()) {
        hash = (37 * hash) + LIMITS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetLimits().hashCode();
      }
      if (!internalGetRequests().getMap().isEmpty()) {
        hash = (37 * hash) + REQUESTS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetRequests().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.VolumeResourceRequirements parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeResourceRequirements 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.V1.VolumeResourceRequirements parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeResourceRequirements 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.V1.VolumeResourceRequirements parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeResourceRequirements parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.VolumeResourceRequirements parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeResourceRequirements 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.V1.VolumeResourceRequirements parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.VolumeResourceRequirements 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.V1.VolumeResourceRequirements parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeResourceRequirements 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.V1.VolumeResourceRequirements 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>
     * VolumeResourceRequirements describes the storage resource requirements for a volume.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.VolumeResourceRequirements}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.VolumeResourceRequirements)
        io.kubernetes.client.proto.V1.VolumeResourceRequirementsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetLimits();
          case 2:
            return internalGetRequests();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableLimits();
          case 2:
            return internalGetMutableRequests();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.VolumeResourceRequirements.class, io.kubernetes.client.proto.V1.VolumeResourceRequirements.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.VolumeResourceRequirements.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableLimits().clear();
        internalGetMutableRequests().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeResourceRequirements getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.VolumeResourceRequirements.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeResourceRequirements build() {
        io.kubernetes.client.proto.V1.VolumeResourceRequirements result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeResourceRequirements buildPartial() {
        io.kubernetes.client.proto.V1.VolumeResourceRequirements result = new io.kubernetes.client.proto.V1.VolumeResourceRequirements(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.VolumeResourceRequirements result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.limits_ = internalGetLimits().build(LimitsDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.requests_ = internalGetRequests().build(RequestsDefaultEntryHolder.defaultEntry);
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.VolumeResourceRequirements) {
          return mergeFrom((io.kubernetes.client.proto.V1.VolumeResourceRequirements)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.VolumeResourceRequirements other) {
        if (other == io.kubernetes.client.proto.V1.VolumeResourceRequirements.getDefaultInstance()) return this;
        internalGetMutableLimits().mergeFrom(
            other.internalGetLimits());
        bitField0_ |= 0x00000001;
        internalGetMutableRequests().mergeFrom(
            other.internalGetRequests());
        bitField0_ |= 0x00000002;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                limits__ = input.readMessage(
                    LimitsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableLimits().ensureBuilderMap().put(
                    limits__.getKey(), limits__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
                requests__ = input.readMessage(
                    RequestsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableRequests().ensureBuilderMap().put(
                    requests__.getKey(), requests__.getValue());
                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 static final class LimitsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return LimitsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final LimitsConverter limitsConverter = new LimitsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> limits_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetLimits() {
        if (limits_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(limitsConverter);
        }
        return limits_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableLimits() {
        if (limits_ == null) {
          limits_ = new com.google.protobuf.MapFieldBuilder<>(limitsConverter);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return limits_;
      }
      public int getLimitsCount() {
        return internalGetLimits().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      @java.lang.Override
      public boolean containsLimits(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetLimits().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getLimitsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getLimits() {
        return getLimitsMap();
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getLimitsMap() {
        return internalGetLimits().getImmutableMap();
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getLimitsOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableLimits().ensureBuilderMap();
        return map.containsKey(key) ? limitsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getLimitsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableLimits().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return limitsConverter.build(map.get(key));
      }
      public Builder clearLimits() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableLimits().clear();
        return this;
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      public Builder removeLimits(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableLimits().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableLimits() {
        bitField0_ |= 0x00000001;
        return internalGetMutableLimits().ensureMessageMap();
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      public Builder putLimits(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableLimits().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      public Builder putAllLimits(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableLimits().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Limits describes the maximum amount of compute resources allowed.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; limits = 1;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putLimitsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableLimits().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      private static final class RequestsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity> {
        @java.lang.Override
        public io.kubernetes.client.proto.Resource.Quantity build(io.kubernetes.client.proto.Resource.QuantityOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.Resource.Quantity) { return (io.kubernetes.client.proto.Resource.Quantity) val; }
          return ((io.kubernetes.client.proto.Resource.Quantity.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> defaultEntry() {
          return RequestsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final RequestsConverter requestsConverter = new RequestsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder> requests_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetRequests() {
        if (requests_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(requestsConverter);
        }
        return requests_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder, io.kubernetes.client.proto.Resource.Quantity, io.kubernetes.client.proto.Resource.Quantity.Builder>
          internalGetMutableRequests() {
        if (requests_ == null) {
          requests_ = new com.google.protobuf.MapFieldBuilder<>(requestsConverter);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return requests_;
      }
      public int getRequestsCount() {
        return internalGetRequests().ensureBuilderMap().size();
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      @java.lang.Override
      public boolean containsRequests(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetRequests().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getRequestsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getRequests() {
        return getRequestsMap();
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> getRequestsMap() {
        return internalGetRequests().getImmutableMap();
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.Resource.Quantity getRequestsOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.Resource.Quantity defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableRequests().ensureBuilderMap();
        return map.containsKey(key) ? requestsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.Resource.Quantity getRequestsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> map = internalGetMutableRequests().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return requestsConverter.build(map.get(key));
      }
      public Builder clearRequests() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableRequests().clear();
        return this;
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      public Builder removeRequests(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableRequests().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity>
          getMutableRequests() {
        bitField0_ |= 0x00000002;
        return internalGetMutableRequests().ensureMessageMap();
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      public Builder putRequests(
          java.lang.String key,
          io.kubernetes.client.proto.Resource.Quantity value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableRequests().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      public Builder putAllRequests(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.Resource.Quantity> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableRequests().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Requests describes the minimum amount of compute resources required.
       * If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
       * otherwise to an implementation-defined value. Requests cannot exceed Limits.
       * More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
       * +optional
       * </pre>
       *
       * <code>map&lt;string, .k8s.io.apimachinery.pkg.api.resource.Quantity&gt; requests = 2;</code>
       */
      public io.kubernetes.client.proto.Resource.Quantity.Builder putRequestsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.Resource.QuantityOrBuilder> builderMap = internalGetMutableRequests().ensureBuilderMap();
        io.kubernetes.client.proto.Resource.QuantityOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.Resource.Quantity.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.Resource.Quantity) {
          entry = ((io.kubernetes.client.proto.Resource.Quantity) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.Resource.Quantity.Builder) entry;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.VolumeResourceRequirements)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.VolumeResourceRequirements)
    private static final io.kubernetes.client.proto.V1.VolumeResourceRequirements DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.VolumeResourceRequirements();
    }

    public static io.kubernetes.client.proto.V1.VolumeResourceRequirements getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VolumeResourceRequirements>
        PARSER = new com.google.protobuf.AbstractParser<VolumeResourceRequirements>() {
      @java.lang.Override
      public VolumeResourceRequirements 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<VolumeResourceRequirements> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VolumeResourceRequirements> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeResourceRequirements getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.VolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * hostPath represents a pre-existing file or directory on the host
     * machine that is directly exposed to the container. This is generally
     * used for system agents or other privileged things that are allowed
     * to see the host machine. Most containers will NOT need this.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * ---
     * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
     * mount host directories as read/write.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
     * @return Whether the hostPath field is set.
     */
    boolean hasHostPath();
    /**
     * <pre>
     * hostPath represents a pre-existing file or directory on the host
     * machine that is directly exposed to the container. This is generally
     * used for system agents or other privileged things that are allowed
     * to see the host machine. Most containers will NOT need this.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * ---
     * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
     * mount host directories as read/write.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
     * @return The hostPath.
     */
    io.kubernetes.client.proto.V1.HostPathVolumeSource getHostPath();
    /**
     * <pre>
     * hostPath represents a pre-existing file or directory on the host
     * machine that is directly exposed to the container. This is generally
     * used for system agents or other privileged things that are allowed
     * to see the host machine. Most containers will NOT need this.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * ---
     * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
     * mount host directories as read/write.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
     */
    io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder getHostPathOrBuilder();

    /**
     * <pre>
     * emptyDir represents a temporary directory that shares a pod's lifetime.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
     * @return Whether the emptyDir field is set.
     */
    boolean hasEmptyDir();
    /**
     * <pre>
     * emptyDir represents a temporary directory that shares a pod's lifetime.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
     * @return The emptyDir.
     */
    io.kubernetes.client.proto.V1.EmptyDirVolumeSource getEmptyDir();
    /**
     * <pre>
     * emptyDir represents a temporary directory that shares a pod's lifetime.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
     */
    io.kubernetes.client.proto.V1.EmptyDirVolumeSourceOrBuilder getEmptyDirOrBuilder();

    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
     * @return Whether the gcePersistentDisk field is set.
     */
    boolean hasGcePersistentDisk();
    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
     * @return The gcePersistentDisk.
     */
    io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource getGcePersistentDisk();
    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
     */
    io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder getGcePersistentDiskOrBuilder();

    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
     * @return Whether the awsElasticBlockStore field is set.
     */
    boolean hasAwsElasticBlockStore();
    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
     * @return The awsElasticBlockStore.
     */
    io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource getAwsElasticBlockStore();
    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
     */
    io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder getAwsElasticBlockStoreOrBuilder();

    /**
     * <pre>
     * gitRepo represents a git repository at a particular revision.
     * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
     * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
     * into the Pod's container.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
     * @return Whether the gitRepo field is set.
     */
    boolean hasGitRepo();
    /**
     * <pre>
     * gitRepo represents a git repository at a particular revision.
     * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
     * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
     * into the Pod's container.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
     * @return The gitRepo.
     */
    io.kubernetes.client.proto.V1.GitRepoVolumeSource getGitRepo();
    /**
     * <pre>
     * gitRepo represents a git repository at a particular revision.
     * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
     * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
     * into the Pod's container.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
     */
    io.kubernetes.client.proto.V1.GitRepoVolumeSourceOrBuilder getGitRepoOrBuilder();

    /**
     * <pre>
     * secret represents a secret that should populate this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
     * @return Whether the secret field is set.
     */
    boolean hasSecret();
    /**
     * <pre>
     * secret represents a secret that should populate this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
     * @return The secret.
     */
    io.kubernetes.client.proto.V1.SecretVolumeSource getSecret();
    /**
     * <pre>
     * secret represents a secret that should populate this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
     */
    io.kubernetes.client.proto.V1.SecretVolumeSourceOrBuilder getSecretOrBuilder();

    /**
     * <pre>
     * nfs represents an NFS mount on the host that shares a pod's lifetime
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
     * @return Whether the nfs field is set.
     */
    boolean hasNfs();
    /**
     * <pre>
     * nfs represents an NFS mount on the host that shares a pod's lifetime
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
     * @return The nfs.
     */
    io.kubernetes.client.proto.V1.NFSVolumeSource getNfs();
    /**
     * <pre>
     * nfs represents an NFS mount on the host that shares a pod's lifetime
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
     */
    io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder getNfsOrBuilder();

    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://examples.k8s.io/volumes/iscsi/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
     * @return Whether the iscsi field is set.
     */
    boolean hasIscsi();
    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://examples.k8s.io/volumes/iscsi/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
     * @return The iscsi.
     */
    io.kubernetes.client.proto.V1.ISCSIVolumeSource getIscsi();
    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://examples.k8s.io/volumes/iscsi/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
     */
    io.kubernetes.client.proto.V1.ISCSIVolumeSourceOrBuilder getIscsiOrBuilder();

    /**
     * <pre>
     * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
     * @return Whether the glusterfs field is set.
     */
    boolean hasGlusterfs();
    /**
     * <pre>
     * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
     * @return The glusterfs.
     */
    io.kubernetes.client.proto.V1.GlusterfsVolumeSource getGlusterfs();
    /**
     * <pre>
     * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
     */
    io.kubernetes.client.proto.V1.GlusterfsVolumeSourceOrBuilder getGlusterfsOrBuilder();

    /**
     * <pre>
     * persistentVolumeClaimVolumeSource represents a reference to a
     * PersistentVolumeClaim in the same namespace.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
     * @return Whether the persistentVolumeClaim field is set.
     */
    boolean hasPersistentVolumeClaim();
    /**
     * <pre>
     * persistentVolumeClaimVolumeSource represents a reference to a
     * PersistentVolumeClaim in the same namespace.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
     * @return The persistentVolumeClaim.
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource getPersistentVolumeClaim();
    /**
     * <pre>
     * persistentVolumeClaimVolumeSource represents a reference to a
     * PersistentVolumeClaim in the same namespace.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
     */
    io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSourceOrBuilder getPersistentVolumeClaimOrBuilder();

    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
     * @return Whether the rbd field is set.
     */
    boolean hasRbd();
    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
     * @return The rbd.
     */
    io.kubernetes.client.proto.V1.RBDVolumeSource getRbd();
    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
     */
    io.kubernetes.client.proto.V1.RBDVolumeSourceOrBuilder getRbdOrBuilder();

    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
     * @return Whether the flexVolume field is set.
     */
    boolean hasFlexVolume();
    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
     * @return The flexVolume.
     */
    io.kubernetes.client.proto.V1.FlexVolumeSource getFlexVolume();
    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
     */
    io.kubernetes.client.proto.V1.FlexVolumeSourceOrBuilder getFlexVolumeOrBuilder();

    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
     * @return Whether the cinder field is set.
     */
    boolean hasCinder();
    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
     * @return The cinder.
     */
    io.kubernetes.client.proto.V1.CinderVolumeSource getCinder();
    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
     */
    io.kubernetes.client.proto.V1.CinderVolumeSourceOrBuilder getCinderOrBuilder();

    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
     * @return Whether the cephfs field is set.
     */
    boolean hasCephfs();
    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
     * @return The cephfs.
     */
    io.kubernetes.client.proto.V1.CephFSVolumeSource getCephfs();
    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
     */
    io.kubernetes.client.proto.V1.CephFSVolumeSourceOrBuilder getCephfsOrBuilder();

    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
     * @return Whether the flocker field is set.
     */
    boolean hasFlocker();
    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
     * @return The flocker.
     */
    io.kubernetes.client.proto.V1.FlockerVolumeSource getFlocker();
    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
     */
    io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder getFlockerOrBuilder();

    /**
     * <pre>
     * downwardAPI represents downward API about the pod that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
     * @return Whether the downwardAPI field is set.
     */
    boolean hasDownwardAPI();
    /**
     * <pre>
     * downwardAPI represents downward API about the pod that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
     * @return The downwardAPI.
     */
    io.kubernetes.client.proto.V1.DownwardAPIVolumeSource getDownwardAPI();
    /**
     * <pre>
     * downwardAPI represents downward API about the pod that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
     */
    io.kubernetes.client.proto.V1.DownwardAPIVolumeSourceOrBuilder getDownwardAPIOrBuilder();

    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
     * @return Whether the fc field is set.
     */
    boolean hasFc();
    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
     * @return The fc.
     */
    io.kubernetes.client.proto.V1.FCVolumeSource getFc();
    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
     */
    io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder getFcOrBuilder();

    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
     * @return Whether the azureFile field is set.
     */
    boolean hasAzureFile();
    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
     * @return The azureFile.
     */
    io.kubernetes.client.proto.V1.AzureFileVolumeSource getAzureFile();
    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
     */
    io.kubernetes.client.proto.V1.AzureFileVolumeSourceOrBuilder getAzureFileOrBuilder();

    /**
     * <pre>
     * configMap represents a configMap that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
     * @return Whether the configMap field is set.
     */
    boolean hasConfigMap();
    /**
     * <pre>
     * configMap represents a configMap that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
     * @return The configMap.
     */
    io.kubernetes.client.proto.V1.ConfigMapVolumeSource getConfigMap();
    /**
     * <pre>
     * configMap represents a configMap that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
     */
    io.kubernetes.client.proto.V1.ConfigMapVolumeSourceOrBuilder getConfigMapOrBuilder();

    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
     * @return Whether the vsphereVolume field is set.
     */
    boolean hasVsphereVolume();
    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
     * @return The vsphereVolume.
     */
    io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource getVsphereVolume();
    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
     */
    io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder getVsphereVolumeOrBuilder();

    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
     * @return Whether the quobyte field is set.
     */
    boolean hasQuobyte();
    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
     * @return The quobyte.
     */
    io.kubernetes.client.proto.V1.QuobyteVolumeSource getQuobyte();
    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
     */
    io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder getQuobyteOrBuilder();

    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
     * @return Whether the azureDisk field is set.
     */
    boolean hasAzureDisk();
    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
     * @return The azureDisk.
     */
    io.kubernetes.client.proto.V1.AzureDiskVolumeSource getAzureDisk();
    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
     */
    io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder getAzureDiskOrBuilder();

    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
     * @return Whether the photonPersistentDisk field is set.
     */
    boolean hasPhotonPersistentDisk();
    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
     * @return The photonPersistentDisk.
     */
    io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource getPhotonPersistentDisk();
    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
     */
    io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder getPhotonPersistentDiskOrBuilder();

    /**
     * <pre>
     * projected items for all in one resources secrets, configmaps, and downward API
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
     * @return Whether the projected field is set.
     */
    boolean hasProjected();
    /**
     * <pre>
     * projected items for all in one resources secrets, configmaps, and downward API
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
     * @return The projected.
     */
    io.kubernetes.client.proto.V1.ProjectedVolumeSource getProjected();
    /**
     * <pre>
     * projected items for all in one resources secrets, configmaps, and downward API
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
     */
    io.kubernetes.client.proto.V1.ProjectedVolumeSourceOrBuilder getProjectedOrBuilder();

    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
     * @return Whether the portworxVolume field is set.
     */
    boolean hasPortworxVolume();
    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
     * @return The portworxVolume.
     */
    io.kubernetes.client.proto.V1.PortworxVolumeSource getPortworxVolume();
    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
     */
    io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder getPortworxVolumeOrBuilder();

    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
     * @return Whether the scaleIO field is set.
     */
    boolean hasScaleIO();
    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
     * @return The scaleIO.
     */
    io.kubernetes.client.proto.V1.ScaleIOVolumeSource getScaleIO();
    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
     */
    io.kubernetes.client.proto.V1.ScaleIOVolumeSourceOrBuilder getScaleIOOrBuilder();

    /**
     * <pre>
     * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
     * @return Whether the storageos field is set.
     */
    boolean hasStorageos();
    /**
     * <pre>
     * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
     * @return The storageos.
     */
    io.kubernetes.client.proto.V1.StorageOSVolumeSource getStorageos();
    /**
     * <pre>
     * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
     */
    io.kubernetes.client.proto.V1.StorageOSVolumeSourceOrBuilder getStorageosOrBuilder();

    /**
     * <pre>
     * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
     * @return Whether the csi field is set.
     */
    boolean hasCsi();
    /**
     * <pre>
     * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
     * @return The csi.
     */
    io.kubernetes.client.proto.V1.CSIVolumeSource getCsi();
    /**
     * <pre>
     * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
     */
    io.kubernetes.client.proto.V1.CSIVolumeSourceOrBuilder getCsiOrBuilder();

    /**
     * <pre>
     * ephemeral represents a volume that is handled by a cluster storage driver.
     * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
     * and deleted when the pod is removed.
     *
     * Use this if:
     * a) the volume is only needed while the pod runs,
     * b) features of normal volumes like restoring from snapshot or capacity
     * tracking are needed,
     * c) the storage driver is specified through a storage class, and
     * d) the storage driver supports dynamic volume provisioning through
     * a PersistentVolumeClaim (see EphemeralVolumeSource for more
     * information on the connection between this volume type
     * and PersistentVolumeClaim).
     *
     * Use PersistentVolumeClaim or one of the vendor-specific
     * APIs for volumes that persist for longer than the lifecycle
     * of an individual pod.
     *
     * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
     * be used that way - see the documentation of the driver for
     * more information.
     *
     * A pod can use both types of ephemeral volumes and
     * persistent volumes at the same time.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
     * @return Whether the ephemeral field is set.
     */
    boolean hasEphemeral();
    /**
     * <pre>
     * ephemeral represents a volume that is handled by a cluster storage driver.
     * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
     * and deleted when the pod is removed.
     *
     * Use this if:
     * a) the volume is only needed while the pod runs,
     * b) features of normal volumes like restoring from snapshot or capacity
     * tracking are needed,
     * c) the storage driver is specified through a storage class, and
     * d) the storage driver supports dynamic volume provisioning through
     * a PersistentVolumeClaim (see EphemeralVolumeSource for more
     * information on the connection between this volume type
     * and PersistentVolumeClaim).
     *
     * Use PersistentVolumeClaim or one of the vendor-specific
     * APIs for volumes that persist for longer than the lifecycle
     * of an individual pod.
     *
     * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
     * be used that way - see the documentation of the driver for
     * more information.
     *
     * A pod can use both types of ephemeral volumes and
     * persistent volumes at the same time.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
     * @return The ephemeral.
     */
    io.kubernetes.client.proto.V1.EphemeralVolumeSource getEphemeral();
    /**
     * <pre>
     * ephemeral represents a volume that is handled by a cluster storage driver.
     * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
     * and deleted when the pod is removed.
     *
     * Use this if:
     * a) the volume is only needed while the pod runs,
     * b) features of normal volumes like restoring from snapshot or capacity
     * tracking are needed,
     * c) the storage driver is specified through a storage class, and
     * d) the storage driver supports dynamic volume provisioning through
     * a PersistentVolumeClaim (see EphemeralVolumeSource for more
     * information on the connection between this volume type
     * and PersistentVolumeClaim).
     *
     * Use PersistentVolumeClaim or one of the vendor-specific
     * APIs for volumes that persist for longer than the lifecycle
     * of an individual pod.
     *
     * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
     * be used that way - see the documentation of the driver for
     * more information.
     *
     * A pod can use both types of ephemeral volumes and
     * persistent volumes at the same time.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
     */
    io.kubernetes.client.proto.V1.EphemeralVolumeSourceOrBuilder getEphemeralOrBuilder();
  }
  /**
   * <pre>
   * Represents the source of a volume to mount.
   * Only one of its members may be specified.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.VolumeSource}
   */
  public static final class VolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.VolumeSource)
      VolumeSourceOrBuilder {
  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= */ "",
        VolumeSource.class.getName());
    }
    // Use VolumeSource.newBuilder() to construct.
    private VolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VolumeSource() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.VolumeSource.class, io.kubernetes.client.proto.V1.VolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int HOSTPATH_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1.HostPathVolumeSource hostPath_;
    /**
     * <pre>
     * hostPath represents a pre-existing file or directory on the host
     * machine that is directly exposed to the container. This is generally
     * used for system agents or other privileged things that are allowed
     * to see the host machine. Most containers will NOT need this.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * ---
     * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
     * mount host directories as read/write.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
     * @return Whether the hostPath field is set.
     */
    @java.lang.Override
    public boolean hasHostPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * hostPath represents a pre-existing file or directory on the host
     * machine that is directly exposed to the container. This is generally
     * used for system agents or other privileged things that are allowed
     * to see the host machine. Most containers will NOT need this.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * ---
     * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
     * mount host directories as read/write.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
     * @return The hostPath.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostPathVolumeSource getHostPath() {
      return hostPath_ == null ? io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance() : hostPath_;
    }
    /**
     * <pre>
     * hostPath represents a pre-existing file or directory on the host
     * machine that is directly exposed to the container. This is generally
     * used for system agents or other privileged things that are allowed
     * to see the host machine. Most containers will NOT need this.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
     * ---
     * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
     * mount host directories as read/write.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder getHostPathOrBuilder() {
      return hostPath_ == null ? io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance() : hostPath_;
    }

    public static final int EMPTYDIR_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.EmptyDirVolumeSource emptyDir_;
    /**
     * <pre>
     * emptyDir represents a temporary directory that shares a pod's lifetime.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
     * @return Whether the emptyDir field is set.
     */
    @java.lang.Override
    public boolean hasEmptyDir() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * emptyDir represents a temporary directory that shares a pod's lifetime.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
     * @return The emptyDir.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EmptyDirVolumeSource getEmptyDir() {
      return emptyDir_ == null ? io.kubernetes.client.proto.V1.EmptyDirVolumeSource.getDefaultInstance() : emptyDir_;
    }
    /**
     * <pre>
     * emptyDir represents a temporary directory that shares a pod's lifetime.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EmptyDirVolumeSourceOrBuilder getEmptyDirOrBuilder() {
      return emptyDir_ == null ? io.kubernetes.client.proto.V1.EmptyDirVolumeSource.getDefaultInstance() : emptyDir_;
    }

    public static final int GCEPERSISTENTDISK_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource gcePersistentDisk_;
    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
     * @return Whether the gcePersistentDisk field is set.
     */
    @java.lang.Override
    public boolean hasGcePersistentDisk() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
     * @return The gcePersistentDisk.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource getGcePersistentDisk() {
      return gcePersistentDisk_ == null ? io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance() : gcePersistentDisk_;
    }
    /**
     * <pre>
     * gcePersistentDisk represents a GCE Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder getGcePersistentDiskOrBuilder() {
      return gcePersistentDisk_ == null ? io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance() : gcePersistentDisk_;
    }

    public static final int AWSELASTICBLOCKSTORE_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore_;
    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
     * @return Whether the awsElasticBlockStore field is set.
     */
    @java.lang.Override
    public boolean hasAwsElasticBlockStore() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
     * @return The awsElasticBlockStore.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource getAwsElasticBlockStore() {
      return awsElasticBlockStore_ == null ? io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance() : awsElasticBlockStore_;
    }
    /**
     * <pre>
     * awsElasticBlockStore represents an AWS Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder getAwsElasticBlockStoreOrBuilder() {
      return awsElasticBlockStore_ == null ? io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance() : awsElasticBlockStore_;
    }

    public static final int GITREPO_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1.GitRepoVolumeSource gitRepo_;
    /**
     * <pre>
     * gitRepo represents a git repository at a particular revision.
     * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
     * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
     * into the Pod's container.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
     * @return Whether the gitRepo field is set.
     */
    @java.lang.Override
    public boolean hasGitRepo() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * gitRepo represents a git repository at a particular revision.
     * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
     * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
     * into the Pod's container.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
     * @return The gitRepo.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GitRepoVolumeSource getGitRepo() {
      return gitRepo_ == null ? io.kubernetes.client.proto.V1.GitRepoVolumeSource.getDefaultInstance() : gitRepo_;
    }
    /**
     * <pre>
     * gitRepo represents a git repository at a particular revision.
     * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
     * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
     * into the Pod's container.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GitRepoVolumeSourceOrBuilder getGitRepoOrBuilder() {
      return gitRepo_ == null ? io.kubernetes.client.proto.V1.GitRepoVolumeSource.getDefaultInstance() : gitRepo_;
    }

    public static final int SECRET_FIELD_NUMBER = 6;
    private io.kubernetes.client.proto.V1.SecretVolumeSource secret_;
    /**
     * <pre>
     * secret represents a secret that should populate this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
     * @return Whether the secret field is set.
     */
    @java.lang.Override
    public boolean hasSecret() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * secret represents a secret that should populate this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
     * @return The secret.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretVolumeSource getSecret() {
      return secret_ == null ? io.kubernetes.client.proto.V1.SecretVolumeSource.getDefaultInstance() : secret_;
    }
    /**
     * <pre>
     * secret represents a secret that should populate this volume.
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.SecretVolumeSourceOrBuilder getSecretOrBuilder() {
      return secret_ == null ? io.kubernetes.client.proto.V1.SecretVolumeSource.getDefaultInstance() : secret_;
    }

    public static final int NFS_FIELD_NUMBER = 7;
    private io.kubernetes.client.proto.V1.NFSVolumeSource nfs_;
    /**
     * <pre>
     * nfs represents an NFS mount on the host that shares a pod's lifetime
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
     * @return Whether the nfs field is set.
     */
    @java.lang.Override
    public boolean hasNfs() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * nfs represents an NFS mount on the host that shares a pod's lifetime
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
     * @return The nfs.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NFSVolumeSource getNfs() {
      return nfs_ == null ? io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance() : nfs_;
    }
    /**
     * <pre>
     * nfs represents an NFS mount on the host that shares a pod's lifetime
     * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder getNfsOrBuilder() {
      return nfs_ == null ? io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance() : nfs_;
    }

    public static final int ISCSI_FIELD_NUMBER = 8;
    private io.kubernetes.client.proto.V1.ISCSIVolumeSource iscsi_;
    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://examples.k8s.io/volumes/iscsi/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
     * @return Whether the iscsi field is set.
     */
    @java.lang.Override
    public boolean hasIscsi() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://examples.k8s.io/volumes/iscsi/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
     * @return The iscsi.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ISCSIVolumeSource getIscsi() {
      return iscsi_ == null ? io.kubernetes.client.proto.V1.ISCSIVolumeSource.getDefaultInstance() : iscsi_;
    }
    /**
     * <pre>
     * iscsi represents an ISCSI Disk resource that is attached to a
     * kubelet's host machine and then exposed to the pod.
     * More info: https://examples.k8s.io/volumes/iscsi/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ISCSIVolumeSourceOrBuilder getIscsiOrBuilder() {
      return iscsi_ == null ? io.kubernetes.client.proto.V1.ISCSIVolumeSource.getDefaultInstance() : iscsi_;
    }

    public static final int GLUSTERFS_FIELD_NUMBER = 9;
    private io.kubernetes.client.proto.V1.GlusterfsVolumeSource glusterfs_;
    /**
     * <pre>
     * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
     * @return Whether the glusterfs field is set.
     */
    @java.lang.Override
    public boolean hasGlusterfs() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
     * @return The glusterfs.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GlusterfsVolumeSource getGlusterfs() {
      return glusterfs_ == null ? io.kubernetes.client.proto.V1.GlusterfsVolumeSource.getDefaultInstance() : glusterfs_;
    }
    /**
     * <pre>
     * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/glusterfs/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.GlusterfsVolumeSourceOrBuilder getGlusterfsOrBuilder() {
      return glusterfs_ == null ? io.kubernetes.client.proto.V1.GlusterfsVolumeSource.getDefaultInstance() : glusterfs_;
    }

    public static final int PERSISTENTVOLUMECLAIM_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource persistentVolumeClaim_;
    /**
     * <pre>
     * persistentVolumeClaimVolumeSource represents a reference to a
     * PersistentVolumeClaim in the same namespace.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
     * @return Whether the persistentVolumeClaim field is set.
     */
    @java.lang.Override
    public boolean hasPersistentVolumeClaim() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * persistentVolumeClaimVolumeSource represents a reference to a
     * PersistentVolumeClaim in the same namespace.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
     * @return The persistentVolumeClaim.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource getPersistentVolumeClaim() {
      return persistentVolumeClaim_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.getDefaultInstance() : persistentVolumeClaim_;
    }
    /**
     * <pre>
     * persistentVolumeClaimVolumeSource represents a reference to a
     * PersistentVolumeClaim in the same namespace.
     * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSourceOrBuilder getPersistentVolumeClaimOrBuilder() {
      return persistentVolumeClaim_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.getDefaultInstance() : persistentVolumeClaim_;
    }

    public static final int RBD_FIELD_NUMBER = 11;
    private io.kubernetes.client.proto.V1.RBDVolumeSource rbd_;
    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
     * @return Whether the rbd field is set.
     */
    @java.lang.Override
    public boolean hasRbd() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
     * @return The rbd.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.RBDVolumeSource getRbd() {
      return rbd_ == null ? io.kubernetes.client.proto.V1.RBDVolumeSource.getDefaultInstance() : rbd_;
    }
    /**
     * <pre>
     * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     * More info: https://examples.k8s.io/volumes/rbd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.RBDVolumeSourceOrBuilder getRbdOrBuilder() {
      return rbd_ == null ? io.kubernetes.client.proto.V1.RBDVolumeSource.getDefaultInstance() : rbd_;
    }

    public static final int FLEXVOLUME_FIELD_NUMBER = 12;
    private io.kubernetes.client.proto.V1.FlexVolumeSource flexVolume_;
    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
     * @return Whether the flexVolume field is set.
     */
    @java.lang.Override
    public boolean hasFlexVolume() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
     * @return The flexVolume.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlexVolumeSource getFlexVolume() {
      return flexVolume_ == null ? io.kubernetes.client.proto.V1.FlexVolumeSource.getDefaultInstance() : flexVolume_;
    }
    /**
     * <pre>
     * flexVolume represents a generic volume resource that is
     * provisioned/attached using an exec based plugin.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlexVolumeSourceOrBuilder getFlexVolumeOrBuilder() {
      return flexVolume_ == null ? io.kubernetes.client.proto.V1.FlexVolumeSource.getDefaultInstance() : flexVolume_;
    }

    public static final int CINDER_FIELD_NUMBER = 13;
    private io.kubernetes.client.proto.V1.CinderVolumeSource cinder_;
    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
     * @return Whether the cinder field is set.
     */
    @java.lang.Override
    public boolean hasCinder() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
     * @return The cinder.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CinderVolumeSource getCinder() {
      return cinder_ == null ? io.kubernetes.client.proto.V1.CinderVolumeSource.getDefaultInstance() : cinder_;
    }
    /**
     * <pre>
     * cinder represents a cinder volume attached and mounted on kubelets host machine.
     * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CinderVolumeSourceOrBuilder getCinderOrBuilder() {
      return cinder_ == null ? io.kubernetes.client.proto.V1.CinderVolumeSource.getDefaultInstance() : cinder_;
    }

    public static final int CEPHFS_FIELD_NUMBER = 14;
    private io.kubernetes.client.proto.V1.CephFSVolumeSource cephfs_;
    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
     * @return Whether the cephfs field is set.
     */
    @java.lang.Override
    public boolean hasCephfs() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
     * @return The cephfs.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CephFSVolumeSource getCephfs() {
      return cephfs_ == null ? io.kubernetes.client.proto.V1.CephFSVolumeSource.getDefaultInstance() : cephfs_;
    }
    /**
     * <pre>
     * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CephFSVolumeSourceOrBuilder getCephfsOrBuilder() {
      return cephfs_ == null ? io.kubernetes.client.proto.V1.CephFSVolumeSource.getDefaultInstance() : cephfs_;
    }

    public static final int FLOCKER_FIELD_NUMBER = 15;
    private io.kubernetes.client.proto.V1.FlockerVolumeSource flocker_;
    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
     * @return Whether the flocker field is set.
     */
    @java.lang.Override
    public boolean hasFlocker() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
     * @return The flocker.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlockerVolumeSource getFlocker() {
      return flocker_ == null ? io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance() : flocker_;
    }
    /**
     * <pre>
     * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder getFlockerOrBuilder() {
      return flocker_ == null ? io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance() : flocker_;
    }

    public static final int DOWNWARDAPI_FIELD_NUMBER = 16;
    private io.kubernetes.client.proto.V1.DownwardAPIVolumeSource downwardAPI_;
    /**
     * <pre>
     * downwardAPI represents downward API about the pod that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
     * @return Whether the downwardAPI field is set.
     */
    @java.lang.Override
    public boolean hasDownwardAPI() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <pre>
     * downwardAPI represents downward API about the pod that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
     * @return The downwardAPI.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.DownwardAPIVolumeSource getDownwardAPI() {
      return downwardAPI_ == null ? io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.getDefaultInstance() : downwardAPI_;
    }
    /**
     * <pre>
     * downwardAPI represents downward API about the pod that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.DownwardAPIVolumeSourceOrBuilder getDownwardAPIOrBuilder() {
      return downwardAPI_ == null ? io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.getDefaultInstance() : downwardAPI_;
    }

    public static final int FC_FIELD_NUMBER = 17;
    private io.kubernetes.client.proto.V1.FCVolumeSource fc_;
    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
     * @return Whether the fc field is set.
     */
    @java.lang.Override
    public boolean hasFc() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
     * @return The fc.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FCVolumeSource getFc() {
      return fc_ == null ? io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance() : fc_;
    }
    /**
     * <pre>
     * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder getFcOrBuilder() {
      return fc_ == null ? io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance() : fc_;
    }

    public static final int AZUREFILE_FIELD_NUMBER = 18;
    private io.kubernetes.client.proto.V1.AzureFileVolumeSource azureFile_;
    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
     * @return Whether the azureFile field is set.
     */
    @java.lang.Override
    public boolean hasAzureFile() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
     * @return The azureFile.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AzureFileVolumeSource getAzureFile() {
      return azureFile_ == null ? io.kubernetes.client.proto.V1.AzureFileVolumeSource.getDefaultInstance() : azureFile_;
    }
    /**
     * <pre>
     * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AzureFileVolumeSourceOrBuilder getAzureFileOrBuilder() {
      return azureFile_ == null ? io.kubernetes.client.proto.V1.AzureFileVolumeSource.getDefaultInstance() : azureFile_;
    }

    public static final int CONFIGMAP_FIELD_NUMBER = 19;
    private io.kubernetes.client.proto.V1.ConfigMapVolumeSource configMap_;
    /**
     * <pre>
     * configMap represents a configMap that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
     * @return Whether the configMap field is set.
     */
    @java.lang.Override
    public boolean hasConfigMap() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <pre>
     * configMap represents a configMap that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
     * @return The configMap.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapVolumeSource getConfigMap() {
      return configMap_ == null ? io.kubernetes.client.proto.V1.ConfigMapVolumeSource.getDefaultInstance() : configMap_;
    }
    /**
     * <pre>
     * configMap represents a configMap that should populate this volume
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ConfigMapVolumeSourceOrBuilder getConfigMapOrBuilder() {
      return configMap_ == null ? io.kubernetes.client.proto.V1.ConfigMapVolumeSource.getDefaultInstance() : configMap_;
    }

    public static final int VSPHEREVOLUME_FIELD_NUMBER = 20;
    private io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource vsphereVolume_;
    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
     * @return Whether the vsphereVolume field is set.
     */
    @java.lang.Override
    public boolean hasVsphereVolume() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
     * @return The vsphereVolume.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource getVsphereVolume() {
      return vsphereVolume_ == null ? io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance() : vsphereVolume_;
    }
    /**
     * <pre>
     * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder getVsphereVolumeOrBuilder() {
      return vsphereVolume_ == null ? io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance() : vsphereVolume_;
    }

    public static final int QUOBYTE_FIELD_NUMBER = 21;
    private io.kubernetes.client.proto.V1.QuobyteVolumeSource quobyte_;
    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
     * @return Whether the quobyte field is set.
     */
    @java.lang.Override
    public boolean hasQuobyte() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
     * @return The quobyte.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.QuobyteVolumeSource getQuobyte() {
      return quobyte_ == null ? io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance() : quobyte_;
    }
    /**
     * <pre>
     * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder getQuobyteOrBuilder() {
      return quobyte_ == null ? io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance() : quobyte_;
    }

    public static final int AZUREDISK_FIELD_NUMBER = 22;
    private io.kubernetes.client.proto.V1.AzureDiskVolumeSource azureDisk_;
    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
     * @return Whether the azureDisk field is set.
     */
    @java.lang.Override
    public boolean hasAzureDisk() {
      return ((bitField0_ & 0x00200000) != 0);
    }
    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
     * @return The azureDisk.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AzureDiskVolumeSource getAzureDisk() {
      return azureDisk_ == null ? io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance() : azureDisk_;
    }
    /**
     * <pre>
     * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder getAzureDiskOrBuilder() {
      return azureDisk_ == null ? io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance() : azureDisk_;
    }

    public static final int PHOTONPERSISTENTDISK_FIELD_NUMBER = 23;
    private io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource photonPersistentDisk_;
    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
     * @return Whether the photonPersistentDisk field is set.
     */
    @java.lang.Override
    public boolean hasPhotonPersistentDisk() {
      return ((bitField0_ & 0x00400000) != 0);
    }
    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
     * @return The photonPersistentDisk.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource getPhotonPersistentDisk() {
      return photonPersistentDisk_ == null ? io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance() : photonPersistentDisk_;
    }
    /**
     * <pre>
     * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder getPhotonPersistentDiskOrBuilder() {
      return photonPersistentDisk_ == null ? io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance() : photonPersistentDisk_;
    }

    public static final int PROJECTED_FIELD_NUMBER = 26;
    private io.kubernetes.client.proto.V1.ProjectedVolumeSource projected_;
    /**
     * <pre>
     * projected items for all in one resources secrets, configmaps, and downward API
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
     * @return Whether the projected field is set.
     */
    @java.lang.Override
    public boolean hasProjected() {
      return ((bitField0_ & 0x00800000) != 0);
    }
    /**
     * <pre>
     * projected items for all in one resources secrets, configmaps, and downward API
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
     * @return The projected.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProjectedVolumeSource getProjected() {
      return projected_ == null ? io.kubernetes.client.proto.V1.ProjectedVolumeSource.getDefaultInstance() : projected_;
    }
    /**
     * <pre>
     * projected items for all in one resources secrets, configmaps, and downward API
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ProjectedVolumeSourceOrBuilder getProjectedOrBuilder() {
      return projected_ == null ? io.kubernetes.client.proto.V1.ProjectedVolumeSource.getDefaultInstance() : projected_;
    }

    public static final int PORTWORXVOLUME_FIELD_NUMBER = 24;
    private io.kubernetes.client.proto.V1.PortworxVolumeSource portworxVolume_;
    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
     * @return Whether the portworxVolume field is set.
     */
    @java.lang.Override
    public boolean hasPortworxVolume() {
      return ((bitField0_ & 0x01000000) != 0);
    }
    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
     * @return The portworxVolume.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PortworxVolumeSource getPortworxVolume() {
      return portworxVolume_ == null ? io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance() : portworxVolume_;
    }
    /**
     * <pre>
     * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder getPortworxVolumeOrBuilder() {
      return portworxVolume_ == null ? io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance() : portworxVolume_;
    }

    public static final int SCALEIO_FIELD_NUMBER = 25;
    private io.kubernetes.client.proto.V1.ScaleIOVolumeSource scaleIO_;
    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
     * @return Whether the scaleIO field is set.
     */
    @java.lang.Override
    public boolean hasScaleIO() {
      return ((bitField0_ & 0x02000000) != 0);
    }
    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
     * @return The scaleIO.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScaleIOVolumeSource getScaleIO() {
      return scaleIO_ == null ? io.kubernetes.client.proto.V1.ScaleIOVolumeSource.getDefaultInstance() : scaleIO_;
    }
    /**
     * <pre>
     * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.ScaleIOVolumeSourceOrBuilder getScaleIOOrBuilder() {
      return scaleIO_ == null ? io.kubernetes.client.proto.V1.ScaleIOVolumeSource.getDefaultInstance() : scaleIO_;
    }

    public static final int STORAGEOS_FIELD_NUMBER = 27;
    private io.kubernetes.client.proto.V1.StorageOSVolumeSource storageos_;
    /**
     * <pre>
     * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
     * @return Whether the storageos field is set.
     */
    @java.lang.Override
    public boolean hasStorageos() {
      return ((bitField0_ & 0x04000000) != 0);
    }
    /**
     * <pre>
     * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
     * @return The storageos.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.StorageOSVolumeSource getStorageos() {
      return storageos_ == null ? io.kubernetes.client.proto.V1.StorageOSVolumeSource.getDefaultInstance() : storageos_;
    }
    /**
     * <pre>
     * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.StorageOSVolumeSourceOrBuilder getStorageosOrBuilder() {
      return storageos_ == null ? io.kubernetes.client.proto.V1.StorageOSVolumeSource.getDefaultInstance() : storageos_;
    }

    public static final int CSI_FIELD_NUMBER = 28;
    private io.kubernetes.client.proto.V1.CSIVolumeSource csi_;
    /**
     * <pre>
     * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
     * @return Whether the csi field is set.
     */
    @java.lang.Override
    public boolean hasCsi() {
      return ((bitField0_ & 0x08000000) != 0);
    }
    /**
     * <pre>
     * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
     * @return The csi.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CSIVolumeSource getCsi() {
      return csi_ == null ? io.kubernetes.client.proto.V1.CSIVolumeSource.getDefaultInstance() : csi_;
    }
    /**
     * <pre>
     * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.CSIVolumeSourceOrBuilder getCsiOrBuilder() {
      return csi_ == null ? io.kubernetes.client.proto.V1.CSIVolumeSource.getDefaultInstance() : csi_;
    }

    public static final int EPHEMERAL_FIELD_NUMBER = 29;
    private io.kubernetes.client.proto.V1.EphemeralVolumeSource ephemeral_;
    /**
     * <pre>
     * ephemeral represents a volume that is handled by a cluster storage driver.
     * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
     * and deleted when the pod is removed.
     *
     * Use this if:
     * a) the volume is only needed while the pod runs,
     * b) features of normal volumes like restoring from snapshot or capacity
     * tracking are needed,
     * c) the storage driver is specified through a storage class, and
     * d) the storage driver supports dynamic volume provisioning through
     * a PersistentVolumeClaim (see EphemeralVolumeSource for more
     * information on the connection between this volume type
     * and PersistentVolumeClaim).
     *
     * Use PersistentVolumeClaim or one of the vendor-specific
     * APIs for volumes that persist for longer than the lifecycle
     * of an individual pod.
     *
     * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
     * be used that way - see the documentation of the driver for
     * more information.
     *
     * A pod can use both types of ephemeral volumes and
     * persistent volumes at the same time.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
     * @return Whether the ephemeral field is set.
     */
    @java.lang.Override
    public boolean hasEphemeral() {
      return ((bitField0_ & 0x10000000) != 0);
    }
    /**
     * <pre>
     * ephemeral represents a volume that is handled by a cluster storage driver.
     * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
     * and deleted when the pod is removed.
     *
     * Use this if:
     * a) the volume is only needed while the pod runs,
     * b) features of normal volumes like restoring from snapshot or capacity
     * tracking are needed,
     * c) the storage driver is specified through a storage class, and
     * d) the storage driver supports dynamic volume provisioning through
     * a PersistentVolumeClaim (see EphemeralVolumeSource for more
     * information on the connection between this volume type
     * and PersistentVolumeClaim).
     *
     * Use PersistentVolumeClaim or one of the vendor-specific
     * APIs for volumes that persist for longer than the lifecycle
     * of an individual pod.
     *
     * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
     * be used that way - see the documentation of the driver for
     * more information.
     *
     * A pod can use both types of ephemeral volumes and
     * persistent volumes at the same time.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
     * @return The ephemeral.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EphemeralVolumeSource getEphemeral() {
      return ephemeral_ == null ? io.kubernetes.client.proto.V1.EphemeralVolumeSource.getDefaultInstance() : ephemeral_;
    }
    /**
     * <pre>
     * ephemeral represents a volume that is handled by a cluster storage driver.
     * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
     * and deleted when the pod is removed.
     *
     * Use this if:
     * a) the volume is only needed while the pod runs,
     * b) features of normal volumes like restoring from snapshot or capacity
     * tracking are needed,
     * c) the storage driver is specified through a storage class, and
     * d) the storage driver supports dynamic volume provisioning through
     * a PersistentVolumeClaim (see EphemeralVolumeSource for more
     * information on the connection between this volume type
     * and PersistentVolumeClaim).
     *
     * Use PersistentVolumeClaim or one of the vendor-specific
     * APIs for volumes that persist for longer than the lifecycle
     * of an individual pod.
     *
     * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
     * be used that way - see the documentation of the driver for
     * more information.
     *
     * A pod can use both types of ephemeral volumes and
     * persistent volumes at the same time.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.EphemeralVolumeSourceOrBuilder getEphemeralOrBuilder() {
      return ephemeral_ == null ? io.kubernetes.client.proto.V1.EphemeralVolumeSource.getDefaultInstance() : ephemeral_;
    }

    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, getHostPath());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getEmptyDir());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getGcePersistentDisk());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getAwsElasticBlockStore());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getGitRepo());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(6, getSecret());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(7, getNfs());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(8, getIscsi());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeMessage(9, getGlusterfs());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeMessage(10, getPersistentVolumeClaim());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeMessage(11, getRbd());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeMessage(12, getFlexVolume());
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeMessage(13, getCinder());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeMessage(14, getCephfs());
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        output.writeMessage(15, getFlocker());
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        output.writeMessage(16, getDownwardAPI());
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        output.writeMessage(17, getFc());
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        output.writeMessage(18, getAzureFile());
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        output.writeMessage(19, getConfigMap());
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        output.writeMessage(20, getVsphereVolume());
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        output.writeMessage(21, getQuobyte());
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        output.writeMessage(22, getAzureDisk());
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        output.writeMessage(23, getPhotonPersistentDisk());
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        output.writeMessage(24, getPortworxVolume());
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        output.writeMessage(25, getScaleIO());
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        output.writeMessage(26, getProjected());
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        output.writeMessage(27, getStorageos());
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        output.writeMessage(28, getCsi());
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        output.writeMessage(29, getEphemeral());
      }
      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, getHostPath());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getEmptyDir());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getGcePersistentDisk());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getAwsElasticBlockStore());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getGitRepo());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getSecret());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getNfs());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getIscsi());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getGlusterfs());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getPersistentVolumeClaim());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getRbd());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getFlexVolume());
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, getCinder());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, getCephfs());
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, getFlocker());
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, getDownwardAPI());
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(17, getFc());
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, getAzureFile());
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(19, getConfigMap());
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(20, getVsphereVolume());
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(21, getQuobyte());
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(22, getAzureDisk());
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(23, getPhotonPersistentDisk());
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(24, getPortworxVolume());
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(25, getScaleIO());
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(26, getProjected());
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(27, getStorageos());
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(28, getCsi());
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(29, getEphemeral());
      }
      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.V1.VolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.VolumeSource other = (io.kubernetes.client.proto.V1.VolumeSource) obj;

      if (hasHostPath() != other.hasHostPath()) return false;
      if (hasHostPath()) {
        if (!getHostPath()
            .equals(other.getHostPath())) return false;
      }
      if (hasEmptyDir() != other.hasEmptyDir()) return false;
      if (hasEmptyDir()) {
        if (!getEmptyDir()
            .equals(other.getEmptyDir())) return false;
      }
      if (hasGcePersistentDisk() != other.hasGcePersistentDisk()) return false;
      if (hasGcePersistentDisk()) {
        if (!getGcePersistentDisk()
            .equals(other.getGcePersistentDisk())) return false;
      }
      if (hasAwsElasticBlockStore() != other.hasAwsElasticBlockStore()) return false;
      if (hasAwsElasticBlockStore()) {
        if (!getAwsElasticBlockStore()
            .equals(other.getAwsElasticBlockStore())) return false;
      }
      if (hasGitRepo() != other.hasGitRepo()) return false;
      if (hasGitRepo()) {
        if (!getGitRepo()
            .equals(other.getGitRepo())) return false;
      }
      if (hasSecret() != other.hasSecret()) return false;
      if (hasSecret()) {
        if (!getSecret()
            .equals(other.getSecret())) return false;
      }
      if (hasNfs() != other.hasNfs()) return false;
      if (hasNfs()) {
        if (!getNfs()
            .equals(other.getNfs())) return false;
      }
      if (hasIscsi() != other.hasIscsi()) return false;
      if (hasIscsi()) {
        if (!getIscsi()
            .equals(other.getIscsi())) return false;
      }
      if (hasGlusterfs() != other.hasGlusterfs()) return false;
      if (hasGlusterfs()) {
        if (!getGlusterfs()
            .equals(other.getGlusterfs())) return false;
      }
      if (hasPersistentVolumeClaim() != other.hasPersistentVolumeClaim()) return false;
      if (hasPersistentVolumeClaim()) {
        if (!getPersistentVolumeClaim()
            .equals(other.getPersistentVolumeClaim())) return false;
      }
      if (hasRbd() != other.hasRbd()) return false;
      if (hasRbd()) {
        if (!getRbd()
            .equals(other.getRbd())) return false;
      }
      if (hasFlexVolume() != other.hasFlexVolume()) return false;
      if (hasFlexVolume()) {
        if (!getFlexVolume()
            .equals(other.getFlexVolume())) return false;
      }
      if (hasCinder() != other.hasCinder()) return false;
      if (hasCinder()) {
        if (!getCinder()
            .equals(other.getCinder())) return false;
      }
      if (hasCephfs() != other.hasCephfs()) return false;
      if (hasCephfs()) {
        if (!getCephfs()
            .equals(other.getCephfs())) return false;
      }
      if (hasFlocker() != other.hasFlocker()) return false;
      if (hasFlocker()) {
        if (!getFlocker()
            .equals(other.getFlocker())) return false;
      }
      if (hasDownwardAPI() != other.hasDownwardAPI()) return false;
      if (hasDownwardAPI()) {
        if (!getDownwardAPI()
            .equals(other.getDownwardAPI())) return false;
      }
      if (hasFc() != other.hasFc()) return false;
      if (hasFc()) {
        if (!getFc()
            .equals(other.getFc())) return false;
      }
      if (hasAzureFile() != other.hasAzureFile()) return false;
      if (hasAzureFile()) {
        if (!getAzureFile()
            .equals(other.getAzureFile())) return false;
      }
      if (hasConfigMap() != other.hasConfigMap()) return false;
      if (hasConfigMap()) {
        if (!getConfigMap()
            .equals(other.getConfigMap())) return false;
      }
      if (hasVsphereVolume() != other.hasVsphereVolume()) return false;
      if (hasVsphereVolume()) {
        if (!getVsphereVolume()
            .equals(other.getVsphereVolume())) return false;
      }
      if (hasQuobyte() != other.hasQuobyte()) return false;
      if (hasQuobyte()) {
        if (!getQuobyte()
            .equals(other.getQuobyte())) return false;
      }
      if (hasAzureDisk() != other.hasAzureDisk()) return false;
      if (hasAzureDisk()) {
        if (!getAzureDisk()
            .equals(other.getAzureDisk())) return false;
      }
      if (hasPhotonPersistentDisk() != other.hasPhotonPersistentDisk()) return false;
      if (hasPhotonPersistentDisk()) {
        if (!getPhotonPersistentDisk()
            .equals(other.getPhotonPersistentDisk())) return false;
      }
      if (hasProjected() != other.hasProjected()) return false;
      if (hasProjected()) {
        if (!getProjected()
            .equals(other.getProjected())) return false;
      }
      if (hasPortworxVolume() != other.hasPortworxVolume()) return false;
      if (hasPortworxVolume()) {
        if (!getPortworxVolume()
            .equals(other.getPortworxVolume())) return false;
      }
      if (hasScaleIO() != other.hasScaleIO()) return false;
      if (hasScaleIO()) {
        if (!getScaleIO()
            .equals(other.getScaleIO())) return false;
      }
      if (hasStorageos() != other.hasStorageos()) return false;
      if (hasStorageos()) {
        if (!getStorageos()
            .equals(other.getStorageos())) return false;
      }
      if (hasCsi() != other.hasCsi()) return false;
      if (hasCsi()) {
        if (!getCsi()
            .equals(other.getCsi())) return false;
      }
      if (hasEphemeral() != other.hasEphemeral()) return false;
      if (hasEphemeral()) {
        if (!getEphemeral()
            .equals(other.getEphemeral())) 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 (hasHostPath()) {
        hash = (37 * hash) + HOSTPATH_FIELD_NUMBER;
        hash = (53 * hash) + getHostPath().hashCode();
      }
      if (hasEmptyDir()) {
        hash = (37 * hash) + EMPTYDIR_FIELD_NUMBER;
        hash = (53 * hash) + getEmptyDir().hashCode();
      }
      if (hasGcePersistentDisk()) {
        hash = (37 * hash) + GCEPERSISTENTDISK_FIELD_NUMBER;
        hash = (53 * hash) + getGcePersistentDisk().hashCode();
      }
      if (hasAwsElasticBlockStore()) {
        hash = (37 * hash) + AWSELASTICBLOCKSTORE_FIELD_NUMBER;
        hash = (53 * hash) + getAwsElasticBlockStore().hashCode();
      }
      if (hasGitRepo()) {
        hash = (37 * hash) + GITREPO_FIELD_NUMBER;
        hash = (53 * hash) + getGitRepo().hashCode();
      }
      if (hasSecret()) {
        hash = (37 * hash) + SECRET_FIELD_NUMBER;
        hash = (53 * hash) + getSecret().hashCode();
      }
      if (hasNfs()) {
        hash = (37 * hash) + NFS_FIELD_NUMBER;
        hash = (53 * hash) + getNfs().hashCode();
      }
      if (hasIscsi()) {
        hash = (37 * hash) + ISCSI_FIELD_NUMBER;
        hash = (53 * hash) + getIscsi().hashCode();
      }
      if (hasGlusterfs()) {
        hash = (37 * hash) + GLUSTERFS_FIELD_NUMBER;
        hash = (53 * hash) + getGlusterfs().hashCode();
      }
      if (hasPersistentVolumeClaim()) {
        hash = (37 * hash) + PERSISTENTVOLUMECLAIM_FIELD_NUMBER;
        hash = (53 * hash) + getPersistentVolumeClaim().hashCode();
      }
      if (hasRbd()) {
        hash = (37 * hash) + RBD_FIELD_NUMBER;
        hash = (53 * hash) + getRbd().hashCode();
      }
      if (hasFlexVolume()) {
        hash = (37 * hash) + FLEXVOLUME_FIELD_NUMBER;
        hash = (53 * hash) + getFlexVolume().hashCode();
      }
      if (hasCinder()) {
        hash = (37 * hash) + CINDER_FIELD_NUMBER;
        hash = (53 * hash) + getCinder().hashCode();
      }
      if (hasCephfs()) {
        hash = (37 * hash) + CEPHFS_FIELD_NUMBER;
        hash = (53 * hash) + getCephfs().hashCode();
      }
      if (hasFlocker()) {
        hash = (37 * hash) + FLOCKER_FIELD_NUMBER;
        hash = (53 * hash) + getFlocker().hashCode();
      }
      if (hasDownwardAPI()) {
        hash = (37 * hash) + DOWNWARDAPI_FIELD_NUMBER;
        hash = (53 * hash) + getDownwardAPI().hashCode();
      }
      if (hasFc()) {
        hash = (37 * hash) + FC_FIELD_NUMBER;
        hash = (53 * hash) + getFc().hashCode();
      }
      if (hasAzureFile()) {
        hash = (37 * hash) + AZUREFILE_FIELD_NUMBER;
        hash = (53 * hash) + getAzureFile().hashCode();
      }
      if (hasConfigMap()) {
        hash = (37 * hash) + CONFIGMAP_FIELD_NUMBER;
        hash = (53 * hash) + getConfigMap().hashCode();
      }
      if (hasVsphereVolume()) {
        hash = (37 * hash) + VSPHEREVOLUME_FIELD_NUMBER;
        hash = (53 * hash) + getVsphereVolume().hashCode();
      }
      if (hasQuobyte()) {
        hash = (37 * hash) + QUOBYTE_FIELD_NUMBER;
        hash = (53 * hash) + getQuobyte().hashCode();
      }
      if (hasAzureDisk()) {
        hash = (37 * hash) + AZUREDISK_FIELD_NUMBER;
        hash = (53 * hash) + getAzureDisk().hashCode();
      }
      if (hasPhotonPersistentDisk()) {
        hash = (37 * hash) + PHOTONPERSISTENTDISK_FIELD_NUMBER;
        hash = (53 * hash) + getPhotonPersistentDisk().hashCode();
      }
      if (hasProjected()) {
        hash = (37 * hash) + PROJECTED_FIELD_NUMBER;
        hash = (53 * hash) + getProjected().hashCode();
      }
      if (hasPortworxVolume()) {
        hash = (37 * hash) + PORTWORXVOLUME_FIELD_NUMBER;
        hash = (53 * hash) + getPortworxVolume().hashCode();
      }
      if (hasScaleIO()) {
        hash = (37 * hash) + SCALEIO_FIELD_NUMBER;
        hash = (53 * hash) + getScaleIO().hashCode();
      }
      if (hasStorageos()) {
        hash = (37 * hash) + STORAGEOS_FIELD_NUMBER;
        hash = (53 * hash) + getStorageos().hashCode();
      }
      if (hasCsi()) {
        hash = (37 * hash) + CSI_FIELD_NUMBER;
        hash = (53 * hash) + getCsi().hashCode();
      }
      if (hasEphemeral()) {
        hash = (37 * hash) + EPHEMERAL_FIELD_NUMBER;
        hash = (53 * hash) + getEphemeral().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.VolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeSource 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.V1.VolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeSource 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.V1.VolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.VolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeSource 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.V1.VolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.VolumeSource 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.V1.VolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VolumeSource 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.V1.VolumeSource 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>
     * Represents the source of a volume to mount.
     * Only one of its members may be specified.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.VolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.VolumeSource)
        io.kubernetes.client.proto.V1.VolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.VolumeSource.class, io.kubernetes.client.proto.V1.VolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.VolumeSource.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getHostPathFieldBuilder();
          getEmptyDirFieldBuilder();
          getGcePersistentDiskFieldBuilder();
          getAwsElasticBlockStoreFieldBuilder();
          getGitRepoFieldBuilder();
          getSecretFieldBuilder();
          getNfsFieldBuilder();
          getIscsiFieldBuilder();
          getGlusterfsFieldBuilder();
          getPersistentVolumeClaimFieldBuilder();
          getRbdFieldBuilder();
          getFlexVolumeFieldBuilder();
          getCinderFieldBuilder();
          getCephfsFieldBuilder();
          getFlockerFieldBuilder();
          getDownwardAPIFieldBuilder();
          getFcFieldBuilder();
          getAzureFileFieldBuilder();
          getConfigMapFieldBuilder();
          getVsphereVolumeFieldBuilder();
          getQuobyteFieldBuilder();
          getAzureDiskFieldBuilder();
          getPhotonPersistentDiskFieldBuilder();
          getProjectedFieldBuilder();
          getPortworxVolumeFieldBuilder();
          getScaleIOFieldBuilder();
          getStorageosFieldBuilder();
          getCsiFieldBuilder();
          getEphemeralFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        hostPath_ = null;
        if (hostPathBuilder_ != null) {
          hostPathBuilder_.dispose();
          hostPathBuilder_ = null;
        }
        emptyDir_ = null;
        if (emptyDirBuilder_ != null) {
          emptyDirBuilder_.dispose();
          emptyDirBuilder_ = null;
        }
        gcePersistentDisk_ = null;
        if (gcePersistentDiskBuilder_ != null) {
          gcePersistentDiskBuilder_.dispose();
          gcePersistentDiskBuilder_ = null;
        }
        awsElasticBlockStore_ = null;
        if (awsElasticBlockStoreBuilder_ != null) {
          awsElasticBlockStoreBuilder_.dispose();
          awsElasticBlockStoreBuilder_ = null;
        }
        gitRepo_ = null;
        if (gitRepoBuilder_ != null) {
          gitRepoBuilder_.dispose();
          gitRepoBuilder_ = null;
        }
        secret_ = null;
        if (secretBuilder_ != null) {
          secretBuilder_.dispose();
          secretBuilder_ = null;
        }
        nfs_ = null;
        if (nfsBuilder_ != null) {
          nfsBuilder_.dispose();
          nfsBuilder_ = null;
        }
        iscsi_ = null;
        if (iscsiBuilder_ != null) {
          iscsiBuilder_.dispose();
          iscsiBuilder_ = null;
        }
        glusterfs_ = null;
        if (glusterfsBuilder_ != null) {
          glusterfsBuilder_.dispose();
          glusterfsBuilder_ = null;
        }
        persistentVolumeClaim_ = null;
        if (persistentVolumeClaimBuilder_ != null) {
          persistentVolumeClaimBuilder_.dispose();
          persistentVolumeClaimBuilder_ = null;
        }
        rbd_ = null;
        if (rbdBuilder_ != null) {
          rbdBuilder_.dispose();
          rbdBuilder_ = null;
        }
        flexVolume_ = null;
        if (flexVolumeBuilder_ != null) {
          flexVolumeBuilder_.dispose();
          flexVolumeBuilder_ = null;
        }
        cinder_ = null;
        if (cinderBuilder_ != null) {
          cinderBuilder_.dispose();
          cinderBuilder_ = null;
        }
        cephfs_ = null;
        if (cephfsBuilder_ != null) {
          cephfsBuilder_.dispose();
          cephfsBuilder_ = null;
        }
        flocker_ = null;
        if (flockerBuilder_ != null) {
          flockerBuilder_.dispose();
          flockerBuilder_ = null;
        }
        downwardAPI_ = null;
        if (downwardAPIBuilder_ != null) {
          downwardAPIBuilder_.dispose();
          downwardAPIBuilder_ = null;
        }
        fc_ = null;
        if (fcBuilder_ != null) {
          fcBuilder_.dispose();
          fcBuilder_ = null;
        }
        azureFile_ = null;
        if (azureFileBuilder_ != null) {
          azureFileBuilder_.dispose();
          azureFileBuilder_ = null;
        }
        configMap_ = null;
        if (configMapBuilder_ != null) {
          configMapBuilder_.dispose();
          configMapBuilder_ = null;
        }
        vsphereVolume_ = null;
        if (vsphereVolumeBuilder_ != null) {
          vsphereVolumeBuilder_.dispose();
          vsphereVolumeBuilder_ = null;
        }
        quobyte_ = null;
        if (quobyteBuilder_ != null) {
          quobyteBuilder_.dispose();
          quobyteBuilder_ = null;
        }
        azureDisk_ = null;
        if (azureDiskBuilder_ != null) {
          azureDiskBuilder_.dispose();
          azureDiskBuilder_ = null;
        }
        photonPersistentDisk_ = null;
        if (photonPersistentDiskBuilder_ != null) {
          photonPersistentDiskBuilder_.dispose();
          photonPersistentDiskBuilder_ = null;
        }
        projected_ = null;
        if (projectedBuilder_ != null) {
          projectedBuilder_.dispose();
          projectedBuilder_ = null;
        }
        portworxVolume_ = null;
        if (portworxVolumeBuilder_ != null) {
          portworxVolumeBuilder_.dispose();
          portworxVolumeBuilder_ = null;
        }
        scaleIO_ = null;
        if (scaleIOBuilder_ != null) {
          scaleIOBuilder_.dispose();
          scaleIOBuilder_ = null;
        }
        storageos_ = null;
        if (storageosBuilder_ != null) {
          storageosBuilder_.dispose();
          storageosBuilder_ = null;
        }
        csi_ = null;
        if (csiBuilder_ != null) {
          csiBuilder_.dispose();
          csiBuilder_ = null;
        }
        ephemeral_ = null;
        if (ephemeralBuilder_ != null) {
          ephemeralBuilder_.dispose();
          ephemeralBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.VolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeSource build() {
        io.kubernetes.client.proto.V1.VolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.VolumeSource result = new io.kubernetes.client.proto.V1.VolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.VolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.hostPath_ = hostPathBuilder_ == null
              ? hostPath_
              : hostPathBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.emptyDir_ = emptyDirBuilder_ == null
              ? emptyDir_
              : emptyDirBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.gcePersistentDisk_ = gcePersistentDiskBuilder_ == null
              ? gcePersistentDisk_
              : gcePersistentDiskBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.awsElasticBlockStore_ = awsElasticBlockStoreBuilder_ == null
              ? awsElasticBlockStore_
              : awsElasticBlockStoreBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.gitRepo_ = gitRepoBuilder_ == null
              ? gitRepo_
              : gitRepoBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.secret_ = secretBuilder_ == null
              ? secret_
              : secretBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.nfs_ = nfsBuilder_ == null
              ? nfs_
              : nfsBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.iscsi_ = iscsiBuilder_ == null
              ? iscsi_
              : iscsiBuilder_.build();
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.glusterfs_ = glusterfsBuilder_ == null
              ? glusterfs_
              : glusterfsBuilder_.build();
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.persistentVolumeClaim_ = persistentVolumeClaimBuilder_ == null
              ? persistentVolumeClaim_
              : persistentVolumeClaimBuilder_.build();
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.rbd_ = rbdBuilder_ == null
              ? rbd_
              : rbdBuilder_.build();
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.flexVolume_ = flexVolumeBuilder_ == null
              ? flexVolume_
              : flexVolumeBuilder_.build();
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.cinder_ = cinderBuilder_ == null
              ? cinder_
              : cinderBuilder_.build();
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.cephfs_ = cephfsBuilder_ == null
              ? cephfs_
              : cephfsBuilder_.build();
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.flocker_ = flockerBuilder_ == null
              ? flocker_
              : flockerBuilder_.build();
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.downwardAPI_ = downwardAPIBuilder_ == null
              ? downwardAPI_
              : downwardAPIBuilder_.build();
          to_bitField0_ |= 0x00008000;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.fc_ = fcBuilder_ == null
              ? fc_
              : fcBuilder_.build();
          to_bitField0_ |= 0x00010000;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.azureFile_ = azureFileBuilder_ == null
              ? azureFile_
              : azureFileBuilder_.build();
          to_bitField0_ |= 0x00020000;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.configMap_ = configMapBuilder_ == null
              ? configMap_
              : configMapBuilder_.build();
          to_bitField0_ |= 0x00040000;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.vsphereVolume_ = vsphereVolumeBuilder_ == null
              ? vsphereVolume_
              : vsphereVolumeBuilder_.build();
          to_bitField0_ |= 0x00080000;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.quobyte_ = quobyteBuilder_ == null
              ? quobyte_
              : quobyteBuilder_.build();
          to_bitField0_ |= 0x00100000;
        }
        if (((from_bitField0_ & 0x00200000) != 0)) {
          result.azureDisk_ = azureDiskBuilder_ == null
              ? azureDisk_
              : azureDiskBuilder_.build();
          to_bitField0_ |= 0x00200000;
        }
        if (((from_bitField0_ & 0x00400000) != 0)) {
          result.photonPersistentDisk_ = photonPersistentDiskBuilder_ == null
              ? photonPersistentDisk_
              : photonPersistentDiskBuilder_.build();
          to_bitField0_ |= 0x00400000;
        }
        if (((from_bitField0_ & 0x00800000) != 0)) {
          result.projected_ = projectedBuilder_ == null
              ? projected_
              : projectedBuilder_.build();
          to_bitField0_ |= 0x00800000;
        }
        if (((from_bitField0_ & 0x01000000) != 0)) {
          result.portworxVolume_ = portworxVolumeBuilder_ == null
              ? portworxVolume_
              : portworxVolumeBuilder_.build();
          to_bitField0_ |= 0x01000000;
        }
        if (((from_bitField0_ & 0x02000000) != 0)) {
          result.scaleIO_ = scaleIOBuilder_ == null
              ? scaleIO_
              : scaleIOBuilder_.build();
          to_bitField0_ |= 0x02000000;
        }
        if (((from_bitField0_ & 0x04000000) != 0)) {
          result.storageos_ = storageosBuilder_ == null
              ? storageos_
              : storageosBuilder_.build();
          to_bitField0_ |= 0x04000000;
        }
        if (((from_bitField0_ & 0x08000000) != 0)) {
          result.csi_ = csiBuilder_ == null
              ? csi_
              : csiBuilder_.build();
          to_bitField0_ |= 0x08000000;
        }
        if (((from_bitField0_ & 0x10000000) != 0)) {
          result.ephemeral_ = ephemeralBuilder_ == null
              ? ephemeral_
              : ephemeralBuilder_.build();
          to_bitField0_ |= 0x10000000;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1.VolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.VolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.VolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.VolumeSource.getDefaultInstance()) return this;
        if (other.hasHostPath()) {
          mergeHostPath(other.getHostPath());
        }
        if (other.hasEmptyDir()) {
          mergeEmptyDir(other.getEmptyDir());
        }
        if (other.hasGcePersistentDisk()) {
          mergeGcePersistentDisk(other.getGcePersistentDisk());
        }
        if (other.hasAwsElasticBlockStore()) {
          mergeAwsElasticBlockStore(other.getAwsElasticBlockStore());
        }
        if (other.hasGitRepo()) {
          mergeGitRepo(other.getGitRepo());
        }
        if (other.hasSecret()) {
          mergeSecret(other.getSecret());
        }
        if (other.hasNfs()) {
          mergeNfs(other.getNfs());
        }
        if (other.hasIscsi()) {
          mergeIscsi(other.getIscsi());
        }
        if (other.hasGlusterfs()) {
          mergeGlusterfs(other.getGlusterfs());
        }
        if (other.hasPersistentVolumeClaim()) {
          mergePersistentVolumeClaim(other.getPersistentVolumeClaim());
        }
        if (other.hasRbd()) {
          mergeRbd(other.getRbd());
        }
        if (other.hasFlexVolume()) {
          mergeFlexVolume(other.getFlexVolume());
        }
        if (other.hasCinder()) {
          mergeCinder(other.getCinder());
        }
        if (other.hasCephfs()) {
          mergeCephfs(other.getCephfs());
        }
        if (other.hasFlocker()) {
          mergeFlocker(other.getFlocker());
        }
        if (other.hasDownwardAPI()) {
          mergeDownwardAPI(other.getDownwardAPI());
        }
        if (other.hasFc()) {
          mergeFc(other.getFc());
        }
        if (other.hasAzureFile()) {
          mergeAzureFile(other.getAzureFile());
        }
        if (other.hasConfigMap()) {
          mergeConfigMap(other.getConfigMap());
        }
        if (other.hasVsphereVolume()) {
          mergeVsphereVolume(other.getVsphereVolume());
        }
        if (other.hasQuobyte()) {
          mergeQuobyte(other.getQuobyte());
        }
        if (other.hasAzureDisk()) {
          mergeAzureDisk(other.getAzureDisk());
        }
        if (other.hasPhotonPersistentDisk()) {
          mergePhotonPersistentDisk(other.getPhotonPersistentDisk());
        }
        if (other.hasProjected()) {
          mergeProjected(other.getProjected());
        }
        if (other.hasPortworxVolume()) {
          mergePortworxVolume(other.getPortworxVolume());
        }
        if (other.hasScaleIO()) {
          mergeScaleIO(other.getScaleIO());
        }
        if (other.hasStorageos()) {
          mergeStorageos(other.getStorageos());
        }
        if (other.hasCsi()) {
          mergeCsi(other.getCsi());
        }
        if (other.hasEphemeral()) {
          mergeEphemeral(other.getEphemeral());
        }
        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(
                    getHostPathFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getEmptyDirFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getGcePersistentDiskFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getAwsElasticBlockStoreFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getGitRepoFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getSecretFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getNfsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getIscsiFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getGlusterfsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getPersistentVolumeClaimFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getRbdFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getFlexVolumeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getCinderFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00001000;
                break;
              } // case 106
              case 114: {
                input.readMessage(
                    getCephfsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00002000;
                break;
              } // case 114
              case 122: {
                input.readMessage(
                    getFlockerFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00004000;
                break;
              } // case 122
              case 130: {
                input.readMessage(
                    getDownwardAPIFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00008000;
                break;
              } // case 130
              case 138: {
                input.readMessage(
                    getFcFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00010000;
                break;
              } // case 138
              case 146: {
                input.readMessage(
                    getAzureFileFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00020000;
                break;
              } // case 146
              case 154: {
                input.readMessage(
                    getConfigMapFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00040000;
                break;
              } // case 154
              case 162: {
                input.readMessage(
                    getVsphereVolumeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00080000;
                break;
              } // case 162
              case 170: {
                input.readMessage(
                    getQuobyteFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00100000;
                break;
              } // case 170
              case 178: {
                input.readMessage(
                    getAzureDiskFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00200000;
                break;
              } // case 178
              case 186: {
                input.readMessage(
                    getPhotonPersistentDiskFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00400000;
                break;
              } // case 186
              case 194: {
                input.readMessage(
                    getPortworxVolumeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x01000000;
                break;
              } // case 194
              case 202: {
                input.readMessage(
                    getScaleIOFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x02000000;
                break;
              } // case 202
              case 210: {
                input.readMessage(
                    getProjectedFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00800000;
                break;
              } // case 210
              case 218: {
                input.readMessage(
                    getStorageosFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x04000000;
                break;
              } // case 218
              case 226: {
                input.readMessage(
                    getCsiFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x08000000;
                break;
              } // case 226
              case 234: {
                input.readMessage(
                    getEphemeralFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x10000000;
                break;
              } // case 234
              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.V1.HostPathVolumeSource hostPath_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.HostPathVolumeSource, io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder, io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder> hostPathBuilder_;
      /**
       * <pre>
       * hostPath represents a pre-existing file or directory on the host
       * machine that is directly exposed to the container. This is generally
       * used for system agents or other privileged things that are allowed
       * to see the host machine. Most containers will NOT need this.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * ---
       * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
       * mount host directories as read/write.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
       * @return Whether the hostPath field is set.
       */
      public boolean hasHostPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * hostPath represents a pre-existing file or directory on the host
       * machine that is directly exposed to the container. This is generally
       * used for system agents or other privileged things that are allowed
       * to see the host machine. Most containers will NOT need this.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * ---
       * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
       * mount host directories as read/write.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
       * @return The hostPath.
       */
      public io.kubernetes.client.proto.V1.HostPathVolumeSource getHostPath() {
        if (hostPathBuilder_ == null) {
          return hostPath_ == null ? io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance() : hostPath_;
        } else {
          return hostPathBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * hostPath represents a pre-existing file or directory on the host
       * machine that is directly exposed to the container. This is generally
       * used for system agents or other privileged things that are allowed
       * to see the host machine. Most containers will NOT need this.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * ---
       * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
       * mount host directories as read/write.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
       */
      public Builder setHostPath(io.kubernetes.client.proto.V1.HostPathVolumeSource value) {
        if (hostPathBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          hostPath_ = value;
        } else {
          hostPathBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * hostPath represents a pre-existing file or directory on the host
       * machine that is directly exposed to the container. This is generally
       * used for system agents or other privileged things that are allowed
       * to see the host machine. Most containers will NOT need this.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * ---
       * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
       * mount host directories as read/write.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
       */
      public Builder setHostPath(
          io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder builderForValue) {
        if (hostPathBuilder_ == null) {
          hostPath_ = builderForValue.build();
        } else {
          hostPathBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * hostPath represents a pre-existing file or directory on the host
       * machine that is directly exposed to the container. This is generally
       * used for system agents or other privileged things that are allowed
       * to see the host machine. Most containers will NOT need this.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * ---
       * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
       * mount host directories as read/write.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
       */
      public Builder mergeHostPath(io.kubernetes.client.proto.V1.HostPathVolumeSource value) {
        if (hostPathBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            hostPath_ != null &&
            hostPath_ != io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance()) {
            getHostPathBuilder().mergeFrom(value);
          } else {
            hostPath_ = value;
          }
        } else {
          hostPathBuilder_.mergeFrom(value);
        }
        if (hostPath_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * hostPath represents a pre-existing file or directory on the host
       * machine that is directly exposed to the container. This is generally
       * used for system agents or other privileged things that are allowed
       * to see the host machine. Most containers will NOT need this.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * ---
       * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
       * mount host directories as read/write.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
       */
      public Builder clearHostPath() {
        bitField0_ = (bitField0_ & ~0x00000001);
        hostPath_ = null;
        if (hostPathBuilder_ != null) {
          hostPathBuilder_.dispose();
          hostPathBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * hostPath represents a pre-existing file or directory on the host
       * machine that is directly exposed to the container. This is generally
       * used for system agents or other privileged things that are allowed
       * to see the host machine. Most containers will NOT need this.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * ---
       * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
       * mount host directories as read/write.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
       */
      public io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder getHostPathBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getHostPathFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * hostPath represents a pre-existing file or directory on the host
       * machine that is directly exposed to the container. This is generally
       * used for system agents or other privileged things that are allowed
       * to see the host machine. Most containers will NOT need this.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * ---
       * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
       * mount host directories as read/write.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
       */
      public io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder getHostPathOrBuilder() {
        if (hostPathBuilder_ != null) {
          return hostPathBuilder_.getMessageOrBuilder();
        } else {
          return hostPath_ == null ?
              io.kubernetes.client.proto.V1.HostPathVolumeSource.getDefaultInstance() : hostPath_;
        }
      }
      /**
       * <pre>
       * hostPath represents a pre-existing file or directory on the host
       * machine that is directly exposed to the container. This is generally
       * used for system agents or other privileged things that are allowed
       * to see the host machine. Most containers will NOT need this.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
       * ---
       * TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
       * mount host directories as read/write.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.HostPathVolumeSource hostPath = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.HostPathVolumeSource, io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder, io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder> 
          getHostPathFieldBuilder() {
        if (hostPathBuilder_ == null) {
          hostPathBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.HostPathVolumeSource, io.kubernetes.client.proto.V1.HostPathVolumeSource.Builder, io.kubernetes.client.proto.V1.HostPathVolumeSourceOrBuilder>(
                  getHostPath(),
                  getParentForChildren(),
                  isClean());
          hostPath_ = null;
        }
        return hostPathBuilder_;
      }

      private io.kubernetes.client.proto.V1.EmptyDirVolumeSource emptyDir_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EmptyDirVolumeSource, io.kubernetes.client.proto.V1.EmptyDirVolumeSource.Builder, io.kubernetes.client.proto.V1.EmptyDirVolumeSourceOrBuilder> emptyDirBuilder_;
      /**
       * <pre>
       * emptyDir represents a temporary directory that shares a pod's lifetime.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
       * @return Whether the emptyDir field is set.
       */
      public boolean hasEmptyDir() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * emptyDir represents a temporary directory that shares a pod's lifetime.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
       * @return The emptyDir.
       */
      public io.kubernetes.client.proto.V1.EmptyDirVolumeSource getEmptyDir() {
        if (emptyDirBuilder_ == null) {
          return emptyDir_ == null ? io.kubernetes.client.proto.V1.EmptyDirVolumeSource.getDefaultInstance() : emptyDir_;
        } else {
          return emptyDirBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * emptyDir represents a temporary directory that shares a pod's lifetime.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
       */
      public Builder setEmptyDir(io.kubernetes.client.proto.V1.EmptyDirVolumeSource value) {
        if (emptyDirBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          emptyDir_ = value;
        } else {
          emptyDirBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * emptyDir represents a temporary directory that shares a pod's lifetime.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
       */
      public Builder setEmptyDir(
          io.kubernetes.client.proto.V1.EmptyDirVolumeSource.Builder builderForValue) {
        if (emptyDirBuilder_ == null) {
          emptyDir_ = builderForValue.build();
        } else {
          emptyDirBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * emptyDir represents a temporary directory that shares a pod's lifetime.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
       */
      public Builder mergeEmptyDir(io.kubernetes.client.proto.V1.EmptyDirVolumeSource value) {
        if (emptyDirBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            emptyDir_ != null &&
            emptyDir_ != io.kubernetes.client.proto.V1.EmptyDirVolumeSource.getDefaultInstance()) {
            getEmptyDirBuilder().mergeFrom(value);
          } else {
            emptyDir_ = value;
          }
        } else {
          emptyDirBuilder_.mergeFrom(value);
        }
        if (emptyDir_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * emptyDir represents a temporary directory that shares a pod's lifetime.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
       */
      public Builder clearEmptyDir() {
        bitField0_ = (bitField0_ & ~0x00000002);
        emptyDir_ = null;
        if (emptyDirBuilder_ != null) {
          emptyDirBuilder_.dispose();
          emptyDirBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * emptyDir represents a temporary directory that shares a pod's lifetime.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EmptyDirVolumeSource.Builder getEmptyDirBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getEmptyDirFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * emptyDir represents a temporary directory that shares a pod's lifetime.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
       */
      public io.kubernetes.client.proto.V1.EmptyDirVolumeSourceOrBuilder getEmptyDirOrBuilder() {
        if (emptyDirBuilder_ != null) {
          return emptyDirBuilder_.getMessageOrBuilder();
        } else {
          return emptyDir_ == null ?
              io.kubernetes.client.proto.V1.EmptyDirVolumeSource.getDefaultInstance() : emptyDir_;
        }
      }
      /**
       * <pre>
       * emptyDir represents a temporary directory that shares a pod's lifetime.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EmptyDirVolumeSource emptyDir = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EmptyDirVolumeSource, io.kubernetes.client.proto.V1.EmptyDirVolumeSource.Builder, io.kubernetes.client.proto.V1.EmptyDirVolumeSourceOrBuilder> 
          getEmptyDirFieldBuilder() {
        if (emptyDirBuilder_ == null) {
          emptyDirBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.EmptyDirVolumeSource, io.kubernetes.client.proto.V1.EmptyDirVolumeSource.Builder, io.kubernetes.client.proto.V1.EmptyDirVolumeSourceOrBuilder>(
                  getEmptyDir(),
                  getParentForChildren(),
                  isClean());
          emptyDir_ = null;
        }
        return emptyDirBuilder_;
      }

      private io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource gcePersistentDisk_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder> gcePersistentDiskBuilder_;
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
       * @return Whether the gcePersistentDisk field is set.
       */
      public boolean hasGcePersistentDisk() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
       * @return The gcePersistentDisk.
       */
      public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource getGcePersistentDisk() {
        if (gcePersistentDiskBuilder_ == null) {
          return gcePersistentDisk_ == null ? io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance() : gcePersistentDisk_;
        } else {
          return gcePersistentDiskBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
       */
      public Builder setGcePersistentDisk(io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource value) {
        if (gcePersistentDiskBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          gcePersistentDisk_ = value;
        } else {
          gcePersistentDiskBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
       */
      public Builder setGcePersistentDisk(
          io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder builderForValue) {
        if (gcePersistentDiskBuilder_ == null) {
          gcePersistentDisk_ = builderForValue.build();
        } else {
          gcePersistentDiskBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
       */
      public Builder mergeGcePersistentDisk(io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource value) {
        if (gcePersistentDiskBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            gcePersistentDisk_ != null &&
            gcePersistentDisk_ != io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance()) {
            getGcePersistentDiskBuilder().mergeFrom(value);
          } else {
            gcePersistentDisk_ = value;
          }
        } else {
          gcePersistentDiskBuilder_.mergeFrom(value);
        }
        if (gcePersistentDisk_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
       */
      public Builder clearGcePersistentDisk() {
        bitField0_ = (bitField0_ & ~0x00000004);
        gcePersistentDisk_ = null;
        if (gcePersistentDiskBuilder_ != null) {
          gcePersistentDiskBuilder_.dispose();
          gcePersistentDiskBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
       */
      public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder getGcePersistentDiskBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getGcePersistentDiskFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
       */
      public io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder getGcePersistentDiskOrBuilder() {
        if (gcePersistentDiskBuilder_ != null) {
          return gcePersistentDiskBuilder_.getMessageOrBuilder();
        } else {
          return gcePersistentDisk_ == null ?
              io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.getDefaultInstance() : gcePersistentDisk_;
        }
      }
      /**
       * <pre>
       * gcePersistentDisk represents a GCE Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GCEPersistentDiskVolumeSource gcePersistentDisk = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder> 
          getGcePersistentDiskFieldBuilder() {
        if (gcePersistentDiskBuilder_ == null) {
          gcePersistentDiskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.GCEPersistentDiskVolumeSourceOrBuilder>(
                  getGcePersistentDisk(),
                  getParentForChildren(),
                  isClean());
          gcePersistentDisk_ = null;
        }
        return gcePersistentDiskBuilder_;
      }

      private io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.Builder, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder> awsElasticBlockStoreBuilder_;
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
       * @return Whether the awsElasticBlockStore field is set.
       */
      public boolean hasAwsElasticBlockStore() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
       * @return The awsElasticBlockStore.
       */
      public io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource getAwsElasticBlockStore() {
        if (awsElasticBlockStoreBuilder_ == null) {
          return awsElasticBlockStore_ == null ? io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance() : awsElasticBlockStore_;
        } else {
          return awsElasticBlockStoreBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
       */
      public Builder setAwsElasticBlockStore(io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource value) {
        if (awsElasticBlockStoreBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          awsElasticBlockStore_ = value;
        } else {
          awsElasticBlockStoreBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
       */
      public Builder setAwsElasticBlockStore(
          io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.Builder builderForValue) {
        if (awsElasticBlockStoreBuilder_ == null) {
          awsElasticBlockStore_ = builderForValue.build();
        } else {
          awsElasticBlockStoreBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
       */
      public Builder mergeAwsElasticBlockStore(io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource value) {
        if (awsElasticBlockStoreBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            awsElasticBlockStore_ != null &&
            awsElasticBlockStore_ != io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance()) {
            getAwsElasticBlockStoreBuilder().mergeFrom(value);
          } else {
            awsElasticBlockStore_ = value;
          }
        } else {
          awsElasticBlockStoreBuilder_.mergeFrom(value);
        }
        if (awsElasticBlockStore_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
       */
      public Builder clearAwsElasticBlockStore() {
        bitField0_ = (bitField0_ & ~0x00000008);
        awsElasticBlockStore_ = null;
        if (awsElasticBlockStoreBuilder_ != null) {
          awsElasticBlockStoreBuilder_.dispose();
          awsElasticBlockStoreBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
       */
      public io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.Builder getAwsElasticBlockStoreBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getAwsElasticBlockStoreFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
       */
      public io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder getAwsElasticBlockStoreOrBuilder() {
        if (awsElasticBlockStoreBuilder_ != null) {
          return awsElasticBlockStoreBuilder_.getMessageOrBuilder();
        } else {
          return awsElasticBlockStore_ == null ?
              io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.getDefaultInstance() : awsElasticBlockStore_;
        }
      }
      /**
       * <pre>
       * awsElasticBlockStore represents an AWS Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.Builder, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder> 
          getAwsElasticBlockStoreFieldBuilder() {
        if (awsElasticBlockStoreBuilder_ == null) {
          awsElasticBlockStoreBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSource.Builder, io.kubernetes.client.proto.V1.AWSElasticBlockStoreVolumeSourceOrBuilder>(
                  getAwsElasticBlockStore(),
                  getParentForChildren(),
                  isClean());
          awsElasticBlockStore_ = null;
        }
        return awsElasticBlockStoreBuilder_;
      }

      private io.kubernetes.client.proto.V1.GitRepoVolumeSource gitRepo_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GitRepoVolumeSource, io.kubernetes.client.proto.V1.GitRepoVolumeSource.Builder, io.kubernetes.client.proto.V1.GitRepoVolumeSourceOrBuilder> gitRepoBuilder_;
      /**
       * <pre>
       * gitRepo represents a git repository at a particular revision.
       * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
       * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
       * into the Pod's container.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
       * @return Whether the gitRepo field is set.
       */
      public boolean hasGitRepo() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * gitRepo represents a git repository at a particular revision.
       * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
       * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
       * into the Pod's container.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
       * @return The gitRepo.
       */
      public io.kubernetes.client.proto.V1.GitRepoVolumeSource getGitRepo() {
        if (gitRepoBuilder_ == null) {
          return gitRepo_ == null ? io.kubernetes.client.proto.V1.GitRepoVolumeSource.getDefaultInstance() : gitRepo_;
        } else {
          return gitRepoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * gitRepo represents a git repository at a particular revision.
       * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
       * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
       * into the Pod's container.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
       */
      public Builder setGitRepo(io.kubernetes.client.proto.V1.GitRepoVolumeSource value) {
        if (gitRepoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          gitRepo_ = value;
        } else {
          gitRepoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gitRepo represents a git repository at a particular revision.
       * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
       * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
       * into the Pod's container.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
       */
      public Builder setGitRepo(
          io.kubernetes.client.proto.V1.GitRepoVolumeSource.Builder builderForValue) {
        if (gitRepoBuilder_ == null) {
          gitRepo_ = builderForValue.build();
        } else {
          gitRepoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gitRepo represents a git repository at a particular revision.
       * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
       * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
       * into the Pod's container.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
       */
      public Builder mergeGitRepo(io.kubernetes.client.proto.V1.GitRepoVolumeSource value) {
        if (gitRepoBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            gitRepo_ != null &&
            gitRepo_ != io.kubernetes.client.proto.V1.GitRepoVolumeSource.getDefaultInstance()) {
            getGitRepoBuilder().mergeFrom(value);
          } else {
            gitRepo_ = value;
          }
        } else {
          gitRepoBuilder_.mergeFrom(value);
        }
        if (gitRepo_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * gitRepo represents a git repository at a particular revision.
       * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
       * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
       * into the Pod's container.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
       */
      public Builder clearGitRepo() {
        bitField0_ = (bitField0_ & ~0x00000010);
        gitRepo_ = null;
        if (gitRepoBuilder_ != null) {
          gitRepoBuilder_.dispose();
          gitRepoBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * gitRepo represents a git repository at a particular revision.
       * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
       * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
       * into the Pod's container.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
       */
      public io.kubernetes.client.proto.V1.GitRepoVolumeSource.Builder getGitRepoBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getGitRepoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * gitRepo represents a git repository at a particular revision.
       * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
       * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
       * into the Pod's container.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
       */
      public io.kubernetes.client.proto.V1.GitRepoVolumeSourceOrBuilder getGitRepoOrBuilder() {
        if (gitRepoBuilder_ != null) {
          return gitRepoBuilder_.getMessageOrBuilder();
        } else {
          return gitRepo_ == null ?
              io.kubernetes.client.proto.V1.GitRepoVolumeSource.getDefaultInstance() : gitRepo_;
        }
      }
      /**
       * <pre>
       * gitRepo represents a git repository at a particular revision.
       * DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
       * EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
       * into the Pod's container.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GitRepoVolumeSource gitRepo = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GitRepoVolumeSource, io.kubernetes.client.proto.V1.GitRepoVolumeSource.Builder, io.kubernetes.client.proto.V1.GitRepoVolumeSourceOrBuilder> 
          getGitRepoFieldBuilder() {
        if (gitRepoBuilder_ == null) {
          gitRepoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.GitRepoVolumeSource, io.kubernetes.client.proto.V1.GitRepoVolumeSource.Builder, io.kubernetes.client.proto.V1.GitRepoVolumeSourceOrBuilder>(
                  getGitRepo(),
                  getParentForChildren(),
                  isClean());
          gitRepo_ = null;
        }
        return gitRepoBuilder_;
      }

      private io.kubernetes.client.proto.V1.SecretVolumeSource secret_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretVolumeSource, io.kubernetes.client.proto.V1.SecretVolumeSource.Builder, io.kubernetes.client.proto.V1.SecretVolumeSourceOrBuilder> secretBuilder_;
      /**
       * <pre>
       * secret represents a secret that should populate this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
       * @return Whether the secret field is set.
       */
      public boolean hasSecret() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * secret represents a secret that should populate this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
       * @return The secret.
       */
      public io.kubernetes.client.proto.V1.SecretVolumeSource getSecret() {
        if (secretBuilder_ == null) {
          return secret_ == null ? io.kubernetes.client.proto.V1.SecretVolumeSource.getDefaultInstance() : secret_;
        } else {
          return secretBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * secret represents a secret that should populate this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
       */
      public Builder setSecret(io.kubernetes.client.proto.V1.SecretVolumeSource value) {
        if (secretBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          secret_ = value;
        } else {
          secretBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secret represents a secret that should populate this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
       */
      public Builder setSecret(
          io.kubernetes.client.proto.V1.SecretVolumeSource.Builder builderForValue) {
        if (secretBuilder_ == null) {
          secret_ = builderForValue.build();
        } else {
          secretBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secret represents a secret that should populate this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
       */
      public Builder mergeSecret(io.kubernetes.client.proto.V1.SecretVolumeSource value) {
        if (secretBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            secret_ != null &&
            secret_ != io.kubernetes.client.proto.V1.SecretVolumeSource.getDefaultInstance()) {
            getSecretBuilder().mergeFrom(value);
          } else {
            secret_ = value;
          }
        } else {
          secretBuilder_.mergeFrom(value);
        }
        if (secret_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * secret represents a secret that should populate this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
       */
      public Builder clearSecret() {
        bitField0_ = (bitField0_ & ~0x00000020);
        secret_ = null;
        if (secretBuilder_ != null) {
          secretBuilder_.dispose();
          secretBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * secret represents a secret that should populate this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
       */
      public io.kubernetes.client.proto.V1.SecretVolumeSource.Builder getSecretBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getSecretFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * secret represents a secret that should populate this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
       */
      public io.kubernetes.client.proto.V1.SecretVolumeSourceOrBuilder getSecretOrBuilder() {
        if (secretBuilder_ != null) {
          return secretBuilder_.getMessageOrBuilder();
        } else {
          return secret_ == null ?
              io.kubernetes.client.proto.V1.SecretVolumeSource.getDefaultInstance() : secret_;
        }
      }
      /**
       * <pre>
       * secret represents a secret that should populate this volume.
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.SecretVolumeSource secret = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.SecretVolumeSource, io.kubernetes.client.proto.V1.SecretVolumeSource.Builder, io.kubernetes.client.proto.V1.SecretVolumeSourceOrBuilder> 
          getSecretFieldBuilder() {
        if (secretBuilder_ == null) {
          secretBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.SecretVolumeSource, io.kubernetes.client.proto.V1.SecretVolumeSource.Builder, io.kubernetes.client.proto.V1.SecretVolumeSourceOrBuilder>(
                  getSecret(),
                  getParentForChildren(),
                  isClean());
          secret_ = null;
        }
        return secretBuilder_;
      }

      private io.kubernetes.client.proto.V1.NFSVolumeSource nfs_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NFSVolumeSource, io.kubernetes.client.proto.V1.NFSVolumeSource.Builder, io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder> nfsBuilder_;
      /**
       * <pre>
       * nfs represents an NFS mount on the host that shares a pod's lifetime
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
       * @return Whether the nfs field is set.
       */
      public boolean hasNfs() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host that shares a pod's lifetime
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
       * @return The nfs.
       */
      public io.kubernetes.client.proto.V1.NFSVolumeSource getNfs() {
        if (nfsBuilder_ == null) {
          return nfs_ == null ? io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance() : nfs_;
        } else {
          return nfsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host that shares a pod's lifetime
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
       */
      public Builder setNfs(io.kubernetes.client.proto.V1.NFSVolumeSource value) {
        if (nfsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nfs_ = value;
        } else {
          nfsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host that shares a pod's lifetime
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
       */
      public Builder setNfs(
          io.kubernetes.client.proto.V1.NFSVolumeSource.Builder builderForValue) {
        if (nfsBuilder_ == null) {
          nfs_ = builderForValue.build();
        } else {
          nfsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host that shares a pod's lifetime
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
       */
      public Builder mergeNfs(io.kubernetes.client.proto.V1.NFSVolumeSource value) {
        if (nfsBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            nfs_ != null &&
            nfs_ != io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance()) {
            getNfsBuilder().mergeFrom(value);
          } else {
            nfs_ = value;
          }
        } else {
          nfsBuilder_.mergeFrom(value);
        }
        if (nfs_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host that shares a pod's lifetime
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
       */
      public Builder clearNfs() {
        bitField0_ = (bitField0_ & ~0x00000040);
        nfs_ = null;
        if (nfsBuilder_ != null) {
          nfsBuilder_.dispose();
          nfsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host that shares a pod's lifetime
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
       */
      public io.kubernetes.client.proto.V1.NFSVolumeSource.Builder getNfsBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getNfsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host that shares a pod's lifetime
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
       */
      public io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder getNfsOrBuilder() {
        if (nfsBuilder_ != null) {
          return nfsBuilder_.getMessageOrBuilder();
        } else {
          return nfs_ == null ?
              io.kubernetes.client.proto.V1.NFSVolumeSource.getDefaultInstance() : nfs_;
        }
      }
      /**
       * <pre>
       * nfs represents an NFS mount on the host that shares a pod's lifetime
       * More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.NFSVolumeSource nfs = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.NFSVolumeSource, io.kubernetes.client.proto.V1.NFSVolumeSource.Builder, io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder> 
          getNfsFieldBuilder() {
        if (nfsBuilder_ == null) {
          nfsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.NFSVolumeSource, io.kubernetes.client.proto.V1.NFSVolumeSource.Builder, io.kubernetes.client.proto.V1.NFSVolumeSourceOrBuilder>(
                  getNfs(),
                  getParentForChildren(),
                  isClean());
          nfs_ = null;
        }
        return nfsBuilder_;
      }

      private io.kubernetes.client.proto.V1.ISCSIVolumeSource iscsi_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ISCSIVolumeSource, io.kubernetes.client.proto.V1.ISCSIVolumeSource.Builder, io.kubernetes.client.proto.V1.ISCSIVolumeSourceOrBuilder> iscsiBuilder_;
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://examples.k8s.io/volumes/iscsi/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
       * @return Whether the iscsi field is set.
       */
      public boolean hasIscsi() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://examples.k8s.io/volumes/iscsi/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
       * @return The iscsi.
       */
      public io.kubernetes.client.proto.V1.ISCSIVolumeSource getIscsi() {
        if (iscsiBuilder_ == null) {
          return iscsi_ == null ? io.kubernetes.client.proto.V1.ISCSIVolumeSource.getDefaultInstance() : iscsi_;
        } else {
          return iscsiBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://examples.k8s.io/volumes/iscsi/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
       */
      public Builder setIscsi(io.kubernetes.client.proto.V1.ISCSIVolumeSource value) {
        if (iscsiBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          iscsi_ = value;
        } else {
          iscsiBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://examples.k8s.io/volumes/iscsi/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
       */
      public Builder setIscsi(
          io.kubernetes.client.proto.V1.ISCSIVolumeSource.Builder builderForValue) {
        if (iscsiBuilder_ == null) {
          iscsi_ = builderForValue.build();
        } else {
          iscsiBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://examples.k8s.io/volumes/iscsi/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
       */
      public Builder mergeIscsi(io.kubernetes.client.proto.V1.ISCSIVolumeSource value) {
        if (iscsiBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
            iscsi_ != null &&
            iscsi_ != io.kubernetes.client.proto.V1.ISCSIVolumeSource.getDefaultInstance()) {
            getIscsiBuilder().mergeFrom(value);
          } else {
            iscsi_ = value;
          }
        } else {
          iscsiBuilder_.mergeFrom(value);
        }
        if (iscsi_ != null) {
          bitField0_ |= 0x00000080;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://examples.k8s.io/volumes/iscsi/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
       */
      public Builder clearIscsi() {
        bitField0_ = (bitField0_ & ~0x00000080);
        iscsi_ = null;
        if (iscsiBuilder_ != null) {
          iscsiBuilder_.dispose();
          iscsiBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://examples.k8s.io/volumes/iscsi/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ISCSIVolumeSource.Builder getIscsiBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getIscsiFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://examples.k8s.io/volumes/iscsi/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
       */
      public io.kubernetes.client.proto.V1.ISCSIVolumeSourceOrBuilder getIscsiOrBuilder() {
        if (iscsiBuilder_ != null) {
          return iscsiBuilder_.getMessageOrBuilder();
        } else {
          return iscsi_ == null ?
              io.kubernetes.client.proto.V1.ISCSIVolumeSource.getDefaultInstance() : iscsi_;
        }
      }
      /**
       * <pre>
       * iscsi represents an ISCSI Disk resource that is attached to a
       * kubelet's host machine and then exposed to the pod.
       * More info: https://examples.k8s.io/volumes/iscsi/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ISCSIVolumeSource iscsi = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ISCSIVolumeSource, io.kubernetes.client.proto.V1.ISCSIVolumeSource.Builder, io.kubernetes.client.proto.V1.ISCSIVolumeSourceOrBuilder> 
          getIscsiFieldBuilder() {
        if (iscsiBuilder_ == null) {
          iscsiBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ISCSIVolumeSource, io.kubernetes.client.proto.V1.ISCSIVolumeSource.Builder, io.kubernetes.client.proto.V1.ISCSIVolumeSourceOrBuilder>(
                  getIscsi(),
                  getParentForChildren(),
                  isClean());
          iscsi_ = null;
        }
        return iscsiBuilder_;
      }

      private io.kubernetes.client.proto.V1.GlusterfsVolumeSource glusterfs_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GlusterfsVolumeSource, io.kubernetes.client.proto.V1.GlusterfsVolumeSource.Builder, io.kubernetes.client.proto.V1.GlusterfsVolumeSourceOrBuilder> glusterfsBuilder_;
      /**
       * <pre>
       * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
       * @return Whether the glusterfs field is set.
       */
      public boolean hasGlusterfs() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
       * @return The glusterfs.
       */
      public io.kubernetes.client.proto.V1.GlusterfsVolumeSource getGlusterfs() {
        if (glusterfsBuilder_ == null) {
          return glusterfs_ == null ? io.kubernetes.client.proto.V1.GlusterfsVolumeSource.getDefaultInstance() : glusterfs_;
        } else {
          return glusterfsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
       */
      public Builder setGlusterfs(io.kubernetes.client.proto.V1.GlusterfsVolumeSource value) {
        if (glusterfsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          glusterfs_ = value;
        } else {
          glusterfsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
       */
      public Builder setGlusterfs(
          io.kubernetes.client.proto.V1.GlusterfsVolumeSource.Builder builderForValue) {
        if (glusterfsBuilder_ == null) {
          glusterfs_ = builderForValue.build();
        } else {
          glusterfsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
       */
      public Builder mergeGlusterfs(io.kubernetes.client.proto.V1.GlusterfsVolumeSource value) {
        if (glusterfsBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
            glusterfs_ != null &&
            glusterfs_ != io.kubernetes.client.proto.V1.GlusterfsVolumeSource.getDefaultInstance()) {
            getGlusterfsBuilder().mergeFrom(value);
          } else {
            glusterfs_ = value;
          }
        } else {
          glusterfsBuilder_.mergeFrom(value);
        }
        if (glusterfs_ != null) {
          bitField0_ |= 0x00000100;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
       */
      public Builder clearGlusterfs() {
        bitField0_ = (bitField0_ & ~0x00000100);
        glusterfs_ = null;
        if (glusterfsBuilder_ != null) {
          glusterfsBuilder_.dispose();
          glusterfsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
       */
      public io.kubernetes.client.proto.V1.GlusterfsVolumeSource.Builder getGlusterfsBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getGlusterfsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
       */
      public io.kubernetes.client.proto.V1.GlusterfsVolumeSourceOrBuilder getGlusterfsOrBuilder() {
        if (glusterfsBuilder_ != null) {
          return glusterfsBuilder_.getMessageOrBuilder();
        } else {
          return glusterfs_ == null ?
              io.kubernetes.client.proto.V1.GlusterfsVolumeSource.getDefaultInstance() : glusterfs_;
        }
      }
      /**
       * <pre>
       * glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/glusterfs/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.GlusterfsVolumeSource glusterfs = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.GlusterfsVolumeSource, io.kubernetes.client.proto.V1.GlusterfsVolumeSource.Builder, io.kubernetes.client.proto.V1.GlusterfsVolumeSourceOrBuilder> 
          getGlusterfsFieldBuilder() {
        if (glusterfsBuilder_ == null) {
          glusterfsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.GlusterfsVolumeSource, io.kubernetes.client.proto.V1.GlusterfsVolumeSource.Builder, io.kubernetes.client.proto.V1.GlusterfsVolumeSourceOrBuilder>(
                  getGlusterfs(),
                  getParentForChildren(),
                  isClean());
          glusterfs_ = null;
        }
        return glusterfsBuilder_;
      }

      private io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource persistentVolumeClaim_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource, io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSourceOrBuilder> persistentVolumeClaimBuilder_;
      /**
       * <pre>
       * persistentVolumeClaimVolumeSource represents a reference to a
       * PersistentVolumeClaim in the same namespace.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
       * @return Whether the persistentVolumeClaim field is set.
       */
      public boolean hasPersistentVolumeClaim() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * persistentVolumeClaimVolumeSource represents a reference to a
       * PersistentVolumeClaim in the same namespace.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
       * @return The persistentVolumeClaim.
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource getPersistentVolumeClaim() {
        if (persistentVolumeClaimBuilder_ == null) {
          return persistentVolumeClaim_ == null ? io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.getDefaultInstance() : persistentVolumeClaim_;
        } else {
          return persistentVolumeClaimBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * persistentVolumeClaimVolumeSource represents a reference to a
       * PersistentVolumeClaim in the same namespace.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
       */
      public Builder setPersistentVolumeClaim(io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource value) {
        if (persistentVolumeClaimBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          persistentVolumeClaim_ = value;
        } else {
          persistentVolumeClaimBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persistentVolumeClaimVolumeSource represents a reference to a
       * PersistentVolumeClaim in the same namespace.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
       */
      public Builder setPersistentVolumeClaim(
          io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.Builder builderForValue) {
        if (persistentVolumeClaimBuilder_ == null) {
          persistentVolumeClaim_ = builderForValue.build();
        } else {
          persistentVolumeClaimBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persistentVolumeClaimVolumeSource represents a reference to a
       * PersistentVolumeClaim in the same namespace.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
       */
      public Builder mergePersistentVolumeClaim(io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource value) {
        if (persistentVolumeClaimBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            persistentVolumeClaim_ != null &&
            persistentVolumeClaim_ != io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.getDefaultInstance()) {
            getPersistentVolumeClaimBuilder().mergeFrom(value);
          } else {
            persistentVolumeClaim_ = value;
          }
        } else {
          persistentVolumeClaimBuilder_.mergeFrom(value);
        }
        if (persistentVolumeClaim_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * persistentVolumeClaimVolumeSource represents a reference to a
       * PersistentVolumeClaim in the same namespace.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
       */
      public Builder clearPersistentVolumeClaim() {
        bitField0_ = (bitField0_ & ~0x00000200);
        persistentVolumeClaim_ = null;
        if (persistentVolumeClaimBuilder_ != null) {
          persistentVolumeClaimBuilder_.dispose();
          persistentVolumeClaimBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persistentVolumeClaimVolumeSource represents a reference to a
       * PersistentVolumeClaim in the same namespace.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.Builder getPersistentVolumeClaimBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getPersistentVolumeClaimFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * persistentVolumeClaimVolumeSource represents a reference to a
       * PersistentVolumeClaim in the same namespace.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
       */
      public io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSourceOrBuilder getPersistentVolumeClaimOrBuilder() {
        if (persistentVolumeClaimBuilder_ != null) {
          return persistentVolumeClaimBuilder_.getMessageOrBuilder();
        } else {
          return persistentVolumeClaim_ == null ?
              io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.getDefaultInstance() : persistentVolumeClaim_;
        }
      }
      /**
       * <pre>
       * persistentVolumeClaimVolumeSource represents a reference to a
       * PersistentVolumeClaim in the same namespace.
       * More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource, io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSourceOrBuilder> 
          getPersistentVolumeClaimFieldBuilder() {
        if (persistentVolumeClaimBuilder_ == null) {
          persistentVolumeClaimBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource, io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSource.Builder, io.kubernetes.client.proto.V1.PersistentVolumeClaimVolumeSourceOrBuilder>(
                  getPersistentVolumeClaim(),
                  getParentForChildren(),
                  isClean());
          persistentVolumeClaim_ = null;
        }
        return persistentVolumeClaimBuilder_;
      }

      private io.kubernetes.client.proto.V1.RBDVolumeSource rbd_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.RBDVolumeSource, io.kubernetes.client.proto.V1.RBDVolumeSource.Builder, io.kubernetes.client.proto.V1.RBDVolumeSourceOrBuilder> rbdBuilder_;
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
       * @return Whether the rbd field is set.
       */
      public boolean hasRbd() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
       * @return The rbd.
       */
      public io.kubernetes.client.proto.V1.RBDVolumeSource getRbd() {
        if (rbdBuilder_ == null) {
          return rbd_ == null ? io.kubernetes.client.proto.V1.RBDVolumeSource.getDefaultInstance() : rbd_;
        } else {
          return rbdBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
       */
      public Builder setRbd(io.kubernetes.client.proto.V1.RBDVolumeSource value) {
        if (rbdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rbd_ = value;
        } else {
          rbdBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
       */
      public Builder setRbd(
          io.kubernetes.client.proto.V1.RBDVolumeSource.Builder builderForValue) {
        if (rbdBuilder_ == null) {
          rbd_ = builderForValue.build();
        } else {
          rbdBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
       */
      public Builder mergeRbd(io.kubernetes.client.proto.V1.RBDVolumeSource value) {
        if (rbdBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            rbd_ != null &&
            rbd_ != io.kubernetes.client.proto.V1.RBDVolumeSource.getDefaultInstance()) {
            getRbdBuilder().mergeFrom(value);
          } else {
            rbd_ = value;
          }
        } else {
          rbdBuilder_.mergeFrom(value);
        }
        if (rbd_ != null) {
          bitField0_ |= 0x00000400;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
       */
      public Builder clearRbd() {
        bitField0_ = (bitField0_ & ~0x00000400);
        rbd_ = null;
        if (rbdBuilder_ != null) {
          rbdBuilder_.dispose();
          rbdBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
       */
      public io.kubernetes.client.proto.V1.RBDVolumeSource.Builder getRbdBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getRbdFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
       */
      public io.kubernetes.client.proto.V1.RBDVolumeSourceOrBuilder getRbdOrBuilder() {
        if (rbdBuilder_ != null) {
          return rbdBuilder_.getMessageOrBuilder();
        } else {
          return rbd_ == null ?
              io.kubernetes.client.proto.V1.RBDVolumeSource.getDefaultInstance() : rbd_;
        }
      }
      /**
       * <pre>
       * rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       * More info: https://examples.k8s.io/volumes/rbd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.RBDVolumeSource rbd = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.RBDVolumeSource, io.kubernetes.client.proto.V1.RBDVolumeSource.Builder, io.kubernetes.client.proto.V1.RBDVolumeSourceOrBuilder> 
          getRbdFieldBuilder() {
        if (rbdBuilder_ == null) {
          rbdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.RBDVolumeSource, io.kubernetes.client.proto.V1.RBDVolumeSource.Builder, io.kubernetes.client.proto.V1.RBDVolumeSourceOrBuilder>(
                  getRbd(),
                  getParentForChildren(),
                  isClean());
          rbd_ = null;
        }
        return rbdBuilder_;
      }

      private io.kubernetes.client.proto.V1.FlexVolumeSource flexVolume_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FlexVolumeSource, io.kubernetes.client.proto.V1.FlexVolumeSource.Builder, io.kubernetes.client.proto.V1.FlexVolumeSourceOrBuilder> flexVolumeBuilder_;
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
       * @return Whether the flexVolume field is set.
       */
      public boolean hasFlexVolume() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
       * @return The flexVolume.
       */
      public io.kubernetes.client.proto.V1.FlexVolumeSource getFlexVolume() {
        if (flexVolumeBuilder_ == null) {
          return flexVolume_ == null ? io.kubernetes.client.proto.V1.FlexVolumeSource.getDefaultInstance() : flexVolume_;
        } else {
          return flexVolumeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
       */
      public Builder setFlexVolume(io.kubernetes.client.proto.V1.FlexVolumeSource value) {
        if (flexVolumeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          flexVolume_ = value;
        } else {
          flexVolumeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
       */
      public Builder setFlexVolume(
          io.kubernetes.client.proto.V1.FlexVolumeSource.Builder builderForValue) {
        if (flexVolumeBuilder_ == null) {
          flexVolume_ = builderForValue.build();
        } else {
          flexVolumeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
       */
      public Builder mergeFlexVolume(io.kubernetes.client.proto.V1.FlexVolumeSource value) {
        if (flexVolumeBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0) &&
            flexVolume_ != null &&
            flexVolume_ != io.kubernetes.client.proto.V1.FlexVolumeSource.getDefaultInstance()) {
            getFlexVolumeBuilder().mergeFrom(value);
          } else {
            flexVolume_ = value;
          }
        } else {
          flexVolumeBuilder_.mergeFrom(value);
        }
        if (flexVolume_ != null) {
          bitField0_ |= 0x00000800;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
       */
      public Builder clearFlexVolume() {
        bitField0_ = (bitField0_ & ~0x00000800);
        flexVolume_ = null;
        if (flexVolumeBuilder_ != null) {
          flexVolumeBuilder_.dispose();
          flexVolumeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
       */
      public io.kubernetes.client.proto.V1.FlexVolumeSource.Builder getFlexVolumeBuilder() {
        bitField0_ |= 0x00000800;
        onChanged();
        return getFlexVolumeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
       */
      public io.kubernetes.client.proto.V1.FlexVolumeSourceOrBuilder getFlexVolumeOrBuilder() {
        if (flexVolumeBuilder_ != null) {
          return flexVolumeBuilder_.getMessageOrBuilder();
        } else {
          return flexVolume_ == null ?
              io.kubernetes.client.proto.V1.FlexVolumeSource.getDefaultInstance() : flexVolume_;
        }
      }
      /**
       * <pre>
       * flexVolume represents a generic volume resource that is
       * provisioned/attached using an exec based plugin.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlexVolumeSource flexVolume = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FlexVolumeSource, io.kubernetes.client.proto.V1.FlexVolumeSource.Builder, io.kubernetes.client.proto.V1.FlexVolumeSourceOrBuilder> 
          getFlexVolumeFieldBuilder() {
        if (flexVolumeBuilder_ == null) {
          flexVolumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.FlexVolumeSource, io.kubernetes.client.proto.V1.FlexVolumeSource.Builder, io.kubernetes.client.proto.V1.FlexVolumeSourceOrBuilder>(
                  getFlexVolume(),
                  getParentForChildren(),
                  isClean());
          flexVolume_ = null;
        }
        return flexVolumeBuilder_;
      }

      private io.kubernetes.client.proto.V1.CinderVolumeSource cinder_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CinderVolumeSource, io.kubernetes.client.proto.V1.CinderVolumeSource.Builder, io.kubernetes.client.proto.V1.CinderVolumeSourceOrBuilder> cinderBuilder_;
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
       * @return Whether the cinder field is set.
       */
      public boolean hasCinder() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
       * @return The cinder.
       */
      public io.kubernetes.client.proto.V1.CinderVolumeSource getCinder() {
        if (cinderBuilder_ == null) {
          return cinder_ == null ? io.kubernetes.client.proto.V1.CinderVolumeSource.getDefaultInstance() : cinder_;
        } else {
          return cinderBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
       */
      public Builder setCinder(io.kubernetes.client.proto.V1.CinderVolumeSource value) {
        if (cinderBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cinder_ = value;
        } else {
          cinderBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
       */
      public Builder setCinder(
          io.kubernetes.client.proto.V1.CinderVolumeSource.Builder builderForValue) {
        if (cinderBuilder_ == null) {
          cinder_ = builderForValue.build();
        } else {
          cinderBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
       */
      public Builder mergeCinder(io.kubernetes.client.proto.V1.CinderVolumeSource value) {
        if (cinderBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0) &&
            cinder_ != null &&
            cinder_ != io.kubernetes.client.proto.V1.CinderVolumeSource.getDefaultInstance()) {
            getCinderBuilder().mergeFrom(value);
          } else {
            cinder_ = value;
          }
        } else {
          cinderBuilder_.mergeFrom(value);
        }
        if (cinder_ != null) {
          bitField0_ |= 0x00001000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
       */
      public Builder clearCinder() {
        bitField0_ = (bitField0_ & ~0x00001000);
        cinder_ = null;
        if (cinderBuilder_ != null) {
          cinderBuilder_.dispose();
          cinderBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
       */
      public io.kubernetes.client.proto.V1.CinderVolumeSource.Builder getCinderBuilder() {
        bitField0_ |= 0x00001000;
        onChanged();
        return getCinderFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
       */
      public io.kubernetes.client.proto.V1.CinderVolumeSourceOrBuilder getCinderOrBuilder() {
        if (cinderBuilder_ != null) {
          return cinderBuilder_.getMessageOrBuilder();
        } else {
          return cinder_ == null ?
              io.kubernetes.client.proto.V1.CinderVolumeSource.getDefaultInstance() : cinder_;
        }
      }
      /**
       * <pre>
       * cinder represents a cinder volume attached and mounted on kubelets host machine.
       * More info: https://examples.k8s.io/mysql-cinder-pd/README.md
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CinderVolumeSource cinder = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CinderVolumeSource, io.kubernetes.client.proto.V1.CinderVolumeSource.Builder, io.kubernetes.client.proto.V1.CinderVolumeSourceOrBuilder> 
          getCinderFieldBuilder() {
        if (cinderBuilder_ == null) {
          cinderBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.CinderVolumeSource, io.kubernetes.client.proto.V1.CinderVolumeSource.Builder, io.kubernetes.client.proto.V1.CinderVolumeSourceOrBuilder>(
                  getCinder(),
                  getParentForChildren(),
                  isClean());
          cinder_ = null;
        }
        return cinderBuilder_;
      }

      private io.kubernetes.client.proto.V1.CephFSVolumeSource cephfs_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CephFSVolumeSource, io.kubernetes.client.proto.V1.CephFSVolumeSource.Builder, io.kubernetes.client.proto.V1.CephFSVolumeSourceOrBuilder> cephfsBuilder_;
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
       * @return Whether the cephfs field is set.
       */
      public boolean hasCephfs() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
       * @return The cephfs.
       */
      public io.kubernetes.client.proto.V1.CephFSVolumeSource getCephfs() {
        if (cephfsBuilder_ == null) {
          return cephfs_ == null ? io.kubernetes.client.proto.V1.CephFSVolumeSource.getDefaultInstance() : cephfs_;
        } else {
          return cephfsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
       */
      public Builder setCephfs(io.kubernetes.client.proto.V1.CephFSVolumeSource value) {
        if (cephfsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cephfs_ = value;
        } else {
          cephfsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
       */
      public Builder setCephfs(
          io.kubernetes.client.proto.V1.CephFSVolumeSource.Builder builderForValue) {
        if (cephfsBuilder_ == null) {
          cephfs_ = builderForValue.build();
        } else {
          cephfsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
       */
      public Builder mergeCephfs(io.kubernetes.client.proto.V1.CephFSVolumeSource value) {
        if (cephfsBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0) &&
            cephfs_ != null &&
            cephfs_ != io.kubernetes.client.proto.V1.CephFSVolumeSource.getDefaultInstance()) {
            getCephfsBuilder().mergeFrom(value);
          } else {
            cephfs_ = value;
          }
        } else {
          cephfsBuilder_.mergeFrom(value);
        }
        if (cephfs_ != null) {
          bitField0_ |= 0x00002000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
       */
      public Builder clearCephfs() {
        bitField0_ = (bitField0_ & ~0x00002000);
        cephfs_ = null;
        if (cephfsBuilder_ != null) {
          cephfsBuilder_.dispose();
          cephfsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
       */
      public io.kubernetes.client.proto.V1.CephFSVolumeSource.Builder getCephfsBuilder() {
        bitField0_ |= 0x00002000;
        onChanged();
        return getCephfsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
       */
      public io.kubernetes.client.proto.V1.CephFSVolumeSourceOrBuilder getCephfsOrBuilder() {
        if (cephfsBuilder_ != null) {
          return cephfsBuilder_.getMessageOrBuilder();
        } else {
          return cephfs_ == null ?
              io.kubernetes.client.proto.V1.CephFSVolumeSource.getDefaultInstance() : cephfs_;
        }
      }
      /**
       * <pre>
       * cephFS represents a Ceph FS mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CephFSVolumeSource cephfs = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CephFSVolumeSource, io.kubernetes.client.proto.V1.CephFSVolumeSource.Builder, io.kubernetes.client.proto.V1.CephFSVolumeSourceOrBuilder> 
          getCephfsFieldBuilder() {
        if (cephfsBuilder_ == null) {
          cephfsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.CephFSVolumeSource, io.kubernetes.client.proto.V1.CephFSVolumeSource.Builder, io.kubernetes.client.proto.V1.CephFSVolumeSourceOrBuilder>(
                  getCephfs(),
                  getParentForChildren(),
                  isClean());
          cephfs_ = null;
        }
        return cephfsBuilder_;
      }

      private io.kubernetes.client.proto.V1.FlockerVolumeSource flocker_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FlockerVolumeSource, io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder, io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder> flockerBuilder_;
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
       * @return Whether the flocker field is set.
       */
      public boolean hasFlocker() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
       * @return The flocker.
       */
      public io.kubernetes.client.proto.V1.FlockerVolumeSource getFlocker() {
        if (flockerBuilder_ == null) {
          return flocker_ == null ? io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance() : flocker_;
        } else {
          return flockerBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
       */
      public Builder setFlocker(io.kubernetes.client.proto.V1.FlockerVolumeSource value) {
        if (flockerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          flocker_ = value;
        } else {
          flockerBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
       */
      public Builder setFlocker(
          io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder builderForValue) {
        if (flockerBuilder_ == null) {
          flocker_ = builderForValue.build();
        } else {
          flockerBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
       */
      public Builder mergeFlocker(io.kubernetes.client.proto.V1.FlockerVolumeSource value) {
        if (flockerBuilder_ == null) {
          if (((bitField0_ & 0x00004000) != 0) &&
            flocker_ != null &&
            flocker_ != io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance()) {
            getFlockerBuilder().mergeFrom(value);
          } else {
            flocker_ = value;
          }
        } else {
          flockerBuilder_.mergeFrom(value);
        }
        if (flocker_ != null) {
          bitField0_ |= 0x00004000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
       */
      public Builder clearFlocker() {
        bitField0_ = (bitField0_ & ~0x00004000);
        flocker_ = null;
        if (flockerBuilder_ != null) {
          flockerBuilder_.dispose();
          flockerBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
       */
      public io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder getFlockerBuilder() {
        bitField0_ |= 0x00004000;
        onChanged();
        return getFlockerFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
       */
      public io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder getFlockerOrBuilder() {
        if (flockerBuilder_ != null) {
          return flockerBuilder_.getMessageOrBuilder();
        } else {
          return flocker_ == null ?
              io.kubernetes.client.proto.V1.FlockerVolumeSource.getDefaultInstance() : flocker_;
        }
      }
      /**
       * <pre>
       * flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FlockerVolumeSource flocker = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FlockerVolumeSource, io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder, io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder> 
          getFlockerFieldBuilder() {
        if (flockerBuilder_ == null) {
          flockerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.FlockerVolumeSource, io.kubernetes.client.proto.V1.FlockerVolumeSource.Builder, io.kubernetes.client.proto.V1.FlockerVolumeSourceOrBuilder>(
                  getFlocker(),
                  getParentForChildren(),
                  isClean());
          flocker_ = null;
        }
        return flockerBuilder_;
      }

      private io.kubernetes.client.proto.V1.DownwardAPIVolumeSource downwardAPI_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.DownwardAPIVolumeSource, io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.Builder, io.kubernetes.client.proto.V1.DownwardAPIVolumeSourceOrBuilder> downwardAPIBuilder_;
      /**
       * <pre>
       * downwardAPI represents downward API about the pod that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
       * @return Whether the downwardAPI field is set.
       */
      public boolean hasDownwardAPI() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <pre>
       * downwardAPI represents downward API about the pod that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
       * @return The downwardAPI.
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeSource getDownwardAPI() {
        if (downwardAPIBuilder_ == null) {
          return downwardAPI_ == null ? io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.getDefaultInstance() : downwardAPI_;
        } else {
          return downwardAPIBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * downwardAPI represents downward API about the pod that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
       */
      public Builder setDownwardAPI(io.kubernetes.client.proto.V1.DownwardAPIVolumeSource value) {
        if (downwardAPIBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          downwardAPI_ = value;
        } else {
          downwardAPIBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * downwardAPI represents downward API about the pod that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
       */
      public Builder setDownwardAPI(
          io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.Builder builderForValue) {
        if (downwardAPIBuilder_ == null) {
          downwardAPI_ = builderForValue.build();
        } else {
          downwardAPIBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * downwardAPI represents downward API about the pod that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
       */
      public Builder mergeDownwardAPI(io.kubernetes.client.proto.V1.DownwardAPIVolumeSource value) {
        if (downwardAPIBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0) &&
            downwardAPI_ != null &&
            downwardAPI_ != io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.getDefaultInstance()) {
            getDownwardAPIBuilder().mergeFrom(value);
          } else {
            downwardAPI_ = value;
          }
        } else {
          downwardAPIBuilder_.mergeFrom(value);
        }
        if (downwardAPI_ != null) {
          bitField0_ |= 0x00008000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * downwardAPI represents downward API about the pod that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
       */
      public Builder clearDownwardAPI() {
        bitField0_ = (bitField0_ & ~0x00008000);
        downwardAPI_ = null;
        if (downwardAPIBuilder_ != null) {
          downwardAPIBuilder_.dispose();
          downwardAPIBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * downwardAPI represents downward API about the pod that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.Builder getDownwardAPIBuilder() {
        bitField0_ |= 0x00008000;
        onChanged();
        return getDownwardAPIFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * downwardAPI represents downward API about the pod that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
       */
      public io.kubernetes.client.proto.V1.DownwardAPIVolumeSourceOrBuilder getDownwardAPIOrBuilder() {
        if (downwardAPIBuilder_ != null) {
          return downwardAPIBuilder_.getMessageOrBuilder();
        } else {
          return downwardAPI_ == null ?
              io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.getDefaultInstance() : downwardAPI_;
        }
      }
      /**
       * <pre>
       * downwardAPI represents downward API about the pod that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.DownwardAPIVolumeSource downwardAPI = 16;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.DownwardAPIVolumeSource, io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.Builder, io.kubernetes.client.proto.V1.DownwardAPIVolumeSourceOrBuilder> 
          getDownwardAPIFieldBuilder() {
        if (downwardAPIBuilder_ == null) {
          downwardAPIBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.DownwardAPIVolumeSource, io.kubernetes.client.proto.V1.DownwardAPIVolumeSource.Builder, io.kubernetes.client.proto.V1.DownwardAPIVolumeSourceOrBuilder>(
                  getDownwardAPI(),
                  getParentForChildren(),
                  isClean());
          downwardAPI_ = null;
        }
        return downwardAPIBuilder_;
      }

      private io.kubernetes.client.proto.V1.FCVolumeSource fc_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FCVolumeSource, io.kubernetes.client.proto.V1.FCVolumeSource.Builder, io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder> fcBuilder_;
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
       * @return Whether the fc field is set.
       */
      public boolean hasFc() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
       * @return The fc.
       */
      public io.kubernetes.client.proto.V1.FCVolumeSource getFc() {
        if (fcBuilder_ == null) {
          return fc_ == null ? io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance() : fc_;
        } else {
          return fcBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
       */
      public Builder setFc(io.kubernetes.client.proto.V1.FCVolumeSource value) {
        if (fcBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fc_ = value;
        } else {
          fcBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
       */
      public Builder setFc(
          io.kubernetes.client.proto.V1.FCVolumeSource.Builder builderForValue) {
        if (fcBuilder_ == null) {
          fc_ = builderForValue.build();
        } else {
          fcBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
       */
      public Builder mergeFc(io.kubernetes.client.proto.V1.FCVolumeSource value) {
        if (fcBuilder_ == null) {
          if (((bitField0_ & 0x00010000) != 0) &&
            fc_ != null &&
            fc_ != io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance()) {
            getFcBuilder().mergeFrom(value);
          } else {
            fc_ = value;
          }
        } else {
          fcBuilder_.mergeFrom(value);
        }
        if (fc_ != null) {
          bitField0_ |= 0x00010000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
       */
      public Builder clearFc() {
        bitField0_ = (bitField0_ & ~0x00010000);
        fc_ = null;
        if (fcBuilder_ != null) {
          fcBuilder_.dispose();
          fcBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
       */
      public io.kubernetes.client.proto.V1.FCVolumeSource.Builder getFcBuilder() {
        bitField0_ |= 0x00010000;
        onChanged();
        return getFcFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
       */
      public io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder getFcOrBuilder() {
        if (fcBuilder_ != null) {
          return fcBuilder_.getMessageOrBuilder();
        } else {
          return fc_ == null ?
              io.kubernetes.client.proto.V1.FCVolumeSource.getDefaultInstance() : fc_;
        }
      }
      /**
       * <pre>
       * fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.FCVolumeSource fc = 17;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.FCVolumeSource, io.kubernetes.client.proto.V1.FCVolumeSource.Builder, io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder> 
          getFcFieldBuilder() {
        if (fcBuilder_ == null) {
          fcBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.FCVolumeSource, io.kubernetes.client.proto.V1.FCVolumeSource.Builder, io.kubernetes.client.proto.V1.FCVolumeSourceOrBuilder>(
                  getFc(),
                  getParentForChildren(),
                  isClean());
          fc_ = null;
        }
        return fcBuilder_;
      }

      private io.kubernetes.client.proto.V1.AzureFileVolumeSource azureFile_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AzureFileVolumeSource, io.kubernetes.client.proto.V1.AzureFileVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureFileVolumeSourceOrBuilder> azureFileBuilder_;
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
       * @return Whether the azureFile field is set.
       */
      public boolean hasAzureFile() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
       * @return The azureFile.
       */
      public io.kubernetes.client.proto.V1.AzureFileVolumeSource getAzureFile() {
        if (azureFileBuilder_ == null) {
          return azureFile_ == null ? io.kubernetes.client.proto.V1.AzureFileVolumeSource.getDefaultInstance() : azureFile_;
        } else {
          return azureFileBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
       */
      public Builder setAzureFile(io.kubernetes.client.proto.V1.AzureFileVolumeSource value) {
        if (azureFileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          azureFile_ = value;
        } else {
          azureFileBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
       */
      public Builder setAzureFile(
          io.kubernetes.client.proto.V1.AzureFileVolumeSource.Builder builderForValue) {
        if (azureFileBuilder_ == null) {
          azureFile_ = builderForValue.build();
        } else {
          azureFileBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
       */
      public Builder mergeAzureFile(io.kubernetes.client.proto.V1.AzureFileVolumeSource value) {
        if (azureFileBuilder_ == null) {
          if (((bitField0_ & 0x00020000) != 0) &&
            azureFile_ != null &&
            azureFile_ != io.kubernetes.client.proto.V1.AzureFileVolumeSource.getDefaultInstance()) {
            getAzureFileBuilder().mergeFrom(value);
          } else {
            azureFile_ = value;
          }
        } else {
          azureFileBuilder_.mergeFrom(value);
        }
        if (azureFile_ != null) {
          bitField0_ |= 0x00020000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
       */
      public Builder clearAzureFile() {
        bitField0_ = (bitField0_ & ~0x00020000);
        azureFile_ = null;
        if (azureFileBuilder_ != null) {
          azureFileBuilder_.dispose();
          azureFileBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
       */
      public io.kubernetes.client.proto.V1.AzureFileVolumeSource.Builder getAzureFileBuilder() {
        bitField0_ |= 0x00020000;
        onChanged();
        return getAzureFileFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
       */
      public io.kubernetes.client.proto.V1.AzureFileVolumeSourceOrBuilder getAzureFileOrBuilder() {
        if (azureFileBuilder_ != null) {
          return azureFileBuilder_.getMessageOrBuilder();
        } else {
          return azureFile_ == null ?
              io.kubernetes.client.proto.V1.AzureFileVolumeSource.getDefaultInstance() : azureFile_;
        }
      }
      /**
       * <pre>
       * azureFile represents an Azure File Service mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureFileVolumeSource azureFile = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AzureFileVolumeSource, io.kubernetes.client.proto.V1.AzureFileVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureFileVolumeSourceOrBuilder> 
          getAzureFileFieldBuilder() {
        if (azureFileBuilder_ == null) {
          azureFileBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.AzureFileVolumeSource, io.kubernetes.client.proto.V1.AzureFileVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureFileVolumeSourceOrBuilder>(
                  getAzureFile(),
                  getParentForChildren(),
                  isClean());
          azureFile_ = null;
        }
        return azureFileBuilder_;
      }

      private io.kubernetes.client.proto.V1.ConfigMapVolumeSource configMap_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMapVolumeSource, io.kubernetes.client.proto.V1.ConfigMapVolumeSource.Builder, io.kubernetes.client.proto.V1.ConfigMapVolumeSourceOrBuilder> configMapBuilder_;
      /**
       * <pre>
       * configMap represents a configMap that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
       * @return Whether the configMap field is set.
       */
      public boolean hasConfigMap() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <pre>
       * configMap represents a configMap that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
       * @return The configMap.
       */
      public io.kubernetes.client.proto.V1.ConfigMapVolumeSource getConfigMap() {
        if (configMapBuilder_ == null) {
          return configMap_ == null ? io.kubernetes.client.proto.V1.ConfigMapVolumeSource.getDefaultInstance() : configMap_;
        } else {
          return configMapBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * configMap represents a configMap that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
       */
      public Builder setConfigMap(io.kubernetes.client.proto.V1.ConfigMapVolumeSource value) {
        if (configMapBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configMap_ = value;
        } else {
          configMapBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * configMap represents a configMap that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
       */
      public Builder setConfigMap(
          io.kubernetes.client.proto.V1.ConfigMapVolumeSource.Builder builderForValue) {
        if (configMapBuilder_ == null) {
          configMap_ = builderForValue.build();
        } else {
          configMapBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * configMap represents a configMap that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
       */
      public Builder mergeConfigMap(io.kubernetes.client.proto.V1.ConfigMapVolumeSource value) {
        if (configMapBuilder_ == null) {
          if (((bitField0_ & 0x00040000) != 0) &&
            configMap_ != null &&
            configMap_ != io.kubernetes.client.proto.V1.ConfigMapVolumeSource.getDefaultInstance()) {
            getConfigMapBuilder().mergeFrom(value);
          } else {
            configMap_ = value;
          }
        } else {
          configMapBuilder_.mergeFrom(value);
        }
        if (configMap_ != null) {
          bitField0_ |= 0x00040000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * configMap represents a configMap that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
       */
      public Builder clearConfigMap() {
        bitField0_ = (bitField0_ & ~0x00040000);
        configMap_ = null;
        if (configMapBuilder_ != null) {
          configMapBuilder_.dispose();
          configMapBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * configMap represents a configMap that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
       */
      public io.kubernetes.client.proto.V1.ConfigMapVolumeSource.Builder getConfigMapBuilder() {
        bitField0_ |= 0x00040000;
        onChanged();
        return getConfigMapFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * configMap represents a configMap that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
       */
      public io.kubernetes.client.proto.V1.ConfigMapVolumeSourceOrBuilder getConfigMapOrBuilder() {
        if (configMapBuilder_ != null) {
          return configMapBuilder_.getMessageOrBuilder();
        } else {
          return configMap_ == null ?
              io.kubernetes.client.proto.V1.ConfigMapVolumeSource.getDefaultInstance() : configMap_;
        }
      }
      /**
       * <pre>
       * configMap represents a configMap that should populate this volume
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ConfigMapVolumeSource configMap = 19;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ConfigMapVolumeSource, io.kubernetes.client.proto.V1.ConfigMapVolumeSource.Builder, io.kubernetes.client.proto.V1.ConfigMapVolumeSourceOrBuilder> 
          getConfigMapFieldBuilder() {
        if (configMapBuilder_ == null) {
          configMapBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ConfigMapVolumeSource, io.kubernetes.client.proto.V1.ConfigMapVolumeSource.Builder, io.kubernetes.client.proto.V1.ConfigMapVolumeSourceOrBuilder>(
                  getConfigMap(),
                  getParentForChildren(),
                  isClean());
          configMap_ = null;
        }
        return configMapBuilder_;
      }

      private io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource vsphereVolume_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder> vsphereVolumeBuilder_;
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
       * @return Whether the vsphereVolume field is set.
       */
      public boolean hasVsphereVolume() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
       * @return The vsphereVolume.
       */
      public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource getVsphereVolume() {
        if (vsphereVolumeBuilder_ == null) {
          return vsphereVolume_ == null ? io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance() : vsphereVolume_;
        } else {
          return vsphereVolumeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
       */
      public Builder setVsphereVolume(io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource value) {
        if (vsphereVolumeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          vsphereVolume_ = value;
        } else {
          vsphereVolumeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
       */
      public Builder setVsphereVolume(
          io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder builderForValue) {
        if (vsphereVolumeBuilder_ == null) {
          vsphereVolume_ = builderForValue.build();
        } else {
          vsphereVolumeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
       */
      public Builder mergeVsphereVolume(io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource value) {
        if (vsphereVolumeBuilder_ == null) {
          if (((bitField0_ & 0x00080000) != 0) &&
            vsphereVolume_ != null &&
            vsphereVolume_ != io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance()) {
            getVsphereVolumeBuilder().mergeFrom(value);
          } else {
            vsphereVolume_ = value;
          }
        } else {
          vsphereVolumeBuilder_.mergeFrom(value);
        }
        if (vsphereVolume_ != null) {
          bitField0_ |= 0x00080000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
       */
      public Builder clearVsphereVolume() {
        bitField0_ = (bitField0_ & ~0x00080000);
        vsphereVolume_ = null;
        if (vsphereVolumeBuilder_ != null) {
          vsphereVolumeBuilder_.dispose();
          vsphereVolumeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
       */
      public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder getVsphereVolumeBuilder() {
        bitField0_ |= 0x00080000;
        onChanged();
        return getVsphereVolumeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
       */
      public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder getVsphereVolumeOrBuilder() {
        if (vsphereVolumeBuilder_ != null) {
          return vsphereVolumeBuilder_.getMessageOrBuilder();
        } else {
          return vsphereVolume_ == null ?
              io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance() : vsphereVolume_;
        }
      }
      /**
       * <pre>
       * vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource vsphereVolume = 20;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder> 
          getVsphereVolumeFieldBuilder() {
        if (vsphereVolumeBuilder_ == null) {
          vsphereVolumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder>(
                  getVsphereVolume(),
                  getParentForChildren(),
                  isClean());
          vsphereVolume_ = null;
        }
        return vsphereVolumeBuilder_;
      }

      private io.kubernetes.client.proto.V1.QuobyteVolumeSource quobyte_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.QuobyteVolumeSource, io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder, io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder> quobyteBuilder_;
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
       * @return Whether the quobyte field is set.
       */
      public boolean hasQuobyte() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
       * @return The quobyte.
       */
      public io.kubernetes.client.proto.V1.QuobyteVolumeSource getQuobyte() {
        if (quobyteBuilder_ == null) {
          return quobyte_ == null ? io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance() : quobyte_;
        } else {
          return quobyteBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
       */
      public Builder setQuobyte(io.kubernetes.client.proto.V1.QuobyteVolumeSource value) {
        if (quobyteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          quobyte_ = value;
        } else {
          quobyteBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
       */
      public Builder setQuobyte(
          io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder builderForValue) {
        if (quobyteBuilder_ == null) {
          quobyte_ = builderForValue.build();
        } else {
          quobyteBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
       */
      public Builder mergeQuobyte(io.kubernetes.client.proto.V1.QuobyteVolumeSource value) {
        if (quobyteBuilder_ == null) {
          if (((bitField0_ & 0x00100000) != 0) &&
            quobyte_ != null &&
            quobyte_ != io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance()) {
            getQuobyteBuilder().mergeFrom(value);
          } else {
            quobyte_ = value;
          }
        } else {
          quobyteBuilder_.mergeFrom(value);
        }
        if (quobyte_ != null) {
          bitField0_ |= 0x00100000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
       */
      public Builder clearQuobyte() {
        bitField0_ = (bitField0_ & ~0x00100000);
        quobyte_ = null;
        if (quobyteBuilder_ != null) {
          quobyteBuilder_.dispose();
          quobyteBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
       */
      public io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder getQuobyteBuilder() {
        bitField0_ |= 0x00100000;
        onChanged();
        return getQuobyteFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
       */
      public io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder getQuobyteOrBuilder() {
        if (quobyteBuilder_ != null) {
          return quobyteBuilder_.getMessageOrBuilder();
        } else {
          return quobyte_ == null ?
              io.kubernetes.client.proto.V1.QuobyteVolumeSource.getDefaultInstance() : quobyte_;
        }
      }
      /**
       * <pre>
       * quobyte represents a Quobyte mount on the host that shares a pod's lifetime
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.QuobyteVolumeSource quobyte = 21;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.QuobyteVolumeSource, io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder, io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder> 
          getQuobyteFieldBuilder() {
        if (quobyteBuilder_ == null) {
          quobyteBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.QuobyteVolumeSource, io.kubernetes.client.proto.V1.QuobyteVolumeSource.Builder, io.kubernetes.client.proto.V1.QuobyteVolumeSourceOrBuilder>(
                  getQuobyte(),
                  getParentForChildren(),
                  isClean());
          quobyte_ = null;
        }
        return quobyteBuilder_;
      }

      private io.kubernetes.client.proto.V1.AzureDiskVolumeSource azureDisk_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AzureDiskVolumeSource, io.kubernetes.client.proto.V1.AzureDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder> azureDiskBuilder_;
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
       * @return Whether the azureDisk field is set.
       */
      public boolean hasAzureDisk() {
        return ((bitField0_ & 0x00200000) != 0);
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
       * @return The azureDisk.
       */
      public io.kubernetes.client.proto.V1.AzureDiskVolumeSource getAzureDisk() {
        if (azureDiskBuilder_ == null) {
          return azureDisk_ == null ? io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance() : azureDisk_;
        } else {
          return azureDiskBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
       */
      public Builder setAzureDisk(io.kubernetes.client.proto.V1.AzureDiskVolumeSource value) {
        if (azureDiskBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          azureDisk_ = value;
        } else {
          azureDiskBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
       */
      public Builder setAzureDisk(
          io.kubernetes.client.proto.V1.AzureDiskVolumeSource.Builder builderForValue) {
        if (azureDiskBuilder_ == null) {
          azureDisk_ = builderForValue.build();
        } else {
          azureDiskBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
       */
      public Builder mergeAzureDisk(io.kubernetes.client.proto.V1.AzureDiskVolumeSource value) {
        if (azureDiskBuilder_ == null) {
          if (((bitField0_ & 0x00200000) != 0) &&
            azureDisk_ != null &&
            azureDisk_ != io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance()) {
            getAzureDiskBuilder().mergeFrom(value);
          } else {
            azureDisk_ = value;
          }
        } else {
          azureDiskBuilder_.mergeFrom(value);
        }
        if (azureDisk_ != null) {
          bitField0_ |= 0x00200000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
       */
      public Builder clearAzureDisk() {
        bitField0_ = (bitField0_ & ~0x00200000);
        azureDisk_ = null;
        if (azureDiskBuilder_ != null) {
          azureDiskBuilder_.dispose();
          azureDiskBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
       */
      public io.kubernetes.client.proto.V1.AzureDiskVolumeSource.Builder getAzureDiskBuilder() {
        bitField0_ |= 0x00200000;
        onChanged();
        return getAzureDiskFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
       */
      public io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder getAzureDiskOrBuilder() {
        if (azureDiskBuilder_ != null) {
          return azureDiskBuilder_.getMessageOrBuilder();
        } else {
          return azureDisk_ == null ?
              io.kubernetes.client.proto.V1.AzureDiskVolumeSource.getDefaultInstance() : azureDisk_;
        }
      }
      /**
       * <pre>
       * azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.AzureDiskVolumeSource azureDisk = 22;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.AzureDiskVolumeSource, io.kubernetes.client.proto.V1.AzureDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder> 
          getAzureDiskFieldBuilder() {
        if (azureDiskBuilder_ == null) {
          azureDiskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.AzureDiskVolumeSource, io.kubernetes.client.proto.V1.AzureDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.AzureDiskVolumeSourceOrBuilder>(
                  getAzureDisk(),
                  getParentForChildren(),
                  isClean());
          azureDisk_ = null;
        }
        return azureDiskBuilder_;
      }

      private io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource photonPersistentDisk_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder> photonPersistentDiskBuilder_;
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
       * @return Whether the photonPersistentDisk field is set.
       */
      public boolean hasPhotonPersistentDisk() {
        return ((bitField0_ & 0x00400000) != 0);
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
       * @return The photonPersistentDisk.
       */
      public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource getPhotonPersistentDisk() {
        if (photonPersistentDiskBuilder_ == null) {
          return photonPersistentDisk_ == null ? io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance() : photonPersistentDisk_;
        } else {
          return photonPersistentDiskBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
       */
      public Builder setPhotonPersistentDisk(io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource value) {
        if (photonPersistentDiskBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          photonPersistentDisk_ = value;
        } else {
          photonPersistentDiskBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
       */
      public Builder setPhotonPersistentDisk(
          io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder builderForValue) {
        if (photonPersistentDiskBuilder_ == null) {
          photonPersistentDisk_ = builderForValue.build();
        } else {
          photonPersistentDiskBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
       */
      public Builder mergePhotonPersistentDisk(io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource value) {
        if (photonPersistentDiskBuilder_ == null) {
          if (((bitField0_ & 0x00400000) != 0) &&
            photonPersistentDisk_ != null &&
            photonPersistentDisk_ != io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance()) {
            getPhotonPersistentDiskBuilder().mergeFrom(value);
          } else {
            photonPersistentDisk_ = value;
          }
        } else {
          photonPersistentDiskBuilder_.mergeFrom(value);
        }
        if (photonPersistentDisk_ != null) {
          bitField0_ |= 0x00400000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
       */
      public Builder clearPhotonPersistentDisk() {
        bitField0_ = (bitField0_ & ~0x00400000);
        photonPersistentDisk_ = null;
        if (photonPersistentDiskBuilder_ != null) {
          photonPersistentDiskBuilder_.dispose();
          photonPersistentDiskBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
       */
      public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder getPhotonPersistentDiskBuilder() {
        bitField0_ |= 0x00400000;
        onChanged();
        return getPhotonPersistentDiskFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
       */
      public io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder getPhotonPersistentDiskOrBuilder() {
        if (photonPersistentDiskBuilder_ != null) {
          return photonPersistentDiskBuilder_.getMessageOrBuilder();
        } else {
          return photonPersistentDisk_ == null ?
              io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.getDefaultInstance() : photonPersistentDisk_;
        }
      }
      /**
       * <pre>
       * photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder> 
          getPhotonPersistentDiskFieldBuilder() {
        if (photonPersistentDiskBuilder_ == null) {
          photonPersistentDiskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSource.Builder, io.kubernetes.client.proto.V1.PhotonPersistentDiskVolumeSourceOrBuilder>(
                  getPhotonPersistentDisk(),
                  getParentForChildren(),
                  isClean());
          photonPersistentDisk_ = null;
        }
        return photonPersistentDiskBuilder_;
      }

      private io.kubernetes.client.proto.V1.ProjectedVolumeSource projected_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ProjectedVolumeSource, io.kubernetes.client.proto.V1.ProjectedVolumeSource.Builder, io.kubernetes.client.proto.V1.ProjectedVolumeSourceOrBuilder> projectedBuilder_;
      /**
       * <pre>
       * projected items for all in one resources secrets, configmaps, and downward API
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
       * @return Whether the projected field is set.
       */
      public boolean hasProjected() {
        return ((bitField0_ & 0x00800000) != 0);
      }
      /**
       * <pre>
       * projected items for all in one resources secrets, configmaps, and downward API
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
       * @return The projected.
       */
      public io.kubernetes.client.proto.V1.ProjectedVolumeSource getProjected() {
        if (projectedBuilder_ == null) {
          return projected_ == null ? io.kubernetes.client.proto.V1.ProjectedVolumeSource.getDefaultInstance() : projected_;
        } else {
          return projectedBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * projected items for all in one resources secrets, configmaps, and downward API
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
       */
      public Builder setProjected(io.kubernetes.client.proto.V1.ProjectedVolumeSource value) {
        if (projectedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          projected_ = value;
        } else {
          projectedBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * projected items for all in one resources secrets, configmaps, and downward API
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
       */
      public Builder setProjected(
          io.kubernetes.client.proto.V1.ProjectedVolumeSource.Builder builderForValue) {
        if (projectedBuilder_ == null) {
          projected_ = builderForValue.build();
        } else {
          projectedBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * projected items for all in one resources secrets, configmaps, and downward API
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
       */
      public Builder mergeProjected(io.kubernetes.client.proto.V1.ProjectedVolumeSource value) {
        if (projectedBuilder_ == null) {
          if (((bitField0_ & 0x00800000) != 0) &&
            projected_ != null &&
            projected_ != io.kubernetes.client.proto.V1.ProjectedVolumeSource.getDefaultInstance()) {
            getProjectedBuilder().mergeFrom(value);
          } else {
            projected_ = value;
          }
        } else {
          projectedBuilder_.mergeFrom(value);
        }
        if (projected_ != null) {
          bitField0_ |= 0x00800000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * projected items for all in one resources secrets, configmaps, and downward API
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
       */
      public Builder clearProjected() {
        bitField0_ = (bitField0_ & ~0x00800000);
        projected_ = null;
        if (projectedBuilder_ != null) {
          projectedBuilder_.dispose();
          projectedBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * projected items for all in one resources secrets, configmaps, and downward API
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
       */
      public io.kubernetes.client.proto.V1.ProjectedVolumeSource.Builder getProjectedBuilder() {
        bitField0_ |= 0x00800000;
        onChanged();
        return getProjectedFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * projected items for all in one resources secrets, configmaps, and downward API
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
       */
      public io.kubernetes.client.proto.V1.ProjectedVolumeSourceOrBuilder getProjectedOrBuilder() {
        if (projectedBuilder_ != null) {
          return projectedBuilder_.getMessageOrBuilder();
        } else {
          return projected_ == null ?
              io.kubernetes.client.proto.V1.ProjectedVolumeSource.getDefaultInstance() : projected_;
        }
      }
      /**
       * <pre>
       * projected items for all in one resources secrets, configmaps, and downward API
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ProjectedVolumeSource projected = 26;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ProjectedVolumeSource, io.kubernetes.client.proto.V1.ProjectedVolumeSource.Builder, io.kubernetes.client.proto.V1.ProjectedVolumeSourceOrBuilder> 
          getProjectedFieldBuilder() {
        if (projectedBuilder_ == null) {
          projectedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ProjectedVolumeSource, io.kubernetes.client.proto.V1.ProjectedVolumeSource.Builder, io.kubernetes.client.proto.V1.ProjectedVolumeSourceOrBuilder>(
                  getProjected(),
                  getParentForChildren(),
                  isClean());
          projected_ = null;
        }
        return projectedBuilder_;
      }

      private io.kubernetes.client.proto.V1.PortworxVolumeSource portworxVolume_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PortworxVolumeSource, io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder, io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder> portworxVolumeBuilder_;
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
       * @return Whether the portworxVolume field is set.
       */
      public boolean hasPortworxVolume() {
        return ((bitField0_ & 0x01000000) != 0);
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
       * @return The portworxVolume.
       */
      public io.kubernetes.client.proto.V1.PortworxVolumeSource getPortworxVolume() {
        if (portworxVolumeBuilder_ == null) {
          return portworxVolume_ == null ? io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance() : portworxVolume_;
        } else {
          return portworxVolumeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
       */
      public Builder setPortworxVolume(io.kubernetes.client.proto.V1.PortworxVolumeSource value) {
        if (portworxVolumeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          portworxVolume_ = value;
        } else {
          portworxVolumeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x01000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
       */
      public Builder setPortworxVolume(
          io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder builderForValue) {
        if (portworxVolumeBuilder_ == null) {
          portworxVolume_ = builderForValue.build();
        } else {
          portworxVolumeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x01000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
       */
      public Builder mergePortworxVolume(io.kubernetes.client.proto.V1.PortworxVolumeSource value) {
        if (portworxVolumeBuilder_ == null) {
          if (((bitField0_ & 0x01000000) != 0) &&
            portworxVolume_ != null &&
            portworxVolume_ != io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance()) {
            getPortworxVolumeBuilder().mergeFrom(value);
          } else {
            portworxVolume_ = value;
          }
        } else {
          portworxVolumeBuilder_.mergeFrom(value);
        }
        if (portworxVolume_ != null) {
          bitField0_ |= 0x01000000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
       */
      public Builder clearPortworxVolume() {
        bitField0_ = (bitField0_ & ~0x01000000);
        portworxVolume_ = null;
        if (portworxVolumeBuilder_ != null) {
          portworxVolumeBuilder_.dispose();
          portworxVolumeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
       */
      public io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder getPortworxVolumeBuilder() {
        bitField0_ |= 0x01000000;
        onChanged();
        return getPortworxVolumeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
       */
      public io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder getPortworxVolumeOrBuilder() {
        if (portworxVolumeBuilder_ != null) {
          return portworxVolumeBuilder_.getMessageOrBuilder();
        } else {
          return portworxVolume_ == null ?
              io.kubernetes.client.proto.V1.PortworxVolumeSource.getDefaultInstance() : portworxVolume_;
        }
      }
      /**
       * <pre>
       * portworxVolume represents a portworx volume attached and mounted on kubelets host machine
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PortworxVolumeSource portworxVolume = 24;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PortworxVolumeSource, io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder, io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder> 
          getPortworxVolumeFieldBuilder() {
        if (portworxVolumeBuilder_ == null) {
          portworxVolumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PortworxVolumeSource, io.kubernetes.client.proto.V1.PortworxVolumeSource.Builder, io.kubernetes.client.proto.V1.PortworxVolumeSourceOrBuilder>(
                  getPortworxVolume(),
                  getParentForChildren(),
                  isClean());
          portworxVolume_ = null;
        }
        return portworxVolumeBuilder_;
      }

      private io.kubernetes.client.proto.V1.ScaleIOVolumeSource scaleIO_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ScaleIOVolumeSource, io.kubernetes.client.proto.V1.ScaleIOVolumeSource.Builder, io.kubernetes.client.proto.V1.ScaleIOVolumeSourceOrBuilder> scaleIOBuilder_;
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
       * @return Whether the scaleIO field is set.
       */
      public boolean hasScaleIO() {
        return ((bitField0_ & 0x02000000) != 0);
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
       * @return The scaleIO.
       */
      public io.kubernetes.client.proto.V1.ScaleIOVolumeSource getScaleIO() {
        if (scaleIOBuilder_ == null) {
          return scaleIO_ == null ? io.kubernetes.client.proto.V1.ScaleIOVolumeSource.getDefaultInstance() : scaleIO_;
        } else {
          return scaleIOBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
       */
      public Builder setScaleIO(io.kubernetes.client.proto.V1.ScaleIOVolumeSource value) {
        if (scaleIOBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          scaleIO_ = value;
        } else {
          scaleIOBuilder_.setMessage(value);
        }
        bitField0_ |= 0x02000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
       */
      public Builder setScaleIO(
          io.kubernetes.client.proto.V1.ScaleIOVolumeSource.Builder builderForValue) {
        if (scaleIOBuilder_ == null) {
          scaleIO_ = builderForValue.build();
        } else {
          scaleIOBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x02000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
       */
      public Builder mergeScaleIO(io.kubernetes.client.proto.V1.ScaleIOVolumeSource value) {
        if (scaleIOBuilder_ == null) {
          if (((bitField0_ & 0x02000000) != 0) &&
            scaleIO_ != null &&
            scaleIO_ != io.kubernetes.client.proto.V1.ScaleIOVolumeSource.getDefaultInstance()) {
            getScaleIOBuilder().mergeFrom(value);
          } else {
            scaleIO_ = value;
          }
        } else {
          scaleIOBuilder_.mergeFrom(value);
        }
        if (scaleIO_ != null) {
          bitField0_ |= 0x02000000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
       */
      public Builder clearScaleIO() {
        bitField0_ = (bitField0_ & ~0x02000000);
        scaleIO_ = null;
        if (scaleIOBuilder_ != null) {
          scaleIOBuilder_.dispose();
          scaleIOBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
       */
      public io.kubernetes.client.proto.V1.ScaleIOVolumeSource.Builder getScaleIOBuilder() {
        bitField0_ |= 0x02000000;
        onChanged();
        return getScaleIOFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
       */
      public io.kubernetes.client.proto.V1.ScaleIOVolumeSourceOrBuilder getScaleIOOrBuilder() {
        if (scaleIOBuilder_ != null) {
          return scaleIOBuilder_.getMessageOrBuilder();
        } else {
          return scaleIO_ == null ?
              io.kubernetes.client.proto.V1.ScaleIOVolumeSource.getDefaultInstance() : scaleIO_;
        }
      }
      /**
       * <pre>
       * scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.ScaleIOVolumeSource scaleIO = 25;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.ScaleIOVolumeSource, io.kubernetes.client.proto.V1.ScaleIOVolumeSource.Builder, io.kubernetes.client.proto.V1.ScaleIOVolumeSourceOrBuilder> 
          getScaleIOFieldBuilder() {
        if (scaleIOBuilder_ == null) {
          scaleIOBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.ScaleIOVolumeSource, io.kubernetes.client.proto.V1.ScaleIOVolumeSource.Builder, io.kubernetes.client.proto.V1.ScaleIOVolumeSourceOrBuilder>(
                  getScaleIO(),
                  getParentForChildren(),
                  isClean());
          scaleIO_ = null;
        }
        return scaleIOBuilder_;
      }

      private io.kubernetes.client.proto.V1.StorageOSVolumeSource storageos_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.StorageOSVolumeSource, io.kubernetes.client.proto.V1.StorageOSVolumeSource.Builder, io.kubernetes.client.proto.V1.StorageOSVolumeSourceOrBuilder> storageosBuilder_;
      /**
       * <pre>
       * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
       * @return Whether the storageos field is set.
       */
      public boolean hasStorageos() {
        return ((bitField0_ & 0x04000000) != 0);
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
       * @return The storageos.
       */
      public io.kubernetes.client.proto.V1.StorageOSVolumeSource getStorageos() {
        if (storageosBuilder_ == null) {
          return storageos_ == null ? io.kubernetes.client.proto.V1.StorageOSVolumeSource.getDefaultInstance() : storageos_;
        } else {
          return storageosBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
       */
      public Builder setStorageos(io.kubernetes.client.proto.V1.StorageOSVolumeSource value) {
        if (storageosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          storageos_ = value;
        } else {
          storageosBuilder_.setMessage(value);
        }
        bitField0_ |= 0x04000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
       */
      public Builder setStorageos(
          io.kubernetes.client.proto.V1.StorageOSVolumeSource.Builder builderForValue) {
        if (storageosBuilder_ == null) {
          storageos_ = builderForValue.build();
        } else {
          storageosBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x04000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
       */
      public Builder mergeStorageos(io.kubernetes.client.proto.V1.StorageOSVolumeSource value) {
        if (storageosBuilder_ == null) {
          if (((bitField0_ & 0x04000000) != 0) &&
            storageos_ != null &&
            storageos_ != io.kubernetes.client.proto.V1.StorageOSVolumeSource.getDefaultInstance()) {
            getStorageosBuilder().mergeFrom(value);
          } else {
            storageos_ = value;
          }
        } else {
          storageosBuilder_.mergeFrom(value);
        }
        if (storageos_ != null) {
          bitField0_ |= 0x04000000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
       */
      public Builder clearStorageos() {
        bitField0_ = (bitField0_ & ~0x04000000);
        storageos_ = null;
        if (storageosBuilder_ != null) {
          storageosBuilder_.dispose();
          storageosBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
       */
      public io.kubernetes.client.proto.V1.StorageOSVolumeSource.Builder getStorageosBuilder() {
        bitField0_ |= 0x04000000;
        onChanged();
        return getStorageosFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
       */
      public io.kubernetes.client.proto.V1.StorageOSVolumeSourceOrBuilder getStorageosOrBuilder() {
        if (storageosBuilder_ != null) {
          return storageosBuilder_.getMessageOrBuilder();
        } else {
          return storageos_ == null ?
              io.kubernetes.client.proto.V1.StorageOSVolumeSource.getDefaultInstance() : storageos_;
        }
      }
      /**
       * <pre>
       * storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.StorageOSVolumeSource storageos = 27;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.StorageOSVolumeSource, io.kubernetes.client.proto.V1.StorageOSVolumeSource.Builder, io.kubernetes.client.proto.V1.StorageOSVolumeSourceOrBuilder> 
          getStorageosFieldBuilder() {
        if (storageosBuilder_ == null) {
          storageosBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.StorageOSVolumeSource, io.kubernetes.client.proto.V1.StorageOSVolumeSource.Builder, io.kubernetes.client.proto.V1.StorageOSVolumeSourceOrBuilder>(
                  getStorageos(),
                  getParentForChildren(),
                  isClean());
          storageos_ = null;
        }
        return storageosBuilder_;
      }

      private io.kubernetes.client.proto.V1.CSIVolumeSource csi_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CSIVolumeSource, io.kubernetes.client.proto.V1.CSIVolumeSource.Builder, io.kubernetes.client.proto.V1.CSIVolumeSourceOrBuilder> csiBuilder_;
      /**
       * <pre>
       * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
       * @return Whether the csi field is set.
       */
      public boolean hasCsi() {
        return ((bitField0_ & 0x08000000) != 0);
      }
      /**
       * <pre>
       * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
       * @return The csi.
       */
      public io.kubernetes.client.proto.V1.CSIVolumeSource getCsi() {
        if (csiBuilder_ == null) {
          return csi_ == null ? io.kubernetes.client.proto.V1.CSIVolumeSource.getDefaultInstance() : csi_;
        } else {
          return csiBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
       */
      public Builder setCsi(io.kubernetes.client.proto.V1.CSIVolumeSource value) {
        if (csiBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          csi_ = value;
        } else {
          csiBuilder_.setMessage(value);
        }
        bitField0_ |= 0x08000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
       */
      public Builder setCsi(
          io.kubernetes.client.proto.V1.CSIVolumeSource.Builder builderForValue) {
        if (csiBuilder_ == null) {
          csi_ = builderForValue.build();
        } else {
          csiBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x08000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
       */
      public Builder mergeCsi(io.kubernetes.client.proto.V1.CSIVolumeSource value) {
        if (csiBuilder_ == null) {
          if (((bitField0_ & 0x08000000) != 0) &&
            csi_ != null &&
            csi_ != io.kubernetes.client.proto.V1.CSIVolumeSource.getDefaultInstance()) {
            getCsiBuilder().mergeFrom(value);
          } else {
            csi_ = value;
          }
        } else {
          csiBuilder_.mergeFrom(value);
        }
        if (csi_ != null) {
          bitField0_ |= 0x08000000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
       */
      public Builder clearCsi() {
        bitField0_ = (bitField0_ & ~0x08000000);
        csi_ = null;
        if (csiBuilder_ != null) {
          csiBuilder_.dispose();
          csiBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
       */
      public io.kubernetes.client.proto.V1.CSIVolumeSource.Builder getCsiBuilder() {
        bitField0_ |= 0x08000000;
        onChanged();
        return getCsiFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
       */
      public io.kubernetes.client.proto.V1.CSIVolumeSourceOrBuilder getCsiOrBuilder() {
        if (csiBuilder_ != null) {
          return csiBuilder_.getMessageOrBuilder();
        } else {
          return csi_ == null ?
              io.kubernetes.client.proto.V1.CSIVolumeSource.getDefaultInstance() : csi_;
        }
      }
      /**
       * <pre>
       * csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.CSIVolumeSource csi = 28;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.CSIVolumeSource, io.kubernetes.client.proto.V1.CSIVolumeSource.Builder, io.kubernetes.client.proto.V1.CSIVolumeSourceOrBuilder> 
          getCsiFieldBuilder() {
        if (csiBuilder_ == null) {
          csiBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.CSIVolumeSource, io.kubernetes.client.proto.V1.CSIVolumeSource.Builder, io.kubernetes.client.proto.V1.CSIVolumeSourceOrBuilder>(
                  getCsi(),
                  getParentForChildren(),
                  isClean());
          csi_ = null;
        }
        return csiBuilder_;
      }

      private io.kubernetes.client.proto.V1.EphemeralVolumeSource ephemeral_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EphemeralVolumeSource, io.kubernetes.client.proto.V1.EphemeralVolumeSource.Builder, io.kubernetes.client.proto.V1.EphemeralVolumeSourceOrBuilder> ephemeralBuilder_;
      /**
       * <pre>
       * ephemeral represents a volume that is handled by a cluster storage driver.
       * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
       * and deleted when the pod is removed.
       *
       * Use this if:
       * a) the volume is only needed while the pod runs,
       * b) features of normal volumes like restoring from snapshot or capacity
       * tracking are needed,
       * c) the storage driver is specified through a storage class, and
       * d) the storage driver supports dynamic volume provisioning through
       * a PersistentVolumeClaim (see EphemeralVolumeSource for more
       * information on the connection between this volume type
       * and PersistentVolumeClaim).
       *
       * Use PersistentVolumeClaim or one of the vendor-specific
       * APIs for volumes that persist for longer than the lifecycle
       * of an individual pod.
       *
       * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
       * be used that way - see the documentation of the driver for
       * more information.
       *
       * A pod can use both types of ephemeral volumes and
       * persistent volumes at the same time.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
       * @return Whether the ephemeral field is set.
       */
      public boolean hasEphemeral() {
        return ((bitField0_ & 0x10000000) != 0);
      }
      /**
       * <pre>
       * ephemeral represents a volume that is handled by a cluster storage driver.
       * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
       * and deleted when the pod is removed.
       *
       * Use this if:
       * a) the volume is only needed while the pod runs,
       * b) features of normal volumes like restoring from snapshot or capacity
       * tracking are needed,
       * c) the storage driver is specified through a storage class, and
       * d) the storage driver supports dynamic volume provisioning through
       * a PersistentVolumeClaim (see EphemeralVolumeSource for more
       * information on the connection between this volume type
       * and PersistentVolumeClaim).
       *
       * Use PersistentVolumeClaim or one of the vendor-specific
       * APIs for volumes that persist for longer than the lifecycle
       * of an individual pod.
       *
       * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
       * be used that way - see the documentation of the driver for
       * more information.
       *
       * A pod can use both types of ephemeral volumes and
       * persistent volumes at the same time.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
       * @return The ephemeral.
       */
      public io.kubernetes.client.proto.V1.EphemeralVolumeSource getEphemeral() {
        if (ephemeralBuilder_ == null) {
          return ephemeral_ == null ? io.kubernetes.client.proto.V1.EphemeralVolumeSource.getDefaultInstance() : ephemeral_;
        } else {
          return ephemeralBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * ephemeral represents a volume that is handled by a cluster storage driver.
       * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
       * and deleted when the pod is removed.
       *
       * Use this if:
       * a) the volume is only needed while the pod runs,
       * b) features of normal volumes like restoring from snapshot or capacity
       * tracking are needed,
       * c) the storage driver is specified through a storage class, and
       * d) the storage driver supports dynamic volume provisioning through
       * a PersistentVolumeClaim (see EphemeralVolumeSource for more
       * information on the connection between this volume type
       * and PersistentVolumeClaim).
       *
       * Use PersistentVolumeClaim or one of the vendor-specific
       * APIs for volumes that persist for longer than the lifecycle
       * of an individual pod.
       *
       * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
       * be used that way - see the documentation of the driver for
       * more information.
       *
       * A pod can use both types of ephemeral volumes and
       * persistent volumes at the same time.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
       */
      public Builder setEphemeral(io.kubernetes.client.proto.V1.EphemeralVolumeSource value) {
        if (ephemeralBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ephemeral_ = value;
        } else {
          ephemeralBuilder_.setMessage(value);
        }
        bitField0_ |= 0x10000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ephemeral represents a volume that is handled by a cluster storage driver.
       * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
       * and deleted when the pod is removed.
       *
       * Use this if:
       * a) the volume is only needed while the pod runs,
       * b) features of normal volumes like restoring from snapshot or capacity
       * tracking are needed,
       * c) the storage driver is specified through a storage class, and
       * d) the storage driver supports dynamic volume provisioning through
       * a PersistentVolumeClaim (see EphemeralVolumeSource for more
       * information on the connection between this volume type
       * and PersistentVolumeClaim).
       *
       * Use PersistentVolumeClaim or one of the vendor-specific
       * APIs for volumes that persist for longer than the lifecycle
       * of an individual pod.
       *
       * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
       * be used that way - see the documentation of the driver for
       * more information.
       *
       * A pod can use both types of ephemeral volumes and
       * persistent volumes at the same time.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
       */
      public Builder setEphemeral(
          io.kubernetes.client.proto.V1.EphemeralVolumeSource.Builder builderForValue) {
        if (ephemeralBuilder_ == null) {
          ephemeral_ = builderForValue.build();
        } else {
          ephemeralBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x10000000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ephemeral represents a volume that is handled by a cluster storage driver.
       * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
       * and deleted when the pod is removed.
       *
       * Use this if:
       * a) the volume is only needed while the pod runs,
       * b) features of normal volumes like restoring from snapshot or capacity
       * tracking are needed,
       * c) the storage driver is specified through a storage class, and
       * d) the storage driver supports dynamic volume provisioning through
       * a PersistentVolumeClaim (see EphemeralVolumeSource for more
       * information on the connection between this volume type
       * and PersistentVolumeClaim).
       *
       * Use PersistentVolumeClaim or one of the vendor-specific
       * APIs for volumes that persist for longer than the lifecycle
       * of an individual pod.
       *
       * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
       * be used that way - see the documentation of the driver for
       * more information.
       *
       * A pod can use both types of ephemeral volumes and
       * persistent volumes at the same time.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
       */
      public Builder mergeEphemeral(io.kubernetes.client.proto.V1.EphemeralVolumeSource value) {
        if (ephemeralBuilder_ == null) {
          if (((bitField0_ & 0x10000000) != 0) &&
            ephemeral_ != null &&
            ephemeral_ != io.kubernetes.client.proto.V1.EphemeralVolumeSource.getDefaultInstance()) {
            getEphemeralBuilder().mergeFrom(value);
          } else {
            ephemeral_ = value;
          }
        } else {
          ephemeralBuilder_.mergeFrom(value);
        }
        if (ephemeral_ != null) {
          bitField0_ |= 0x10000000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * ephemeral represents a volume that is handled by a cluster storage driver.
       * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
       * and deleted when the pod is removed.
       *
       * Use this if:
       * a) the volume is only needed while the pod runs,
       * b) features of normal volumes like restoring from snapshot or capacity
       * tracking are needed,
       * c) the storage driver is specified through a storage class, and
       * d) the storage driver supports dynamic volume provisioning through
       * a PersistentVolumeClaim (see EphemeralVolumeSource for more
       * information on the connection between this volume type
       * and PersistentVolumeClaim).
       *
       * Use PersistentVolumeClaim or one of the vendor-specific
       * APIs for volumes that persist for longer than the lifecycle
       * of an individual pod.
       *
       * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
       * be used that way - see the documentation of the driver for
       * more information.
       *
       * A pod can use both types of ephemeral volumes and
       * persistent volumes at the same time.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
       */
      public Builder clearEphemeral() {
        bitField0_ = (bitField0_ & ~0x10000000);
        ephemeral_ = null;
        if (ephemeralBuilder_ != null) {
          ephemeralBuilder_.dispose();
          ephemeralBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ephemeral represents a volume that is handled by a cluster storage driver.
       * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
       * and deleted when the pod is removed.
       *
       * Use this if:
       * a) the volume is only needed while the pod runs,
       * b) features of normal volumes like restoring from snapshot or capacity
       * tracking are needed,
       * c) the storage driver is specified through a storage class, and
       * d) the storage driver supports dynamic volume provisioning through
       * a PersistentVolumeClaim (see EphemeralVolumeSource for more
       * information on the connection between this volume type
       * and PersistentVolumeClaim).
       *
       * Use PersistentVolumeClaim or one of the vendor-specific
       * APIs for volumes that persist for longer than the lifecycle
       * of an individual pod.
       *
       * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
       * be used that way - see the documentation of the driver for
       * more information.
       *
       * A pod can use both types of ephemeral volumes and
       * persistent volumes at the same time.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
       */
      public io.kubernetes.client.proto.V1.EphemeralVolumeSource.Builder getEphemeralBuilder() {
        bitField0_ |= 0x10000000;
        onChanged();
        return getEphemeralFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * ephemeral represents a volume that is handled by a cluster storage driver.
       * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
       * and deleted when the pod is removed.
       *
       * Use this if:
       * a) the volume is only needed while the pod runs,
       * b) features of normal volumes like restoring from snapshot or capacity
       * tracking are needed,
       * c) the storage driver is specified through a storage class, and
       * d) the storage driver supports dynamic volume provisioning through
       * a PersistentVolumeClaim (see EphemeralVolumeSource for more
       * information on the connection between this volume type
       * and PersistentVolumeClaim).
       *
       * Use PersistentVolumeClaim or one of the vendor-specific
       * APIs for volumes that persist for longer than the lifecycle
       * of an individual pod.
       *
       * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
       * be used that way - see the documentation of the driver for
       * more information.
       *
       * A pod can use both types of ephemeral volumes and
       * persistent volumes at the same time.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
       */
      public io.kubernetes.client.proto.V1.EphemeralVolumeSourceOrBuilder getEphemeralOrBuilder() {
        if (ephemeralBuilder_ != null) {
          return ephemeralBuilder_.getMessageOrBuilder();
        } else {
          return ephemeral_ == null ?
              io.kubernetes.client.proto.V1.EphemeralVolumeSource.getDefaultInstance() : ephemeral_;
        }
      }
      /**
       * <pre>
       * ephemeral represents a volume that is handled by a cluster storage driver.
       * The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
       * and deleted when the pod is removed.
       *
       * Use this if:
       * a) the volume is only needed while the pod runs,
       * b) features of normal volumes like restoring from snapshot or capacity
       * tracking are needed,
       * c) the storage driver is specified through a storage class, and
       * d) the storage driver supports dynamic volume provisioning through
       * a PersistentVolumeClaim (see EphemeralVolumeSource for more
       * information on the connection between this volume type
       * and PersistentVolumeClaim).
       *
       * Use PersistentVolumeClaim or one of the vendor-specific
       * APIs for volumes that persist for longer than the lifecycle
       * of an individual pod.
       *
       * Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
       * be used that way - see the documentation of the driver for
       * more information.
       *
       * A pod can use both types of ephemeral volumes and
       * persistent volumes at the same time.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.EphemeralVolumeSource ephemeral = 29;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.EphemeralVolumeSource, io.kubernetes.client.proto.V1.EphemeralVolumeSource.Builder, io.kubernetes.client.proto.V1.EphemeralVolumeSourceOrBuilder> 
          getEphemeralFieldBuilder() {
        if (ephemeralBuilder_ == null) {
          ephemeralBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.EphemeralVolumeSource, io.kubernetes.client.proto.V1.EphemeralVolumeSource.Builder, io.kubernetes.client.proto.V1.EphemeralVolumeSourceOrBuilder>(
                  getEphemeral(),
                  getParentForChildren(),
                  isClean());
          ephemeral_ = null;
        }
        return ephemeralBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.VolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.VolumeSource)
    private static final io.kubernetes.client.proto.V1.VolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.VolumeSource();
    }

    public static io.kubernetes.client.proto.V1.VolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<VolumeSource>() {
      @java.lang.Override
      public VolumeSource 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<VolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.VolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VsphereVirtualDiskVolumeSourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * volumePath is the path that identifies vSphere volume vmdk
     * </pre>
     *
     * <code>optional string volumePath = 1;</code>
     * @return Whether the volumePath field is set.
     */
    boolean hasVolumePath();
    /**
     * <pre>
     * volumePath is the path that identifies vSphere volume vmdk
     * </pre>
     *
     * <code>optional string volumePath = 1;</code>
     * @return The volumePath.
     */
    java.lang.String getVolumePath();
    /**
     * <pre>
     * volumePath is the path that identifies vSphere volume vmdk
     * </pre>
     *
     * <code>optional string volumePath = 1;</code>
     * @return The bytes for volumePath.
     */
    com.google.protobuf.ByteString
        getVolumePathBytes();

    /**
     * <pre>
     * fsType is filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    boolean hasFsType();
    /**
     * <pre>
     * fsType is filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    java.lang.String getFsType();
    /**
     * <pre>
     * fsType is filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    com.google.protobuf.ByteString
        getFsTypeBytes();

    /**
     * <pre>
     * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyName = 3;</code>
     * @return Whether the storagePolicyName field is set.
     */
    boolean hasStoragePolicyName();
    /**
     * <pre>
     * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyName = 3;</code>
     * @return The storagePolicyName.
     */
    java.lang.String getStoragePolicyName();
    /**
     * <pre>
     * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyName = 3;</code>
     * @return The bytes for storagePolicyName.
     */
    com.google.protobuf.ByteString
        getStoragePolicyNameBytes();

    /**
     * <pre>
     * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyID = 4;</code>
     * @return Whether the storagePolicyID field is set.
     */
    boolean hasStoragePolicyID();
    /**
     * <pre>
     * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyID = 4;</code>
     * @return The storagePolicyID.
     */
    java.lang.String getStoragePolicyID();
    /**
     * <pre>
     * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyID = 4;</code>
     * @return The bytes for storagePolicyID.
     */
    com.google.protobuf.ByteString
        getStoragePolicyIDBytes();
  }
  /**
   * <pre>
   * Represents a vSphere volume resource.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource}
   */
  public static final class VsphereVirtualDiskVolumeSource extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource)
      VsphereVirtualDiskVolumeSourceOrBuilder {
  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= */ "",
        VsphereVirtualDiskVolumeSource.class.getName());
    }
    // Use VsphereVirtualDiskVolumeSource.newBuilder() to construct.
    private VsphereVirtualDiskVolumeSource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private VsphereVirtualDiskVolumeSource() {
      volumePath_ = "";
      fsType_ = "";
      storagePolicyName_ = "";
      storagePolicyID_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VsphereVirtualDiskVolumeSource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VsphereVirtualDiskVolumeSource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.class, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder.class);
    }

    private int bitField0_;
    public static final int VOLUMEPATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object volumePath_ = "";
    /**
     * <pre>
     * volumePath is the path that identifies vSphere volume vmdk
     * </pre>
     *
     * <code>optional string volumePath = 1;</code>
     * @return Whether the volumePath field is set.
     */
    @java.lang.Override
    public boolean hasVolumePath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * volumePath is the path that identifies vSphere volume vmdk
     * </pre>
     *
     * <code>optional string volumePath = 1;</code>
     * @return The volumePath.
     */
    @java.lang.Override
    public java.lang.String getVolumePath() {
      java.lang.Object ref = volumePath_;
      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()) {
          volumePath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * volumePath is the path that identifies vSphere volume vmdk
     * </pre>
     *
     * <code>optional string volumePath = 1;</code>
     * @return The bytes for volumePath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVolumePathBytes() {
      java.lang.Object ref = volumePath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        volumePath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fsType_ = "";
    /**
     * <pre>
     * fsType is filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return Whether the fsType field is set.
     */
    @java.lang.Override
    public boolean hasFsType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * fsType is filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The fsType.
     */
    @java.lang.Override
    public java.lang.String getFsType() {
      java.lang.Object ref = fsType_;
      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()) {
          fsType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fsType is filesystem type to mount.
     * Must be a filesystem type supported by the host operating system.
     * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
     * +optional
     * </pre>
     *
     * <code>optional string fsType = 2;</code>
     * @return The bytes for fsType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFsTypeBytes() {
      java.lang.Object ref = fsType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fsType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STORAGEPOLICYNAME_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object storagePolicyName_ = "";
    /**
     * <pre>
     * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyName = 3;</code>
     * @return Whether the storagePolicyName field is set.
     */
    @java.lang.Override
    public boolean hasStoragePolicyName() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyName = 3;</code>
     * @return The storagePolicyName.
     */
    @java.lang.Override
    public java.lang.String getStoragePolicyName() {
      java.lang.Object ref = storagePolicyName_;
      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()) {
          storagePolicyName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyName = 3;</code>
     * @return The bytes for storagePolicyName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStoragePolicyNameBytes() {
      java.lang.Object ref = storagePolicyName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storagePolicyName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STORAGEPOLICYID_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object storagePolicyID_ = "";
    /**
     * <pre>
     * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyID = 4;</code>
     * @return Whether the storagePolicyID field is set.
     */
    @java.lang.Override
    public boolean hasStoragePolicyID() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyID = 4;</code>
     * @return The storagePolicyID.
     */
    @java.lang.Override
    public java.lang.String getStoragePolicyID() {
      java.lang.Object ref = storagePolicyID_;
      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()) {
          storagePolicyID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
     * +optional
     * </pre>
     *
     * <code>optional string storagePolicyID = 4;</code>
     * @return The bytes for storagePolicyID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStoragePolicyIDBytes() {
      java.lang.Object ref = storagePolicyID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storagePolicyID_ = 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, volumePath_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, storagePolicyName_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, storagePolicyID_);
      }
      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, volumePath_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, fsType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, storagePolicyName_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, storagePolicyID_);
      }
      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.V1.VsphereVirtualDiskVolumeSource)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource other = (io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource) obj;

      if (hasVolumePath() != other.hasVolumePath()) return false;
      if (hasVolumePath()) {
        if (!getVolumePath()
            .equals(other.getVolumePath())) return false;
      }
      if (hasFsType() != other.hasFsType()) return false;
      if (hasFsType()) {
        if (!getFsType()
            .equals(other.getFsType())) return false;
      }
      if (hasStoragePolicyName() != other.hasStoragePolicyName()) return false;
      if (hasStoragePolicyName()) {
        if (!getStoragePolicyName()
            .equals(other.getStoragePolicyName())) return false;
      }
      if (hasStoragePolicyID() != other.hasStoragePolicyID()) return false;
      if (hasStoragePolicyID()) {
        if (!getStoragePolicyID()
            .equals(other.getStoragePolicyID())) 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 (hasVolumePath()) {
        hash = (37 * hash) + VOLUMEPATH_FIELD_NUMBER;
        hash = (53 * hash) + getVolumePath().hashCode();
      }
      if (hasFsType()) {
        hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getFsType().hashCode();
      }
      if (hasStoragePolicyName()) {
        hash = (37 * hash) + STORAGEPOLICYNAME_FIELD_NUMBER;
        hash = (53 * hash) + getStoragePolicyName().hashCode();
      }
      if (hasStoragePolicyID()) {
        hash = (37 * hash) + STORAGEPOLICYID_FIELD_NUMBER;
        hash = (53 * hash) + getStoragePolicyID().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource 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.V1.VsphereVirtualDiskVolumeSource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource 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.V1.VsphereVirtualDiskVolumeSource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource 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.V1.VsphereVirtualDiskVolumeSource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource 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.V1.VsphereVirtualDiskVolumeSource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource 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.V1.VsphereVirtualDiskVolumeSource 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>
     * Represents a vSphere volume resource.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource)
        io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VsphereVirtualDiskVolumeSource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VsphereVirtualDiskVolumeSource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.class, io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        volumePath_ = "";
        fsType_ = "";
        storagePolicyName_ = "";
        storagePolicyID_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_VsphereVirtualDiskVolumeSource_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource build() {
        io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource buildPartial() {
        io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource result = new io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.volumePath_ = volumePath_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fsType_ = fsType_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.storagePolicyName_ = storagePolicyName_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.storagePolicyID_ = storagePolicyID_;
          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.V1.VsphereVirtualDiskVolumeSource) {
          return mergeFrom((io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource other) {
        if (other == io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource.getDefaultInstance()) return this;
        if (other.hasVolumePath()) {
          volumePath_ = other.volumePath_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasFsType()) {
          fsType_ = other.fsType_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasStoragePolicyName()) {
          storagePolicyName_ = other.storagePolicyName_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasStoragePolicyID()) {
          storagePolicyID_ = other.storagePolicyID_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                volumePath_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                fsType_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                storagePolicyName_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                storagePolicyID_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object volumePath_ = "";
      /**
       * <pre>
       * volumePath is the path that identifies vSphere volume vmdk
       * </pre>
       *
       * <code>optional string volumePath = 1;</code>
       * @return Whether the volumePath field is set.
       */
      public boolean hasVolumePath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * volumePath is the path that identifies vSphere volume vmdk
       * </pre>
       *
       * <code>optional string volumePath = 1;</code>
       * @return The volumePath.
       */
      public java.lang.String getVolumePath() {
        java.lang.Object ref = volumePath_;
        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()) {
            volumePath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * volumePath is the path that identifies vSphere volume vmdk
       * </pre>
       *
       * <code>optional string volumePath = 1;</code>
       * @return The bytes for volumePath.
       */
      public com.google.protobuf.ByteString
          getVolumePathBytes() {
        java.lang.Object ref = volumePath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          volumePath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * volumePath is the path that identifies vSphere volume vmdk
       * </pre>
       *
       * <code>optional string volumePath = 1;</code>
       * @param value The volumePath to set.
       * @return This builder for chaining.
       */
      public Builder setVolumePath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        volumePath_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumePath is the path that identifies vSphere volume vmdk
       * </pre>
       *
       * <code>optional string volumePath = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVolumePath() {
        volumePath_ = getDefaultInstance().getVolumePath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * volumePath is the path that identifies vSphere volume vmdk
       * </pre>
       *
       * <code>optional string volumePath = 1;</code>
       * @param value The bytes for volumePath to set.
       * @return This builder for chaining.
       */
      public Builder setVolumePathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        volumePath_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object fsType_ = "";
      /**
       * <pre>
       * fsType is filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return Whether the fsType field is set.
       */
      public boolean hasFsType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * fsType is filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The fsType.
       */
      public java.lang.String getFsType() {
        java.lang.Object ref = fsType_;
        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()) {
            fsType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fsType is filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return The bytes for fsType.
       */
      public com.google.protobuf.ByteString
          getFsTypeBytes() {
        java.lang.Object ref = fsType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fsType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fsType is filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFsType() {
        fsType_ = getDefaultInstance().getFsType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fsType is filesystem type to mount.
       * Must be a filesystem type supported by the host operating system.
       * Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
       * +optional
       * </pre>
       *
       * <code>optional string fsType = 2;</code>
       * @param value The bytes for fsType to set.
       * @return This builder for chaining.
       */
      public Builder setFsTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fsType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object storagePolicyName_ = "";
      /**
       * <pre>
       * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyName = 3;</code>
       * @return Whether the storagePolicyName field is set.
       */
      public boolean hasStoragePolicyName() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyName = 3;</code>
       * @return The storagePolicyName.
       */
      public java.lang.String getStoragePolicyName() {
        java.lang.Object ref = storagePolicyName_;
        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()) {
            storagePolicyName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyName = 3;</code>
       * @return The bytes for storagePolicyName.
       */
      public com.google.protobuf.ByteString
          getStoragePolicyNameBytes() {
        java.lang.Object ref = storagePolicyName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storagePolicyName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyName = 3;</code>
       * @param value The storagePolicyName to set.
       * @return This builder for chaining.
       */
      public Builder setStoragePolicyName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        storagePolicyName_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyName = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStoragePolicyName() {
        storagePolicyName_ = getDefaultInstance().getStoragePolicyName();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storagePolicyName is the storage Policy Based Management (SPBM) profile name.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyName = 3;</code>
       * @param value The bytes for storagePolicyName to set.
       * @return This builder for chaining.
       */
      public Builder setStoragePolicyNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        storagePolicyName_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object storagePolicyID_ = "";
      /**
       * <pre>
       * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyID = 4;</code>
       * @return Whether the storagePolicyID field is set.
       */
      public boolean hasStoragePolicyID() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyID = 4;</code>
       * @return The storagePolicyID.
       */
      public java.lang.String getStoragePolicyID() {
        java.lang.Object ref = storagePolicyID_;
        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()) {
            storagePolicyID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyID = 4;</code>
       * @return The bytes for storagePolicyID.
       */
      public com.google.protobuf.ByteString
          getStoragePolicyIDBytes() {
        java.lang.Object ref = storagePolicyID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storagePolicyID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyID = 4;</code>
       * @param value The storagePolicyID to set.
       * @return This builder for chaining.
       */
      public Builder setStoragePolicyID(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        storagePolicyID_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyID = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearStoragePolicyID() {
        storagePolicyID_ = getDefaultInstance().getStoragePolicyID();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
       * +optional
       * </pre>
       *
       * <code>optional string storagePolicyID = 4;</code>
       * @param value The bytes for storagePolicyID to set.
       * @return This builder for chaining.
       */
      public Builder setStoragePolicyIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        storagePolicyID_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource)
    private static final io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource();
    }

    public static io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VsphereVirtualDiskVolumeSource>
        PARSER = new com.google.protobuf.AbstractParser<VsphereVirtualDiskVolumeSource>() {
      @java.lang.Override
      public VsphereVirtualDiskVolumeSource 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<VsphereVirtualDiskVolumeSource> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VsphereVirtualDiskVolumeSource> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.VsphereVirtualDiskVolumeSource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WeightedPodAffinityTermOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.WeightedPodAffinityTerm)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * weight associated with matching the corresponding podAffinityTerm,
     * in the range 1-100.
     * </pre>
     *
     * <code>optional int32 weight = 1;</code>
     * @return Whether the weight field is set.
     */
    boolean hasWeight();
    /**
     * <pre>
     * weight associated with matching the corresponding podAffinityTerm,
     * in the range 1-100.
     * </pre>
     *
     * <code>optional int32 weight = 1;</code>
     * @return The weight.
     */
    int getWeight();

    /**
     * <pre>
     * Required. A pod affinity term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
     * @return Whether the podAffinityTerm field is set.
     */
    boolean hasPodAffinityTerm();
    /**
     * <pre>
     * Required. A pod affinity term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
     * @return The podAffinityTerm.
     */
    io.kubernetes.client.proto.V1.PodAffinityTerm getPodAffinityTerm();
    /**
     * <pre>
     * Required. A pod affinity term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
     */
    io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder getPodAffinityTermOrBuilder();
  }
  /**
   * <pre>
   * The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.WeightedPodAffinityTerm}
   */
  public static final class WeightedPodAffinityTerm extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.WeightedPodAffinityTerm)
      WeightedPodAffinityTermOrBuilder {
  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= */ "",
        WeightedPodAffinityTerm.class.getName());
    }
    // Use WeightedPodAffinityTerm.newBuilder() to construct.
    private WeightedPodAffinityTerm(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private WeightedPodAffinityTerm() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_WeightedPodAffinityTerm_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_WeightedPodAffinityTerm_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.class, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder.class);
    }

    private int bitField0_;
    public static final int WEIGHT_FIELD_NUMBER = 1;
    private int weight_ = 0;
    /**
     * <pre>
     * weight associated with matching the corresponding podAffinityTerm,
     * in the range 1-100.
     * </pre>
     *
     * <code>optional int32 weight = 1;</code>
     * @return Whether the weight field is set.
     */
    @java.lang.Override
    public boolean hasWeight() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * weight associated with matching the corresponding podAffinityTerm,
     * in the range 1-100.
     * </pre>
     *
     * <code>optional int32 weight = 1;</code>
     * @return The weight.
     */
    @java.lang.Override
    public int getWeight() {
      return weight_;
    }

    public static final int PODAFFINITYTERM_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1.PodAffinityTerm podAffinityTerm_;
    /**
     * <pre>
     * Required. A pod affinity term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
     * @return Whether the podAffinityTerm field is set.
     */
    @java.lang.Override
    public boolean hasPodAffinityTerm() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Required. A pod affinity term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
     * @return The podAffinityTerm.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAffinityTerm getPodAffinityTerm() {
      return podAffinityTerm_ == null ? io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance() : podAffinityTerm_;
    }
    /**
     * <pre>
     * Required. A pod affinity term, associated with the corresponding weight.
     * </pre>
     *
     * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder getPodAffinityTermOrBuilder() {
      return podAffinityTerm_ == null ? io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance() : podAffinityTerm_;
    }

    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.writeInt32(1, weight_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getPodAffinityTerm());
      }
      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
          .computeInt32Size(1, weight_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPodAffinityTerm());
      }
      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.V1.WeightedPodAffinityTerm)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.WeightedPodAffinityTerm other = (io.kubernetes.client.proto.V1.WeightedPodAffinityTerm) obj;

      if (hasWeight() != other.hasWeight()) return false;
      if (hasWeight()) {
        if (getWeight()
            != other.getWeight()) return false;
      }
      if (hasPodAffinityTerm() != other.hasPodAffinityTerm()) return false;
      if (hasPodAffinityTerm()) {
        if (!getPodAffinityTerm()
            .equals(other.getPodAffinityTerm())) 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 (hasWeight()) {
        hash = (37 * hash) + WEIGHT_FIELD_NUMBER;
        hash = (53 * hash) + getWeight();
      }
      if (hasPodAffinityTerm()) {
        hash = (37 * hash) + PODAFFINITYTERM_FIELD_NUMBER;
        hash = (53 * hash) + getPodAffinityTerm().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.WeightedPodAffinityTerm parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.WeightedPodAffinityTerm 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.V1.WeightedPodAffinityTerm parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.WeightedPodAffinityTerm 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.V1.WeightedPodAffinityTerm parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.WeightedPodAffinityTerm parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.WeightedPodAffinityTerm parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.WeightedPodAffinityTerm 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.V1.WeightedPodAffinityTerm parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.WeightedPodAffinityTerm 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.V1.WeightedPodAffinityTerm parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.WeightedPodAffinityTerm 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.V1.WeightedPodAffinityTerm 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>
     * The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.WeightedPodAffinityTerm}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.WeightedPodAffinityTerm)
        io.kubernetes.client.proto.V1.WeightedPodAffinityTermOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_WeightedPodAffinityTerm_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_WeightedPodAffinityTerm_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.class, io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getPodAffinityTermFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        weight_ = 0;
        podAffinityTerm_ = null;
        if (podAffinityTermBuilder_ != null) {
          podAffinityTermBuilder_.dispose();
          podAffinityTermBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_WeightedPodAffinityTerm_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm build() {
        io.kubernetes.client.proto.V1.WeightedPodAffinityTerm result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm buildPartial() {
        io.kubernetes.client.proto.V1.WeightedPodAffinityTerm result = new io.kubernetes.client.proto.V1.WeightedPodAffinityTerm(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.WeightedPodAffinityTerm result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.weight_ = weight_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.podAffinityTerm_ = podAffinityTermBuilder_ == null
              ? podAffinityTerm_
              : podAffinityTermBuilder_.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.V1.WeightedPodAffinityTerm) {
          return mergeFrom((io.kubernetes.client.proto.V1.WeightedPodAffinityTerm)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.WeightedPodAffinityTerm other) {
        if (other == io.kubernetes.client.proto.V1.WeightedPodAffinityTerm.getDefaultInstance()) return this;
        if (other.hasWeight()) {
          setWeight(other.getWeight());
        }
        if (other.hasPodAffinityTerm()) {
          mergePodAffinityTerm(other.getPodAffinityTerm());
        }
        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: {
                weight_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getPodAffinityTermFieldBuilder().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 int weight_ ;
      /**
       * <pre>
       * weight associated with matching the corresponding podAffinityTerm,
       * in the range 1-100.
       * </pre>
       *
       * <code>optional int32 weight = 1;</code>
       * @return Whether the weight field is set.
       */
      @java.lang.Override
      public boolean hasWeight() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * weight associated with matching the corresponding podAffinityTerm,
       * in the range 1-100.
       * </pre>
       *
       * <code>optional int32 weight = 1;</code>
       * @return The weight.
       */
      @java.lang.Override
      public int getWeight() {
        return weight_;
      }
      /**
       * <pre>
       * weight associated with matching the corresponding podAffinityTerm,
       * in the range 1-100.
       * </pre>
       *
       * <code>optional int32 weight = 1;</code>
       * @param value The weight to set.
       * @return This builder for chaining.
       */
      public Builder setWeight(int value) {

        weight_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * weight associated with matching the corresponding podAffinityTerm,
       * in the range 1-100.
       * </pre>
       *
       * <code>optional int32 weight = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearWeight() {
        bitField0_ = (bitField0_ & ~0x00000001);
        weight_ = 0;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1.PodAffinityTerm podAffinityTerm_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodAffinityTerm, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder, io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> podAffinityTermBuilder_;
      /**
       * <pre>
       * Required. A pod affinity term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
       * @return Whether the podAffinityTerm field is set.
       */
      public boolean hasPodAffinityTerm() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Required. A pod affinity term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
       * @return The podAffinityTerm.
       */
      public io.kubernetes.client.proto.V1.PodAffinityTerm getPodAffinityTerm() {
        if (podAffinityTermBuilder_ == null) {
          return podAffinityTerm_ == null ? io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance() : podAffinityTerm_;
        } else {
          return podAffinityTermBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Required. A pod affinity term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
       */
      public Builder setPodAffinityTerm(io.kubernetes.client.proto.V1.PodAffinityTerm value) {
        if (podAffinityTermBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          podAffinityTerm_ = value;
        } else {
          podAffinityTermBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. A pod affinity term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
       */
      public Builder setPodAffinityTerm(
          io.kubernetes.client.proto.V1.PodAffinityTerm.Builder builderForValue) {
        if (podAffinityTermBuilder_ == null) {
          podAffinityTerm_ = builderForValue.build();
        } else {
          podAffinityTermBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. A pod affinity term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
       */
      public Builder mergePodAffinityTerm(io.kubernetes.client.proto.V1.PodAffinityTerm value) {
        if (podAffinityTermBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            podAffinityTerm_ != null &&
            podAffinityTerm_ != io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance()) {
            getPodAffinityTermBuilder().mergeFrom(value);
          } else {
            podAffinityTerm_ = value;
          }
        } else {
          podAffinityTermBuilder_.mergeFrom(value);
        }
        if (podAffinityTerm_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Required. A pod affinity term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
       */
      public Builder clearPodAffinityTerm() {
        bitField0_ = (bitField0_ & ~0x00000002);
        podAffinityTerm_ = null;
        if (podAffinityTermBuilder_ != null) {
          podAffinityTermBuilder_.dispose();
          podAffinityTermBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. A pod affinity term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTerm.Builder getPodAffinityTermBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPodAffinityTermFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Required. A pod affinity term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
       */
      public io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder getPodAffinityTermOrBuilder() {
        if (podAffinityTermBuilder_ != null) {
          return podAffinityTermBuilder_.getMessageOrBuilder();
        } else {
          return podAffinityTerm_ == null ?
              io.kubernetes.client.proto.V1.PodAffinityTerm.getDefaultInstance() : podAffinityTerm_;
        }
      }
      /**
       * <pre>
       * Required. A pod affinity term, associated with the corresponding weight.
       * </pre>
       *
       * <code>optional .k8s.io.api.core.v1.PodAffinityTerm podAffinityTerm = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1.PodAffinityTerm, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder, io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder> 
          getPodAffinityTermFieldBuilder() {
        if (podAffinityTermBuilder_ == null) {
          podAffinityTermBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1.PodAffinityTerm, io.kubernetes.client.proto.V1.PodAffinityTerm.Builder, io.kubernetes.client.proto.V1.PodAffinityTermOrBuilder>(
                  getPodAffinityTerm(),
                  getParentForChildren(),
                  isClean());
          podAffinityTerm_ = null;
        }
        return podAffinityTermBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.WeightedPodAffinityTerm)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.WeightedPodAffinityTerm)
    private static final io.kubernetes.client.proto.V1.WeightedPodAffinityTerm DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.WeightedPodAffinityTerm();
    }

    public static io.kubernetes.client.proto.V1.WeightedPodAffinityTerm getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<WeightedPodAffinityTerm>
        PARSER = new com.google.protobuf.AbstractParser<WeightedPodAffinityTerm>() {
      @java.lang.Override
      public WeightedPodAffinityTerm 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<WeightedPodAffinityTerm> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<WeightedPodAffinityTerm> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.WeightedPodAffinityTerm getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WindowsSecurityContextOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.core.v1.WindowsSecurityContextOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * GMSACredentialSpecName is the name of the GMSA credential spec to use.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpecName = 1;</code>
     * @return Whether the gmsaCredentialSpecName field is set.
     */
    boolean hasGmsaCredentialSpecName();
    /**
     * <pre>
     * GMSACredentialSpecName is the name of the GMSA credential spec to use.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpecName = 1;</code>
     * @return The gmsaCredentialSpecName.
     */
    java.lang.String getGmsaCredentialSpecName();
    /**
     * <pre>
     * GMSACredentialSpecName is the name of the GMSA credential spec to use.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpecName = 1;</code>
     * @return The bytes for gmsaCredentialSpecName.
     */
    com.google.protobuf.ByteString
        getGmsaCredentialSpecNameBytes();

    /**
     * <pre>
     * GMSACredentialSpec is where the GMSA admission webhook
     * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
     * GMSA credential spec named by the GMSACredentialSpecName field.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpec = 2;</code>
     * @return Whether the gmsaCredentialSpec field is set.
     */
    boolean hasGmsaCredentialSpec();
    /**
     * <pre>
     * GMSACredentialSpec is where the GMSA admission webhook
     * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
     * GMSA credential spec named by the GMSACredentialSpecName field.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpec = 2;</code>
     * @return The gmsaCredentialSpec.
     */
    java.lang.String getGmsaCredentialSpec();
    /**
     * <pre>
     * GMSACredentialSpec is where the GMSA admission webhook
     * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
     * GMSA credential spec named by the GMSACredentialSpecName field.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpec = 2;</code>
     * @return The bytes for gmsaCredentialSpec.
     */
    com.google.protobuf.ByteString
        getGmsaCredentialSpecBytes();

    /**
     * <pre>
     * The UserName in Windows to run the entrypoint of the container process.
     * Defaults to the user specified in image metadata if unspecified.
     * May also be set in PodSecurityContext. If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional string runAsUserName = 3;</code>
     * @return Whether the runAsUserName field is set.
     */
    boolean hasRunAsUserName();
    /**
     * <pre>
     * The UserName in Windows to run the entrypoint of the container process.
     * Defaults to the user specified in image metadata if unspecified.
     * May also be set in PodSecurityContext. If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional string runAsUserName = 3;</code>
     * @return The runAsUserName.
     */
    java.lang.String getRunAsUserName();
    /**
     * <pre>
     * The UserName in Windows to run the entrypoint of the container process.
     * Defaults to the user specified in image metadata if unspecified.
     * May also be set in PodSecurityContext. If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional string runAsUserName = 3;</code>
     * @return The bytes for runAsUserName.
     */
    com.google.protobuf.ByteString
        getRunAsUserNameBytes();

    /**
     * <pre>
     * HostProcess determines if a container should be run as a 'Host Process' container.
     * All of a Pod's containers must have the same effective HostProcess value
     * (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
     * In addition, if HostProcess is true then HostNetwork must also be set to true.
     * +optional
     * </pre>
     *
     * <code>optional bool hostProcess = 4;</code>
     * @return Whether the hostProcess field is set.
     */
    boolean hasHostProcess();
    /**
     * <pre>
     * HostProcess determines if a container should be run as a 'Host Process' container.
     * All of a Pod's containers must have the same effective HostProcess value
     * (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
     * In addition, if HostProcess is true then HostNetwork must also be set to true.
     * +optional
     * </pre>
     *
     * <code>optional bool hostProcess = 4;</code>
     * @return The hostProcess.
     */
    boolean getHostProcess();
  }
  /**
   * <pre>
   * WindowsSecurityContextOptions contain Windows-specific options and credentials.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.core.v1.WindowsSecurityContextOptions}
   */
  public static final class WindowsSecurityContextOptions extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.core.v1.WindowsSecurityContextOptions)
      WindowsSecurityContextOptionsOrBuilder {
  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= */ "",
        WindowsSecurityContextOptions.class.getName());
    }
    // Use WindowsSecurityContextOptions.newBuilder() to construct.
    private WindowsSecurityContextOptions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private WindowsSecurityContextOptions() {
      gmsaCredentialSpecName_ = "";
      gmsaCredentialSpec_ = "";
      runAsUserName_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_WindowsSecurityContextOptions_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_WindowsSecurityContextOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.class, io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder.class);
    }

    private int bitField0_;
    public static final int GMSACREDENTIALSPECNAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object gmsaCredentialSpecName_ = "";
    /**
     * <pre>
     * GMSACredentialSpecName is the name of the GMSA credential spec to use.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpecName = 1;</code>
     * @return Whether the gmsaCredentialSpecName field is set.
     */
    @java.lang.Override
    public boolean hasGmsaCredentialSpecName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * GMSACredentialSpecName is the name of the GMSA credential spec to use.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpecName = 1;</code>
     * @return The gmsaCredentialSpecName.
     */
    @java.lang.Override
    public java.lang.String getGmsaCredentialSpecName() {
      java.lang.Object ref = gmsaCredentialSpecName_;
      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()) {
          gmsaCredentialSpecName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * GMSACredentialSpecName is the name of the GMSA credential spec to use.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpecName = 1;</code>
     * @return The bytes for gmsaCredentialSpecName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGmsaCredentialSpecNameBytes() {
      java.lang.Object ref = gmsaCredentialSpecName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gmsaCredentialSpecName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GMSACREDENTIALSPEC_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object gmsaCredentialSpec_ = "";
    /**
     * <pre>
     * GMSACredentialSpec is where the GMSA admission webhook
     * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
     * GMSA credential spec named by the GMSACredentialSpecName field.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpec = 2;</code>
     * @return Whether the gmsaCredentialSpec field is set.
     */
    @java.lang.Override
    public boolean hasGmsaCredentialSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * GMSACredentialSpec is where the GMSA admission webhook
     * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
     * GMSA credential spec named by the GMSACredentialSpecName field.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpec = 2;</code>
     * @return The gmsaCredentialSpec.
     */
    @java.lang.Override
    public java.lang.String getGmsaCredentialSpec() {
      java.lang.Object ref = gmsaCredentialSpec_;
      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()) {
          gmsaCredentialSpec_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * GMSACredentialSpec is where the GMSA admission webhook
     * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
     * GMSA credential spec named by the GMSACredentialSpecName field.
     * +optional
     * </pre>
     *
     * <code>optional string gmsaCredentialSpec = 2;</code>
     * @return The bytes for gmsaCredentialSpec.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGmsaCredentialSpecBytes() {
      java.lang.Object ref = gmsaCredentialSpec_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gmsaCredentialSpec_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RUNASUSERNAME_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object runAsUserName_ = "";
    /**
     * <pre>
     * The UserName in Windows to run the entrypoint of the container process.
     * Defaults to the user specified in image metadata if unspecified.
     * May also be set in PodSecurityContext. If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional string runAsUserName = 3;</code>
     * @return Whether the runAsUserName field is set.
     */
    @java.lang.Override
    public boolean hasRunAsUserName() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The UserName in Windows to run the entrypoint of the container process.
     * Defaults to the user specified in image metadata if unspecified.
     * May also be set in PodSecurityContext. If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional string runAsUserName = 3;</code>
     * @return The runAsUserName.
     */
    @java.lang.Override
    public java.lang.String getRunAsUserName() {
      java.lang.Object ref = runAsUserName_;
      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()) {
          runAsUserName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The UserName in Windows to run the entrypoint of the container process.
     * Defaults to the user specified in image metadata if unspecified.
     * May also be set in PodSecurityContext. If set in both SecurityContext and
     * PodSecurityContext, the value specified in SecurityContext takes precedence.
     * +optional
     * </pre>
     *
     * <code>optional string runAsUserName = 3;</code>
     * @return The bytes for runAsUserName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRunAsUserNameBytes() {
      java.lang.Object ref = runAsUserName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        runAsUserName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HOSTPROCESS_FIELD_NUMBER = 4;
    private boolean hostProcess_ = false;
    /**
     * <pre>
     * HostProcess determines if a container should be run as a 'Host Process' container.
     * All of a Pod's containers must have the same effective HostProcess value
     * (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
     * In addition, if HostProcess is true then HostNetwork must also be set to true.
     * +optional
     * </pre>
     *
     * <code>optional bool hostProcess = 4;</code>
     * @return Whether the hostProcess field is set.
     */
    @java.lang.Override
    public boolean hasHostProcess() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * HostProcess determines if a container should be run as a 'Host Process' container.
     * All of a Pod's containers must have the same effective HostProcess value
     * (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
     * In addition, if HostProcess is true then HostNetwork must also be set to true.
     * +optional
     * </pre>
     *
     * <code>optional bool hostProcess = 4;</code>
     * @return The hostProcess.
     */
    @java.lang.Override
    public boolean getHostProcess() {
      return hostProcess_;
    }

    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, gmsaCredentialSpecName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, gmsaCredentialSpec_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, runAsUserName_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, hostProcess_);
      }
      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, gmsaCredentialSpecName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, gmsaCredentialSpec_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, runAsUserName_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, hostProcess_);
      }
      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.V1.WindowsSecurityContextOptions)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1.WindowsSecurityContextOptions other = (io.kubernetes.client.proto.V1.WindowsSecurityContextOptions) obj;

      if (hasGmsaCredentialSpecName() != other.hasGmsaCredentialSpecName()) return false;
      if (hasGmsaCredentialSpecName()) {
        if (!getGmsaCredentialSpecName()
            .equals(other.getGmsaCredentialSpecName())) return false;
      }
      if (hasGmsaCredentialSpec() != other.hasGmsaCredentialSpec()) return false;
      if (hasGmsaCredentialSpec()) {
        if (!getGmsaCredentialSpec()
            .equals(other.getGmsaCredentialSpec())) return false;
      }
      if (hasRunAsUserName() != other.hasRunAsUserName()) return false;
      if (hasRunAsUserName()) {
        if (!getRunAsUserName()
            .equals(other.getRunAsUserName())) return false;
      }
      if (hasHostProcess() != other.hasHostProcess()) return false;
      if (hasHostProcess()) {
        if (getHostProcess()
            != other.getHostProcess()) 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 (hasGmsaCredentialSpecName()) {
        hash = (37 * hash) + GMSACREDENTIALSPECNAME_FIELD_NUMBER;
        hash = (53 * hash) + getGmsaCredentialSpecName().hashCode();
      }
      if (hasGmsaCredentialSpec()) {
        hash = (37 * hash) + GMSACREDENTIALSPEC_FIELD_NUMBER;
        hash = (53 * hash) + getGmsaCredentialSpec().hashCode();
      }
      if (hasRunAsUserName()) {
        hash = (37 * hash) + RUNASUSERNAME_FIELD_NUMBER;
        hash = (53 * hash) + getRunAsUserName().hashCode();
      }
      if (hasHostProcess()) {
        hash = (37 * hash) + HOSTPROCESS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHostProcess());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1.WindowsSecurityContextOptions parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.WindowsSecurityContextOptions 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.V1.WindowsSecurityContextOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.WindowsSecurityContextOptions 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.V1.WindowsSecurityContextOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1.WindowsSecurityContextOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1.WindowsSecurityContextOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.WindowsSecurityContextOptions 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.V1.WindowsSecurityContextOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1.WindowsSecurityContextOptions 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.V1.WindowsSecurityContextOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1.WindowsSecurityContextOptions 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.V1.WindowsSecurityContextOptions 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>
     * WindowsSecurityContextOptions contain Windows-specific options and credentials.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.core.v1.WindowsSecurityContextOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.core.v1.WindowsSecurityContextOptions)
        io.kubernetes.client.proto.V1.WindowsSecurityContextOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_WindowsSecurityContextOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_WindowsSecurityContextOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.class, io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        gmsaCredentialSpecName_ = "";
        gmsaCredentialSpec_ = "";
        runAsUserName_ = "";
        hostProcess_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1.internal_static_k8s_io_api_core_v1_WindowsSecurityContextOptions_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.WindowsSecurityContextOptions getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.WindowsSecurityContextOptions build() {
        io.kubernetes.client.proto.V1.WindowsSecurityContextOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1.WindowsSecurityContextOptions buildPartial() {
        io.kubernetes.client.proto.V1.WindowsSecurityContextOptions result = new io.kubernetes.client.proto.V1.WindowsSecurityContextOptions(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1.WindowsSecurityContextOptions result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.gmsaCredentialSpecName_ = gmsaCredentialSpecName_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.gmsaCredentialSpec_ = gmsaCredentialSpec_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.runAsUserName_ = runAsUserName_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.hostProcess_ = hostProcess_;
          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.V1.WindowsSecurityContextOptions) {
          return mergeFrom((io.kubernetes.client.proto.V1.WindowsSecurityContextOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1.WindowsSecurityContextOptions other) {
        if (other == io.kubernetes.client.proto.V1.WindowsSecurityContextOptions.getDefaultInstance()) return this;
        if (other.hasGmsaCredentialSpecName()) {
          gmsaCredentialSpecName_ = other.gmsaCredentialSpecName_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasGmsaCredentialSpec()) {
          gmsaCredentialSpec_ = other.gmsaCredentialSpec_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasRunAsUserName()) {
          runAsUserName_ = other.runAsUserName_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasHostProcess()) {
          setHostProcess(other.getHostProcess());
        }
        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: {
                gmsaCredentialSpecName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                gmsaCredentialSpec_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                runAsUserName_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                hostProcess_ = input.readBool();
                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 gmsaCredentialSpecName_ = "";
      /**
       * <pre>
       * GMSACredentialSpecName is the name of the GMSA credential spec to use.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpecName = 1;</code>
       * @return Whether the gmsaCredentialSpecName field is set.
       */
      public boolean hasGmsaCredentialSpecName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * GMSACredentialSpecName is the name of the GMSA credential spec to use.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpecName = 1;</code>
       * @return The gmsaCredentialSpecName.
       */
      public java.lang.String getGmsaCredentialSpecName() {
        java.lang.Object ref = gmsaCredentialSpecName_;
        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()) {
            gmsaCredentialSpecName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * GMSACredentialSpecName is the name of the GMSA credential spec to use.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpecName = 1;</code>
       * @return The bytes for gmsaCredentialSpecName.
       */
      public com.google.protobuf.ByteString
          getGmsaCredentialSpecNameBytes() {
        java.lang.Object ref = gmsaCredentialSpecName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gmsaCredentialSpecName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * GMSACredentialSpecName is the name of the GMSA credential spec to use.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpecName = 1;</code>
       * @param value The gmsaCredentialSpecName to set.
       * @return This builder for chaining.
       */
      public Builder setGmsaCredentialSpecName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        gmsaCredentialSpecName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GMSACredentialSpecName is the name of the GMSA credential spec to use.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpecName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearGmsaCredentialSpecName() {
        gmsaCredentialSpecName_ = getDefaultInstance().getGmsaCredentialSpecName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GMSACredentialSpecName is the name of the GMSA credential spec to use.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpecName = 1;</code>
       * @param value The bytes for gmsaCredentialSpecName to set.
       * @return This builder for chaining.
       */
      public Builder setGmsaCredentialSpecNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        gmsaCredentialSpecName_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object gmsaCredentialSpec_ = "";
      /**
       * <pre>
       * GMSACredentialSpec is where the GMSA admission webhook
       * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
       * GMSA credential spec named by the GMSACredentialSpecName field.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpec = 2;</code>
       * @return Whether the gmsaCredentialSpec field is set.
       */
      public boolean hasGmsaCredentialSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * GMSACredentialSpec is where the GMSA admission webhook
       * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
       * GMSA credential spec named by the GMSACredentialSpecName field.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpec = 2;</code>
       * @return The gmsaCredentialSpec.
       */
      public java.lang.String getGmsaCredentialSpec() {
        java.lang.Object ref = gmsaCredentialSpec_;
        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()) {
            gmsaCredentialSpec_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * GMSACredentialSpec is where the GMSA admission webhook
       * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
       * GMSA credential spec named by the GMSACredentialSpecName field.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpec = 2;</code>
       * @return The bytes for gmsaCredentialSpec.
       */
      public com.google.protobuf.ByteString
          getGmsaCredentialSpecBytes() {
        java.lang.Object ref = gmsaCredentialSpec_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gmsaCredentialSpec_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * GMSACredentialSpec is where the GMSA admission webhook
       * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
       * GMSA credential spec named by the GMSACredentialSpecName field.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpec = 2;</code>
       * @param value The gmsaCredentialSpec to set.
       * @return This builder for chaining.
       */
      public Builder setGmsaCredentialSpec(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        gmsaCredentialSpec_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GMSACredentialSpec is where the GMSA admission webhook
       * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
       * GMSA credential spec named by the GMSACredentialSpecName field.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpec = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearGmsaCredentialSpec() {
        gmsaCredentialSpec_ = getDefaultInstance().getGmsaCredentialSpec();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GMSACredentialSpec is where the GMSA admission webhook
       * (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
       * GMSA credential spec named by the GMSACredentialSpecName field.
       * +optional
       * </pre>
       *
       * <code>optional string gmsaCredentialSpec = 2;</code>
       * @param value The bytes for gmsaCredentialSpec to set.
       * @return This builder for chaining.
       */
      public Builder setGmsaCredentialSpecBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        gmsaCredentialSpec_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object runAsUserName_ = "";
      /**
       * <pre>
       * The UserName in Windows to run the entrypoint of the container process.
       * Defaults to the user specified in image metadata if unspecified.
       * May also be set in PodSecurityContext. If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional string runAsUserName = 3;</code>
       * @return Whether the runAsUserName field is set.
       */
      public boolean hasRunAsUserName() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The UserName in Windows to run the entrypoint of the container process.
       * Defaults to the user specified in image metadata if unspecified.
       * May also be set in PodSecurityContext. If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional string runAsUserName = 3;</code>
       * @return The runAsUserName.
       */
      public java.lang.String getRunAsUserName() {
        java.lang.Object ref = runAsUserName_;
        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()) {
            runAsUserName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The UserName in Windows to run the entrypoint of the container process.
       * Defaults to the user specified in image metadata if unspecified.
       * May also be set in PodSecurityContext. If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional string runAsUserName = 3;</code>
       * @return The bytes for runAsUserName.
       */
      public com.google.protobuf.ByteString
          getRunAsUserNameBytes() {
        java.lang.Object ref = runAsUserName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          runAsUserName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The UserName in Windows to run the entrypoint of the container process.
       * Defaults to the user specified in image metadata if unspecified.
       * May also be set in PodSecurityContext. If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional string runAsUserName = 3;</code>
       * @param value The runAsUserName to set.
       * @return This builder for chaining.
       */
      public Builder setRunAsUserName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        runAsUserName_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The UserName in Windows to run the entrypoint of the container process.
       * Defaults to the user specified in image metadata if unspecified.
       * May also be set in PodSecurityContext. If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional string runAsUserName = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRunAsUserName() {
        runAsUserName_ = getDefaultInstance().getRunAsUserName();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The UserName in Windows to run the entrypoint of the container process.
       * Defaults to the user specified in image metadata if unspecified.
       * May also be set in PodSecurityContext. If set in both SecurityContext and
       * PodSecurityContext, the value specified in SecurityContext takes precedence.
       * +optional
       * </pre>
       *
       * <code>optional string runAsUserName = 3;</code>
       * @param value The bytes for runAsUserName to set.
       * @return This builder for chaining.
       */
      public Builder setRunAsUserNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        runAsUserName_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private boolean hostProcess_ ;
      /**
       * <pre>
       * HostProcess determines if a container should be run as a 'Host Process' container.
       * All of a Pod's containers must have the same effective HostProcess value
       * (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
       * In addition, if HostProcess is true then HostNetwork must also be set to true.
       * +optional
       * </pre>
       *
       * <code>optional bool hostProcess = 4;</code>
       * @return Whether the hostProcess field is set.
       */
      @java.lang.Override
      public boolean hasHostProcess() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * HostProcess determines if a container should be run as a 'Host Process' container.
       * All of a Pod's containers must have the same effective HostProcess value
       * (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
       * In addition, if HostProcess is true then HostNetwork must also be set to true.
       * +optional
       * </pre>
       *
       * <code>optional bool hostProcess = 4;</code>
       * @return The hostProcess.
       */
      @java.lang.Override
      public boolean getHostProcess() {
        return hostProcess_;
      }
      /**
       * <pre>
       * HostProcess determines if a container should be run as a 'Host Process' container.
       * All of a Pod's containers must have the same effective HostProcess value
       * (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
       * In addition, if HostProcess is true then HostNetwork must also be set to true.
       * +optional
       * </pre>
       *
       * <code>optional bool hostProcess = 4;</code>
       * @param value The hostProcess to set.
       * @return This builder for chaining.
       */
      public Builder setHostProcess(boolean value) {

        hostProcess_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HostProcess determines if a container should be run as a 'Host Process' container.
       * All of a Pod's containers must have the same effective HostProcess value
       * (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
       * In addition, if HostProcess is true then HostNetwork must also be set to true.
       * +optional
       * </pre>
       *
       * <code>optional bool hostProcess = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearHostProcess() {
        bitField0_ = (bitField0_ & ~0x00000008);
        hostProcess_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.core.v1.WindowsSecurityContextOptions)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.core.v1.WindowsSecurityContextOptions)
    private static final io.kubernetes.client.proto.V1.WindowsSecurityContextOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1.WindowsSecurityContextOptions();
    }

    public static io.kubernetes.client.proto.V1.WindowsSecurityContextOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<WindowsSecurityContextOptions>
        PARSER = new com.google.protobuf.AbstractParser<WindowsSecurityContextOptions>() {
      @java.lang.Override
      public WindowsSecurityContextOptions 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<WindowsSecurityContextOptions> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<WindowsSecurityContextOptions> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.kubernetes.client.proto.V1.WindowsSecurityContextOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_AWSElasticBlockStoreVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_AWSElasticBlockStoreVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Affinity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Affinity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_AppArmorProfile_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_AppArmorProfile_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_AttachedVolume_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_AttachedVolume_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_AvoidPods_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_AvoidPods_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_AzureDiskVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_AzureDiskVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_AzureFilePersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_AzureFilePersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_AzureFileVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_AzureFileVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Binding_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Binding_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_VolumeAttributesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_VolumeAttributesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_CSIVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_CSIVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_CSIVolumeSource_VolumeAttributesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_CSIVolumeSource_VolumeAttributesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Capabilities_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Capabilities_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_CephFSPersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_CephFSPersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_CephFSVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_CephFSVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_CinderPersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_CinderPersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_CinderVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_CinderVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ClaimSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ClaimSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ClientIPConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ClientIPConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ClusterTrustBundleProjection_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ClusterTrustBundleProjection_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ComponentCondition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ComponentCondition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ComponentStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ComponentStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ComponentStatusList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ComponentStatusList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ConfigMap_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ConfigMap_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ConfigMap_DataEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ConfigMap_DataEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ConfigMap_BinaryDataEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ConfigMap_BinaryDataEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ConfigMapEnvSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ConfigMapEnvSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ConfigMapKeySelector_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ConfigMapKeySelector_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ConfigMapList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ConfigMapList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ConfigMapNodeConfigSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ConfigMapNodeConfigSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ConfigMapProjection_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ConfigMapProjection_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ConfigMapVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ConfigMapVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Container_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Container_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ContainerImage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ContainerImage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ContainerPort_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ContainerPort_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ContainerResizePolicy_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ContainerResizePolicy_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ContainerState_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ContainerState_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ContainerStateRunning_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ContainerStateRunning_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ContainerStateTerminated_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ContainerStateTerminated_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ContainerStateWaiting_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ContainerStateWaiting_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ContainerStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ContainerStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ContainerStatus_AllocatedResourcesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ContainerStatus_AllocatedResourcesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_DaemonEndpoint_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_DaemonEndpoint_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_DownwardAPIProjection_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_DownwardAPIProjection_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_DownwardAPIVolumeFile_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_DownwardAPIVolumeFile_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_DownwardAPIVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_DownwardAPIVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EmptyDirVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EmptyDirVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EndpointAddress_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EndpointAddress_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EndpointPort_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EndpointPort_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EndpointSubset_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EndpointSubset_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Endpoints_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Endpoints_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EndpointsList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EndpointsList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EnvFromSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EnvFromSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EnvVar_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EnvVar_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EnvVarSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EnvVarSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EphemeralContainer_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EphemeralContainer_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EphemeralContainerCommon_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EphemeralContainerCommon_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EphemeralVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EphemeralVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Event_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Event_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EventList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EventList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EventSeries_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EventSeries_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_EventSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_EventSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ExecAction_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ExecAction_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_FCVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_FCVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_OptionsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_OptionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_FlexVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_FlexVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_FlexVolumeSource_OptionsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_FlexVolumeSource_OptionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_FlockerVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_FlockerVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_GCEPersistentDiskVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_GCEPersistentDiskVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_GRPCAction_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_GRPCAction_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_GitRepoVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_GitRepoVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_GlusterfsPersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_GlusterfsPersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_GlusterfsVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_GlusterfsVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_HTTPGetAction_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_HTTPGetAction_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_HTTPHeader_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_HTTPHeader_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_HostAlias_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_HostAlias_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_HostIP_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_HostIP_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_HostPathVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_HostPathVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ISCSIPersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ISCSIPersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ISCSIVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ISCSIVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_KeyToPath_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_KeyToPath_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Lifecycle_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Lifecycle_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LifecycleHandler_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LifecycleHandler_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LimitRange_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LimitRange_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LimitRangeItem_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LimitRangeItem_MinEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LimitRangeItem_MinEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultRequestEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultRequestEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxLimitRequestRatioEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxLimitRequestRatioEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LimitRangeList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LimitRangeList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LimitRangeSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LimitRangeSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_List_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_List_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LoadBalancerIngress_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LoadBalancerIngress_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LoadBalancerStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LoadBalancerStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LocalObjectReference_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LocalObjectReference_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_LocalVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_LocalVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ModifyVolumeStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ModifyVolumeStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NFSVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NFSVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Namespace_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Namespace_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NamespaceCondition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NamespaceCondition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NamespaceList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NamespaceList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NamespaceSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NamespaceSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NamespaceStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NamespaceStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Node_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Node_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeAddress_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeAddress_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeAffinity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeAffinity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeCondition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeCondition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeConfigSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeConfigSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeConfigStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeConfigStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeDaemonEndpoints_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeDaemonEndpoints_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeProxyOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeProxyOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeRuntimeHandler_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeRuntimeHandler_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeRuntimeHandlerFeatures_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeRuntimeHandlerFeatures_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeSelector_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeSelector_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeSelectorRequirement_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeSelectorRequirement_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeSelectorTerm_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeSelectorTerm_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeStatus_CapacityEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeStatus_CapacityEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeStatus_AllocatableEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeStatus_AllocatableEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_NodeSystemInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_NodeSystemInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ObjectFieldSelector_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ObjectFieldSelector_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ObjectReference_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ObjectReference_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolume_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolume_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaim_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaim_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimCondition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimCondition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_CapacityEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_CapacityEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourcesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourcesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourceStatusesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourceStatusesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimTemplate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimTemplate_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_CapacityEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_CapacityEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PersistentVolumeStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PersistentVolumeStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PhotonPersistentDiskVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PhotonPersistentDiskVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Pod_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Pod_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodAffinity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodAffinity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodAffinityTerm_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodAffinityTerm_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodAntiAffinity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodAntiAffinity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodAttachOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodAttachOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodCondition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodCondition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodDNSConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodDNSConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodDNSConfigOption_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodDNSConfigOption_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodExecOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodExecOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodIP_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodIP_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodLogOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodLogOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodOS_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodOS_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodPortForwardOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodPortForwardOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodProxyOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodProxyOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodReadinessGate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodReadinessGate_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodResourceClaim_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodResourceClaim_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodResourceClaimStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodResourceClaimStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodSchedulingGate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodSchedulingGate_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodSecurityContext_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodSecurityContext_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodSignature_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodSignature_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodSpec_NodeSelectorEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodSpec_NodeSelectorEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodSpec_OverheadEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodSpec_OverheadEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodStatusResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodStatusResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodTemplate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodTemplate_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodTemplateList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodTemplateList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PodTemplateSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PodTemplateSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PortStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PortStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PortworxVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PortworxVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Preconditions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Preconditions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PreferAvoidPodsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PreferAvoidPodsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_PreferredSchedulingTerm_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_PreferredSchedulingTerm_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Probe_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Probe_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ProbeHandler_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ProbeHandler_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ProjectedVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ProjectedVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_QuobyteVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_QuobyteVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_RBDPersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_RBDPersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_RBDVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_RBDVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_RangeAllocation_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_RangeAllocation_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ReplicationController_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ReplicationController_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ReplicationControllerCondition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ReplicationControllerCondition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ReplicationControllerList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ReplicationControllerList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_SelectorEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_SelectorEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ReplicationControllerStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ReplicationControllerStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceClaim_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceClaim_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceFieldSelector_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceFieldSelector_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceQuota_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceQuota_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceQuotaList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceQuotaList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_HardEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_HardEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_HardEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_HardEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_UsedEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_UsedEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceRequirements_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceRequirements_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceRequirements_LimitsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceRequirements_LimitsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ResourceRequirements_RequestsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ResourceRequirements_RequestsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SELinuxOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SELinuxOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ScaleIOPersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ScaleIOPersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ScaleIOVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ScaleIOVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ScopeSelector_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ScopeSelector_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ScopedResourceSelectorRequirement_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ScopedResourceSelectorRequirement_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SeccompProfile_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SeccompProfile_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Secret_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Secret_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Secret_DataEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Secret_DataEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Secret_StringDataEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Secret_StringDataEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SecretEnvSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SecretEnvSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SecretKeySelector_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SecretKeySelector_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SecretList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SecretList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SecretProjection_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SecretProjection_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SecretReference_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SecretReference_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SecretVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SecretVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SecurityContext_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SecurityContext_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SerializedReference_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SerializedReference_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Service_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Service_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ServiceAccount_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ServiceAccount_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ServiceAccountList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ServiceAccountList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ServiceAccountTokenProjection_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ServiceAccountTokenProjection_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ServiceList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ServiceList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ServicePort_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ServicePort_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ServiceProxyOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ServiceProxyOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ServiceSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ServiceSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ServiceSpec_SelectorEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ServiceSpec_SelectorEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_ServiceStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_ServiceStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SessionAffinityConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SessionAffinityConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_SleepAction_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_SleepAction_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_StorageOSPersistentVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_StorageOSPersistentVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_StorageOSVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_StorageOSVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Sysctl_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Sysctl_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_TCPSocketAction_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_TCPSocketAction_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Taint_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Taint_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Toleration_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Toleration_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_TopologySelectorLabelRequirement_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_TopologySelectorLabelRequirement_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_TopologySelectorTerm_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_TopologySelectorTerm_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_TopologySpreadConstraint_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_TopologySpreadConstraint_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_TypedLocalObjectReference_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_TypedLocalObjectReference_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_TypedObjectReference_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_TypedObjectReference_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_Volume_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_Volume_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_VolumeDevice_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_VolumeDevice_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_VolumeMount_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_VolumeMount_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_VolumeMountStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_VolumeMountStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_VolumeNodeAffinity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_VolumeNodeAffinity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_VolumeProjection_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_VolumeProjection_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_LimitsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_LimitsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_RequestsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_RequestsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_VolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_VolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_VsphereVirtualDiskVolumeSource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_VsphereVirtualDiskVolumeSource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_WeightedPodAffinityTerm_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_WeightedPodAffinityTerm_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_core_v1_WindowsSecurityContextOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_core_v1_WindowsSecurityContextOptions_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\"k8s.io/api/core/v1/generated.proto\022\022k8" +
      "s.io.api.core.v1\0324k8s.io/apimachinery/pk" +
      "g/api/resource/generated.proto\0324k8s.io/a" +
      "pimachinery/pkg/apis/meta/v1/generated.p" +
      "roto\032/k8s.io/apimachinery/pkg/runtime/ge" +
      "nerated.proto\0326k8s.io/apimachinery/pkg/r" +
      "untime/schema/generated.proto\0323k8s.io/ap" +
      "imachinery/pkg/util/intstr/generated.pro" +
      "to\"i\n AWSElasticBlockStoreVolumeSource\022\020" +
      "\n\010volumeID\030\001 \001(\t\022\016\n\006fsType\030\002 \001(\t\022\021\n\tpart" +
      "ition\030\003 \001(\005\022\020\n\010readOnly\030\004 \001(\010\"\266\001\n\010Affini" +
      "ty\0226\n\014nodeAffinity\030\001 \001(\0132 .k8s.io.api.co" +
      "re.v1.NodeAffinity\0224\n\013podAffinity\030\002 \001(\0132" +
      "\037.k8s.io.api.core.v1.PodAffinity\022<\n\017podA" +
      "ntiAffinity\030\003 \001(\0132#.k8s.io.api.core.v1.P" +
      "odAntiAffinity\"9\n\017AppArmorProfile\022\014\n\004typ" +
      "e\030\001 \001(\t\022\030\n\020localhostProfile\030\002 \001(\t\"2\n\016Att" +
      "achedVolume\022\014\n\004name\030\001 \001(\t\022\022\n\ndevicePath\030" +
      "\002 \001(\t\"N\n\tAvoidPods\022A\n\017preferAvoidPods\030\001 " +
      "\003(\0132(.k8s.io.api.core.v1.PreferAvoidPods" +
      "Entry\"\177\n\025AzureDiskVolumeSource\022\020\n\010diskNa" +
      "me\030\001 \001(\t\022\017\n\007diskURI\030\002 \001(\t\022\023\n\013cachingMode" +
      "\030\003 \001(\t\022\016\n\006fsType\030\004 \001(\t\022\020\n\010readOnly\030\005 \001(\010" +
      "\022\014\n\004kind\030\006 \001(\t\"s\n\037AzureFilePersistentVol" +
      "umeSource\022\022\n\nsecretName\030\001 \001(\t\022\021\n\tshareNa" +
      "me\030\002 \001(\t\022\020\n\010readOnly\030\003 \001(\010\022\027\n\017secretName" +
      "space\030\004 \001(\t\"P\n\025AzureFileVolumeSource\022\022\n\n" +
      "secretName\030\001 \001(\t\022\021\n\tshareName\030\002 \001(\t\022\020\n\010r" +
      "eadOnly\030\003 \001(\010\"\202\001\n\007Binding\022B\n\010metadata\030\001 " +
      "\001(\01320.k8s.io.apimachinery.pkg.apis.meta." +
      "v1.ObjectMeta\0223\n\006target\030\002 \001(\0132#.k8s.io.a" +
      "pi.core.v1.ObjectReference\"\322\004\n\031CSIPersis" +
      "tentVolumeSource\022\016\n\006driver\030\001 \001(\t\022\024\n\014volu" +
      "meHandle\030\002 \001(\t\022\020\n\010readOnly\030\003 \001(\010\022\016\n\006fsTy" +
      "pe\030\004 \001(\t\022]\n\020volumeAttributes\030\005 \003(\0132C.k8s" +
      ".io.api.core.v1.CSIPersistentVolumeSourc" +
      "e.VolumeAttributesEntry\022G\n\032controllerPub" +
      "lishSecretRef\030\006 \001(\0132#.k8s.io.api.core.v1" +
      ".SecretReference\022?\n\022nodeStageSecretRef\030\007" +
      " \001(\0132#.k8s.io.api.core.v1.SecretReferenc" +
      "e\022A\n\024nodePublishSecretRef\030\010 \001(\0132#.k8s.io" +
      ".api.core.v1.SecretReference\022F\n\031controll" +
      "erExpandSecretRef\030\t \001(\0132#.k8s.io.api.cor" +
      "e.v1.SecretReference\022@\n\023nodeExpandSecret" +
      "Ref\030\n \001(\0132#.k8s.io.api.core.v1.SecretRef" +
      "erence\0327\n\025VolumeAttributesEntry\022\013\n\003key\030\001" +
      " \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\231\002\n\017CSIVolumeSou" +
      "rce\022\016\n\006driver\030\001 \001(\t\022\020\n\010readOnly\030\002 \001(\010\022\016\n" +
      "\006fsType\030\003 \001(\t\022S\n\020volumeAttributes\030\004 \003(\0132" +
      "9.k8s.io.api.core.v1.CSIVolumeSource.Vol" +
      "umeAttributesEntry\022F\n\024nodePublishSecretR" +
      "ef\030\005 \001(\0132(.k8s.io.api.core.v1.LocalObjec" +
      "tReference\0327\n\025VolumeAttributesEntry\022\013\n\003k" +
      "ey\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\")\n\014Capabilit" +
      "ies\022\013\n\003add\030\001 \003(\t\022\014\n\004drop\030\002 \003(\t\"\252\001\n\034CephF" +
      "SPersistentVolumeSource\022\020\n\010monitors\030\001 \003(" +
      "\t\022\014\n\004path\030\002 \001(\t\022\014\n\004user\030\003 \001(\t\022\022\n\nsecretF" +
      "ile\030\004 \001(\t\0226\n\tsecretRef\030\005 \001(\0132#.k8s.io.ap" +
      "i.core.v1.SecretReference\022\020\n\010readOnly\030\006 " +
      "\001(\010\"\245\001\n\022CephFSVolumeSource\022\020\n\010monitors\030\001" +
      " \003(\t\022\014\n\004path\030\002 \001(\t\022\014\n\004user\030\003 \001(\t\022\022\n\nsecr" +
      "etFile\030\004 \001(\t\022;\n\tsecretRef\030\005 \001(\0132(.k8s.io" +
      ".api.core.v1.LocalObjectReference\022\020\n\010rea" +
      "dOnly\030\006 \001(\010\"\212\001\n\034CinderPersistentVolumeSo" +
      "urce\022\020\n\010volumeID\030\001 \001(\t\022\016\n\006fsType\030\002 \001(\t\022\020" +
      "\n\010readOnly\030\003 \001(\010\0226\n\tsecretRef\030\004 \001(\0132#.k8" +
      "s.io.api.core.v1.SecretReference\"\205\001\n\022Cin" +
      "derVolumeSource\022\020\n\010volumeID\030\001 \001(\t\022\016\n\006fsT" +
      "ype\030\002 \001(\t\022\020\n\010readOnly\030\003 \001(\010\022;\n\tsecretRef" +
      "\030\004 \001(\0132(.k8s.io.api.core.v1.LocalObjectR" +
      "eference\"K\n\013ClaimSource\022\031\n\021resourceClaim" +
      "Name\030\001 \001(\t\022!\n\031resourceClaimTemplateName\030" +
      "\002 \001(\t\"(\n\016ClientIPConfig\022\026\n\016timeoutSecond" +
      "s\030\001 \001(\005\"\254\001\n\034ClusterTrustBundleProjection" +
      "\022\014\n\004name\030\001 \001(\t\022\022\n\nsignerName\030\002 \001(\t\022J\n\rla" +
      "belSelector\030\003 \001(\01323.k8s.io.apimachinery." +
      "pkg.apis.meta.v1.LabelSelector\022\020\n\010option" +
      "al\030\005 \001(\010\022\014\n\004path\030\004 \001(\t\"R\n\022ComponentCondi" +
      "tion\022\014\n\004type\030\001 \001(\t\022\016\n\006status\030\002 \001(\t\022\017\n\007me" +
      "ssage\030\003 \001(\t\022\r\n\005error\030\004 \001(\t\"\221\001\n\017Component" +
      "Status\022B\n\010metadata\030\001 \001(\01320.k8s.io.apimac" +
      "hinery.pkg.apis.meta.v1.ObjectMeta\022:\n\nco" +
      "nditions\030\002 \003(\0132&.k8s.io.api.core.v1.Comp" +
      "onentCondition\"\213\001\n\023ComponentStatusList\022@" +
      "\n\010metadata\030\001 \001(\0132..k8s.io.apimachinery.p" +
      "kg.apis.meta.v1.ListMeta\0222\n\005items\030\002 \003(\0132" +
      "#.k8s.io.api.core.v1.ComponentStatus\"\274\002\n" +
      "\tConfigMap\022B\n\010metadata\030\001 \001(\01320.k8s.io.ap" +
      "imachinery.pkg.apis.meta.v1.ObjectMeta\022\021" +
      "\n\timmutable\030\004 \001(\010\0225\n\004data\030\002 \003(\0132\'.k8s.io" +
      ".api.core.v1.ConfigMap.DataEntry\022A\n\nbina" +
      "ryData\030\003 \003(\0132-.k8s.io.api.core.v1.Config" +
      "Map.BinaryDataEntry\032+\n\tDataEntry\022\013\n\003key\030" +
      "\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\0321\n\017BinaryDataEn" +
      "try\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\014:\0028\001\"n\n\022C" +
      "onfigMapEnvSource\022F\n\024localObjectReferenc" +
      "e\030\001 \001(\0132(.k8s.io.api.core.v1.LocalObject" +
      "Reference\022\020\n\010optional\030\002 \001(\010\"}\n\024ConfigMap" +
      "KeySelector\022F\n\024localObjectReference\030\001 \001(" +
      "\0132(.k8s.io.api.core.v1.LocalObjectRefere" +
      "nce\022\013\n\003key\030\002 \001(\t\022\020\n\010optional\030\003 \001(\010\"\177\n\rCo" +
      "nfigMapList\022@\n\010metadata\030\001 \001(\0132..k8s.io.a" +
      "pimachinery.pkg.apis.meta.v1.ListMeta\022,\n" +
      "\005items\030\002 \003(\0132\035.k8s.io.api.core.v1.Config" +
      "Map\"|\n\031ConfigMapNodeConfigSource\022\021\n\tname" +
      "space\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\013\n\003uid\030\003 \001(\t\022\027" +
      "\n\017resourceVersion\030\004 \001(\t\022\030\n\020kubeletConfig" +
      "Key\030\005 \001(\t\"\235\001\n\023ConfigMapProjection\022F\n\024loc" +
      "alObjectReference\030\001 \001(\0132(.k8s.io.api.cor" +
      "e.v1.LocalObjectReference\022,\n\005items\030\002 \003(\013" +
      "2\035.k8s.io.api.core.v1.KeyToPath\022\020\n\010optio" +
      "nal\030\004 \001(\010\"\264\001\n\025ConfigMapVolumeSource\022F\n\024l" +
      "ocalObjectReference\030\001 \001(\0132(.k8s.io.api.c" +
      "ore.v1.LocalObjectReference\022,\n\005items\030\002 \003" +
      "(\0132\035.k8s.io.api.core.v1.KeyToPath\022\023\n\013def" +
      "aultMode\030\003 \001(\005\022\020\n\010optional\030\004 \001(\010\"\377\006\n\tCon" +
      "tainer\022\014\n\004name\030\001 \001(\t\022\r\n\005image\030\002 \001(\t\022\017\n\007c" +
      "ommand\030\003 \003(\t\022\014\n\004args\030\004 \003(\t\022\022\n\nworkingDir" +
      "\030\005 \001(\t\0220\n\005ports\030\006 \003(\0132!.k8s.io.api.core." +
      "v1.ContainerPort\0222\n\007envFrom\030\023 \003(\0132!.k8s." +
      "io.api.core.v1.EnvFromSource\022\'\n\003env\030\007 \003(" +
      "\0132\032.k8s.io.api.core.v1.EnvVar\022;\n\tresourc" +
      "es\030\010 \001(\0132(.k8s.io.api.core.v1.ResourceRe" +
      "quirements\022?\n\014resizePolicy\030\027 \003(\0132).k8s.i" +
      "o.api.core.v1.ContainerResizePolicy\022\025\n\rr" +
      "estartPolicy\030\030 \001(\t\0225\n\014volumeMounts\030\t \003(\013" +
      "2\037.k8s.io.api.core.v1.VolumeMount\0227\n\rvol" +
      "umeDevices\030\025 \003(\0132 .k8s.io.api.core.v1.Vo" +
      "lumeDevice\0220\n\rlivenessProbe\030\n \001(\0132\031.k8s." +
      "io.api.core.v1.Probe\0221\n\016readinessProbe\030\013" +
      " \001(\0132\031.k8s.io.api.core.v1.Probe\022/\n\014start" +
      "upProbe\030\026 \001(\0132\031.k8s.io.api.core.v1.Probe" +
      "\0220\n\tlifecycle\030\014 \001(\0132\035.k8s.io.api.core.v1" +
      ".Lifecycle\022\036\n\026terminationMessagePath\030\r \001" +
      "(\t\022 \n\030terminationMessagePolicy\030\024 \001(\t\022\027\n\017" +
      "imagePullPolicy\030\016 \001(\t\022<\n\017securityContext" +
      "\030\017 \001(\0132#.k8s.io.api.core.v1.SecurityCont" +
      "ext\022\r\n\005stdin\030\020 \001(\010\022\021\n\tstdinOnce\030\021 \001(\010\022\013\n" +
      "\003tty\030\022 \001(\010\"2\n\016ContainerImage\022\r\n\005names\030\001 " +
      "\003(\t\022\021\n\tsizeBytes\030\002 \001(\003\"h\n\rContainerPort\022" +
      "\014\n\004name\030\001 \001(\t\022\020\n\010hostPort\030\002 \001(\005\022\025\n\rconta" +
      "inerPort\030\003 \001(\005\022\020\n\010protocol\030\004 \001(\t\022\016\n\006host" +
      "IP\030\005 \001(\t\"D\n\025ContainerResizePolicy\022\024\n\014res" +
      "ourceName\030\001 \001(\t\022\025\n\rrestartPolicy\030\002 \001(\t\"\312" +
      "\001\n\016ContainerState\022:\n\007waiting\030\001 \001(\0132).k8s" +
      ".io.api.core.v1.ContainerStateWaiting\022:\n" +
      "\007running\030\002 \001(\0132).k8s.io.api.core.v1.Cont" +
      "ainerStateRunning\022@\n\nterminated\030\003 \001(\0132,." +
      "k8s.io.api.core.v1.ContainerStateTermina" +
      "ted\"V\n\025ContainerStateRunning\022=\n\tstartedA" +
      "t\030\001 \001(\0132*.k8s.io.apimachinery.pkg.apis.m" +
      "eta.v1.Time\"\361\001\n\030ContainerStateTerminated" +
      "\022\020\n\010exitCode\030\001 \001(\005\022\016\n\006signal\030\002 \001(\005\022\016\n\006re" +
      "ason\030\003 \001(\t\022\017\n\007message\030\004 \001(\t\022=\n\tstartedAt" +
      "\030\005 \001(\0132*.k8s.io.apimachinery.pkg.apis.me" +
      "ta.v1.Time\022>\n\nfinishedAt\030\006 \001(\0132*.k8s.io." +
      "apimachinery.pkg.apis.meta.v1.Time\022\023\n\013co" +
      "ntainerID\030\007 \001(\t\"8\n\025ContainerStateWaiting" +
      "\022\016\n\006reason\030\001 \001(\t\022\017\n\007message\030\002 \001(\t\"\262\004\n\017Co" +
      "ntainerStatus\022\014\n\004name\030\001 \001(\t\0221\n\005state\030\002 \001" +
      "(\0132\".k8s.io.api.core.v1.ContainerState\0225" +
      "\n\tlastState\030\003 \001(\0132\".k8s.io.api.core.v1.C" +
      "ontainerState\022\r\n\005ready\030\004 \001(\010\022\024\n\014restartC" +
      "ount\030\005 \001(\005\022\r\n\005image\030\006 \001(\t\022\017\n\007imageID\030\007 \001" +
      "(\t\022\023\n\013containerID\030\010 \001(\t\022\017\n\007started\030\t \001(\010" +
      "\022W\n\022allocatedResources\030\n \003(\0132;.k8s.io.ap" +
      "i.core.v1.ContainerStatus.AllocatedResou" +
      "rcesEntry\022;\n\tresources\030\013 \001(\0132(.k8s.io.ap" +
      "i.core.v1.ResourceRequirements\022;\n\014volume" +
      "Mounts\030\014 \003(\0132%.k8s.io.api.core.v1.Volume" +
      "MountStatus\032i\n\027AllocatedResourcesEntry\022\013" +
      "\n\003key\030\001 \001(\t\022=\n\005value\030\002 \001(\0132..k8s.io.apim" +
      "achinery.pkg.api.resource.Quantity:\0028\001\"\036" +
      "\n\016DaemonEndpoint\022\014\n\004Port\030\001 \001(\005\"Q\n\025Downwa" +
      "rdAPIProjection\0228\n\005items\030\001 \003(\0132).k8s.io." +
      "api.core.v1.DownwardAPIVolumeFile\"\263\001\n\025Do" +
      "wnwardAPIVolumeFile\022\014\n\004path\030\001 \001(\t\0229\n\010fie" +
      "ldRef\030\002 \001(\0132\'.k8s.io.api.core.v1.ObjectF" +
      "ieldSelector\022C\n\020resourceFieldRef\030\003 \001(\0132)" +
      ".k8s.io.api.core.v1.ResourceFieldSelecto" +
      "r\022\014\n\004mode\030\004 \001(\005\"h\n\027DownwardAPIVolumeSour" +
      "ce\0228\n\005items\030\001 \003(\0132).k8s.io.api.core.v1.D" +
      "ownwardAPIVolumeFile\022\023\n\013defaultMode\030\002 \001(" +
      "\005\"i\n\024EmptyDirVolumeSource\022\016\n\006medium\030\001 \001(" +
      "\t\022A\n\tsizeLimit\030\002 \001(\0132..k8s.io.apimachine" +
      "ry.pkg.api.resource.Quantity\"y\n\017Endpoint" +
      "Address\022\n\n\002ip\030\001 \001(\t\022\020\n\010hostname\030\003 \001(\t\022\020\n" +
      "\010nodeName\030\004 \001(\t\0226\n\ttargetRef\030\002 \001(\0132#.k8s" +
      ".io.api.core.v1.ObjectReference\"Q\n\014Endpo" +
      "intPort\022\014\n\004name\030\001 \001(\t\022\014\n\004port\030\002 \001(\005\022\020\n\010p" +
      "rotocol\030\003 \001(\t\022\023\n\013appProtocol\030\004 \001(\t\"\271\001\n\016E" +
      "ndpointSubset\0226\n\taddresses\030\001 \003(\0132#.k8s.i" +
      "o.api.core.v1.EndpointAddress\022>\n\021notRead" +
      "yAddresses\030\002 \003(\0132#.k8s.io.api.core.v1.En" +
      "dpointAddress\022/\n\005ports\030\003 \003(\0132 .k8s.io.ap" +
      "i.core.v1.EndpointPort\"\204\001\n\tEndpoints\022B\n\010" +
      "metadata\030\001 \001(\01320.k8s.io.apimachinery.pkg" +
      ".apis.meta.v1.ObjectMeta\0223\n\007subsets\030\002 \003(" +
      "\0132\".k8s.io.api.core.v1.EndpointSubset\"\177\n" +
      "\rEndpointsList\022@\n\010metadata\030\001 \001(\0132..k8s.i" +
      "o.apimachinery.pkg.apis.meta.v1.ListMeta" +
      "\022,\n\005items\030\002 \003(\0132\035.k8s.io.api.core.v1.End" +
      "points\"\225\001\n\rEnvFromSource\022\016\n\006prefix\030\001 \001(\t" +
      "\022<\n\014configMapRef\030\002 \001(\0132&.k8s.io.api.core" +
      ".v1.ConfigMapEnvSource\0226\n\tsecretRef\030\003 \001(" +
      "\0132#.k8s.io.api.core.v1.SecretEnvSource\"Z" +
      "\n\006EnvVar\022\014\n\004name\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\0223\n" +
      "\tvalueFrom\030\003 \001(\0132 .k8s.io.api.core.v1.En" +
      "vVarSource\"\216\002\n\014EnvVarSource\0229\n\010fieldRef\030" +
      "\001 \001(\0132\'.k8s.io.api.core.v1.ObjectFieldSe" +
      "lector\022C\n\020resourceFieldRef\030\002 \001(\0132).k8s.i" +
      "o.api.core.v1.ResourceFieldSelector\022A\n\017c" +
      "onfigMapKeyRef\030\003 \001(\0132(.k8s.io.api.core.v" +
      "1.ConfigMapKeySelector\022;\n\014secretKeyRef\030\004" +
      " \001(\0132%.k8s.io.api.core.v1.SecretKeySelec" +
      "tor\"\201\001\n\022EphemeralContainer\022N\n\030ephemeralC" +
      "ontainerCommon\030\001 \001(\0132,.k8s.io.api.core.v" +
      "1.EphemeralContainerCommon\022\033\n\023targetCont" +
      "ainerName\030\002 \001(\t\"\216\007\n\030EphemeralContainerCo" +
      "mmon\022\014\n\004name\030\001 \001(\t\022\r\n\005image\030\002 \001(\t\022\017\n\007com" +
      "mand\030\003 \003(\t\022\014\n\004args\030\004 \003(\t\022\022\n\nworkingDir\030\005" +
      " \001(\t\0220\n\005ports\030\006 \003(\0132!.k8s.io.api.core.v1" +
      ".ContainerPort\0222\n\007envFrom\030\023 \003(\0132!.k8s.io" +
      ".api.core.v1.EnvFromSource\022\'\n\003env\030\007 \003(\0132" +
      "\032.k8s.io.api.core.v1.EnvVar\022;\n\tresources" +
      "\030\010 \001(\0132(.k8s.io.api.core.v1.ResourceRequ" +
      "irements\022?\n\014resizePolicy\030\027 \003(\0132).k8s.io." +
      "api.core.v1.ContainerResizePolicy\022\025\n\rres" +
      "tartPolicy\030\030 \001(\t\0225\n\014volumeMounts\030\t \003(\0132\037" +
      ".k8s.io.api.core.v1.VolumeMount\0227\n\rvolum" +
      "eDevices\030\025 \003(\0132 .k8s.io.api.core.v1.Volu" +
      "meDevice\0220\n\rlivenessProbe\030\n \001(\0132\031.k8s.io" +
      ".api.core.v1.Probe\0221\n\016readinessProbe\030\013 \001" +
      "(\0132\031.k8s.io.api.core.v1.Probe\022/\n\014startup" +
      "Probe\030\026 \001(\0132\031.k8s.io.api.core.v1.Probe\0220" +
      "\n\tlifecycle\030\014 \001(\0132\035.k8s.io.api.core.v1.L" +
      "ifecycle\022\036\n\026terminationMessagePath\030\r \001(\t" +
      "\022 \n\030terminationMessagePolicy\030\024 \001(\t\022\027\n\017im" +
      "agePullPolicy\030\016 \001(\t\022<\n\017securityContext\030\017" +
      " \001(\0132#.k8s.io.api.core.v1.SecurityContex" +
      "t\022\r\n\005stdin\030\020 \001(\010\022\021\n\tstdinOnce\030\021 \001(\010\022\013\n\003t" +
      "ty\030\022 \001(\010\"g\n\025EphemeralVolumeSource\022N\n\023vol" +
      "umeClaimTemplate\030\001 \001(\01321.k8s.io.api.core" +
      ".v1.PersistentVolumeClaimTemplate\"\360\004\n\005Ev" +
      "ent\022B\n\010metadata\030\001 \001(\01320.k8s.io.apimachin" +
      "ery.pkg.apis.meta.v1.ObjectMeta\022;\n\016invol" +
      "vedObject\030\002 \001(\0132#.k8s.io.api.core.v1.Obj" +
      "ectReference\022\016\n\006reason\030\003 \001(\t\022\017\n\007message\030" +
      "\004 \001(\t\022/\n\006source\030\005 \001(\0132\037.k8s.io.api.core." +
      "v1.EventSource\022B\n\016firstTimestamp\030\006 \001(\0132*" +
      ".k8s.io.apimachinery.pkg.apis.meta.v1.Ti" +
      "me\022A\n\rlastTimestamp\030\007 \001(\0132*.k8s.io.apima" +
      "chinery.pkg.apis.meta.v1.Time\022\r\n\005count\030\010" +
      " \001(\005\022\014\n\004type\030\t \001(\t\022B\n\teventTime\030\n \001(\0132/." +
      "k8s.io.apimachinery.pkg.apis.meta.v1.Mic" +
      "roTime\022/\n\006series\030\013 \001(\0132\037.k8s.io.api.core" +
      ".v1.EventSeries\022\016\n\006action\030\014 \001(\t\0224\n\007relat" +
      "ed\030\r \001(\0132#.k8s.io.api.core.v1.ObjectRefe" +
      "rence\022\032\n\022reportingComponent\030\016 \001(\t\022\031\n\021rep" +
      "ortingInstance\030\017 \001(\t\"w\n\tEventList\022@\n\010met" +
      "adata\030\001 \001(\0132..k8s.io.apimachinery.pkg.ap" +
      "is.meta.v1.ListMeta\022(\n\005items\030\002 \003(\0132\031.k8s" +
      ".io.api.core.v1.Event\"g\n\013EventSeries\022\r\n\005" +
      "count\030\001 \001(\005\022I\n\020lastObservedTime\030\002 \001(\0132/." +
      "k8s.io.apimachinery.pkg.apis.meta.v1.Mic" +
      "roTime\".\n\013EventSource\022\021\n\tcomponent\030\001 \001(\t" +
      "\022\014\n\004host\030\002 \001(\t\"\035\n\nExecAction\022\017\n\007command\030" +
      "\001 \003(\t\"b\n\016FCVolumeSource\022\022\n\ntargetWWNs\030\001 " +
      "\003(\t\022\013\n\003lun\030\002 \001(\005\022\016\n\006fsType\030\003 \001(\t\022\020\n\010read" +
      "Only\030\004 \001(\010\022\r\n\005wwids\030\005 \003(\t\"\204\002\n\032FlexPersis" +
      "tentVolumeSource\022\016\n\006driver\030\001 \001(\t\022\016\n\006fsTy" +
      "pe\030\002 \001(\t\0226\n\tsecretRef\030\003 \001(\0132#.k8s.io.api" +
      ".core.v1.SecretReference\022\020\n\010readOnly\030\004 \001" +
      "(\010\022L\n\007options\030\005 \003(\0132;.k8s.io.api.core.v1" +
      ".FlexPersistentVolumeSource.OptionsEntry" +
      "\032.\n\014OptionsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002" +
      " \001(\t:\0028\001\"\365\001\n\020FlexVolumeSource\022\016\n\006driver\030" +
      "\001 \001(\t\022\016\n\006fsType\030\002 \001(\t\022;\n\tsecretRef\030\003 \001(\013" +
      "2(.k8s.io.api.core.v1.LocalObjectReferen" +
      "ce\022\020\n\010readOnly\030\004 \001(\010\022B\n\007options\030\005 \003(\01321." +
      "k8s.io.api.core.v1.FlexVolumeSource.Opti" +
      "onsEntry\032.\n\014OptionsEntry\022\013\n\003key\030\001 \001(\t\022\r\n" +
      "\005value\030\002 \001(\t:\0028\001\"?\n\023FlockerVolumeSource\022" +
      "\023\n\013datasetName\030\001 \001(\t\022\023\n\013datasetUUID\030\002 \001(" +
      "\t\"d\n\035GCEPersistentDiskVolumeSource\022\016\n\006pd" +
      "Name\030\001 \001(\t\022\016\n\006fsType\030\002 \001(\t\022\021\n\tpartition\030" +
      "\003 \001(\005\022\020\n\010readOnly\030\004 \001(\010\"+\n\nGRPCAction\022\014\n" +
      "\004port\030\001 \001(\005\022\017\n\007service\030\002 \001(\t\"N\n\023GitRepoV" +
      "olumeSource\022\022\n\nrepository\030\001 \001(\t\022\020\n\010revis" +
      "ion\030\002 \001(\t\022\021\n\tdirectory\030\003 \001(\t\"p\n\037Glusterf" +
      "sPersistentVolumeSource\022\021\n\tendpoints\030\001 \001" +
      "(\t\022\014\n\004path\030\002 \001(\t\022\020\n\010readOnly\030\003 \001(\010\022\032\n\022en" +
      "dpointsNamespace\030\004 \001(\t\"J\n\025GlusterfsVolum" +
      "eSource\022\021\n\tendpoints\030\001 \001(\t\022\014\n\004path\030\002 \001(\t" +
      "\022\020\n\010readOnly\030\003 \001(\010\"\260\001\n\rHTTPGetAction\022\014\n\004" +
      "path\030\001 \001(\t\022>\n\004port\030\002 \001(\01320.k8s.io.apimac" +
      "hinery.pkg.util.intstr.IntOrString\022\014\n\004ho" +
      "st\030\003 \001(\t\022\016\n\006scheme\030\004 \001(\t\0223\n\013httpHeaders\030" +
      "\005 \003(\0132\036.k8s.io.api.core.v1.HTTPHeader\")\n" +
      "\nHTTPHeader\022\014\n\004name\030\001 \001(\t\022\r\n\005value\030\002 \001(\t" +
      "\"*\n\tHostAlias\022\n\n\002ip\030\001 \001(\t\022\021\n\thostnames\030\002" +
      " \003(\t\"\024\n\006HostIP\022\n\n\002ip\030\001 \001(\t\"2\n\024HostPathVo" +
      "lumeSource\022\014\n\004path\030\001 \001(\t\022\014\n\004type\030\002 \001(\t\"\233" +
      "\002\n\033ISCSIPersistentVolumeSource\022\024\n\014target" +
      "Portal\030\001 \001(\t\022\013\n\003iqn\030\002 \001(\t\022\013\n\003lun\030\003 \001(\005\022\026" +
      "\n\016iscsiInterface\030\004 \001(\t\022\016\n\006fsType\030\005 \001(\t\022\020" +
      "\n\010readOnly\030\006 \001(\010\022\017\n\007portals\030\007 \003(\t\022\031\n\021cha" +
      "pAuthDiscovery\030\010 \001(\010\022\027\n\017chapAuthSession\030" +
      "\013 \001(\010\0226\n\tsecretRef\030\n \001(\0132#.k8s.io.api.co" +
      "re.v1.SecretReference\022\025\n\rinitiatorName\030\014" +
      " \001(\t\"\226\002\n\021ISCSIVolumeSource\022\024\n\014targetPort" +
      "al\030\001 \001(\t\022\013\n\003iqn\030\002 \001(\t\022\013\n\003lun\030\003 \001(\005\022\026\n\016is" +
      "csiInterface\030\004 \001(\t\022\016\n\006fsType\030\005 \001(\t\022\020\n\010re" +
      "adOnly\030\006 \001(\010\022\017\n\007portals\030\007 \003(\t\022\031\n\021chapAut" +
      "hDiscovery\030\010 \001(\010\022\027\n\017chapAuthSession\030\013 \001(" +
      "\010\022;\n\tsecretRef\030\n \001(\0132(.k8s.io.api.core.v" +
      "1.LocalObjectReference\022\025\n\rinitiatorName\030" +
      "\014 \001(\t\"4\n\tKeyToPath\022\013\n\003key\030\001 \001(\t\022\014\n\004path\030" +
      "\002 \001(\t\022\014\n\004mode\030\003 \001(\005\"{\n\tLifecycle\0227\n\tpost" +
      "Start\030\001 \001(\0132$.k8s.io.api.core.v1.Lifecyc" +
      "leHandler\0225\n\007preStop\030\002 \001(\0132$.k8s.io.api." +
      "core.v1.LifecycleHandler\"\334\001\n\020LifecycleHa" +
      "ndler\022,\n\004exec\030\001 \001(\0132\036.k8s.io.api.core.v1" +
      ".ExecAction\0222\n\007httpGet\030\002 \001(\0132!.k8s.io.ap" +
      "i.core.v1.HTTPGetAction\0226\n\ttcpSocket\030\003 \001" +
      "(\0132#.k8s.io.api.core.v1.TCPSocketAction\022" +
      ".\n\005sleep\030\004 \001(\0132\037.k8s.io.api.core.v1.Slee" +
      "pAction\"\202\001\n\nLimitRange\022B\n\010metadata\030\001 \001(\013" +
      "20.k8s.io.apimachinery.pkg.apis.meta.v1." +
      "ObjectMeta\0220\n\004spec\030\002 \001(\0132\".k8s.io.api.co" +
      "re.v1.LimitRangeSpec\"\354\006\n\016LimitRangeItem\022" +
      "\014\n\004type\030\001 \001(\t\0228\n\003max\030\002 \003(\0132+.k8s.io.api." +
      "core.v1.LimitRangeItem.MaxEntry\0228\n\003min\030\003" +
      " \003(\0132+.k8s.io.api.core.v1.LimitRangeItem" +
      ".MinEntry\022@\n\007default\030\004 \003(\0132/.k8s.io.api." +
      "core.v1.LimitRangeItem.DefaultEntry\022N\n\016d" +
      "efaultRequest\030\005 \003(\01326.k8s.io.api.core.v1" +
      ".LimitRangeItem.DefaultRequestEntry\022Z\n\024m" +
      "axLimitRequestRatio\030\006 \003(\0132<.k8s.io.api.c" +
      "ore.v1.LimitRangeItem.MaxLimitRequestRat" +
      "ioEntry\032Z\n\010MaxEntry\022\013\n\003key\030\001 \001(\t\022=\n\005valu" +
      "e\030\002 \001(\0132..k8s.io.apimachinery.pkg.api.re" +
      "source.Quantity:\0028\001\032Z\n\010MinEntry\022\013\n\003key\030\001" +
      " \001(\t\022=\n\005value\030\002 \001(\0132..k8s.io.apimachiner" +
      "y.pkg.api.resource.Quantity:\0028\001\032^\n\014Defau" +
      "ltEntry\022\013\n\003key\030\001 \001(\t\022=\n\005value\030\002 \001(\0132..k8" +
      "s.io.apimachinery.pkg.api.resource.Quant" +
      "ity:\0028\001\032e\n\023DefaultRequestEntry\022\013\n\003key\030\001 " +
      "\001(\t\022=\n\005value\030\002 \001(\0132..k8s.io.apimachinery" +
      ".pkg.api.resource.Quantity:\0028\001\032k\n\031MaxLim" +
      "itRequestRatioEntry\022\013\n\003key\030\001 \001(\t\022=\n\005valu" +
      "e\030\002 \001(\0132..k8s.io.apimachinery.pkg.api.re" +
      "source.Quantity:\0028\001\"\201\001\n\016LimitRangeList\022@" +
      "\n\010metadata\030\001 \001(\0132..k8s.io.apimachinery.p" +
      "kg.apis.meta.v1.ListMeta\022-\n\005items\030\002 \003(\0132" +
      "\036.k8s.io.api.core.v1.LimitRange\"D\n\016Limit" +
      "RangeSpec\0222\n\006limits\030\001 \003(\0132\".k8s.io.api.c" +
      "ore.v1.LimitRangeItem\"\206\001\n\004List\022@\n\010metada" +
      "ta\030\001 \001(\0132..k8s.io.apimachinery.pkg.apis." +
      "meta.v1.ListMeta\022<\n\005items\030\002 \003(\0132-.k8s.io" +
      ".apimachinery.pkg.runtime.RawExtension\"r" +
      "\n\023LoadBalancerIngress\022\n\n\002ip\030\001 \001(\t\022\020\n\010hos" +
      "tname\030\002 \001(\t\022\016\n\006ipMode\030\003 \001(\t\022-\n\005ports\030\004 \003" +
      "(\0132\036.k8s.io.api.core.v1.PortStatus\"N\n\022Lo" +
      "adBalancerStatus\0228\n\007ingress\030\001 \003(\0132\'.k8s." +
      "io.api.core.v1.LoadBalancerIngress\"$\n\024Lo" +
      "calObjectReference\022\014\n\004name\030\001 \001(\t\"1\n\021Loca" +
      "lVolumeSource\022\014\n\004path\030\001 \001(\t\022\016\n\006fsType\030\002 " +
      "\001(\t\"M\n\022ModifyVolumeStatus\022\'\n\037targetVolum" +
      "eAttributesClassName\030\001 \001(\t\022\016\n\006status\030\002 \001" +
      "(\t\"A\n\017NFSVolumeSource\022\016\n\006server\030\001 \001(\t\022\014\n" +
      "\004path\030\002 \001(\t\022\020\n\010readOnly\030\003 \001(\010\"\265\001\n\tNamesp" +
      "ace\022B\n\010metadata\030\001 \001(\01320.k8s.io.apimachin" +
      "ery.pkg.apis.meta.v1.ObjectMeta\022/\n\004spec\030" +
      "\002 \001(\0132!.k8s.io.api.core.v1.NamespaceSpec" +
      "\0223\n\006status\030\003 \001(\0132#.k8s.io.api.core.v1.Na" +
      "mespaceStatus\"\233\001\n\022NamespaceCondition\022\014\n\004" +
      "type\030\001 \001(\t\022\016\n\006status\030\002 \001(\t\022F\n\022lastTransi" +
      "tionTime\030\004 \001(\0132*.k8s.io.apimachinery.pkg" +
      ".apis.meta.v1.Time\022\016\n\006reason\030\005 \001(\t\022\017\n\007me" +
      "ssage\030\006 \001(\t\"\177\n\rNamespaceList\022@\n\010metadata" +
      "\030\001 \001(\0132..k8s.io.apimachinery.pkg.apis.me" +
      "ta.v1.ListMeta\022,\n\005items\030\002 \003(\0132\035.k8s.io.a" +
      "pi.core.v1.Namespace\"#\n\rNamespaceSpec\022\022\n" +
      "\nfinalizers\030\001 \003(\t\"\\\n\017NamespaceStatus\022\r\n\005" +
      "phase\030\001 \001(\t\022:\n\nconditions\030\002 \003(\0132&.k8s.io" +
      ".api.core.v1.NamespaceCondition\"\246\001\n\004Node" +
      "\022B\n\010metadata\030\001 \001(\01320.k8s.io.apimachinery" +
      ".pkg.apis.meta.v1.ObjectMeta\022*\n\004spec\030\002 \001" +
      "(\0132\034.k8s.io.api.core.v1.NodeSpec\022.\n\006stat" +
      "us\030\003 \001(\0132\036.k8s.io.api.core.v1.NodeStatus" +
      "\",\n\013NodeAddress\022\014\n\004type\030\001 \001(\t\022\017\n\007address" +
      "\030\002 \001(\t\"\316\001\n\014NodeAffinity\022X\n.requiredDurin" +
      "gSchedulingIgnoredDuringExecution\030\001 \001(\0132" +
      " .k8s.io.api.core.v1.NodeSelector\022d\n/pre" +
      "ferredDuringSchedulingIgnoredDuringExecu" +
      "tion\030\002 \003(\0132+.k8s.io.api.core.v1.Preferre" +
      "dSchedulingTerm\"\335\001\n\rNodeCondition\022\014\n\004typ" +
      "e\030\001 \001(\t\022\016\n\006status\030\002 \001(\t\022E\n\021lastHeartbeat" +
      "Time\030\003 \001(\0132*.k8s.io.apimachinery.pkg.api",
      "s.meta.v1.Time\022F\n\022lastTransitionTime\030\004 \001" +
      "(\0132*.k8s.io.apimachinery.pkg.apis.meta.v" +
      "1.Time\022\016\n\006reason\030\005 \001(\t\022\017\n\007message\030\006 \001(\t\"" +
      "T\n\020NodeConfigSource\022@\n\tconfigMap\030\002 \001(\0132-" +
      ".k8s.io.api.core.v1.ConfigMapNodeConfigS" +
      "ource\"\314\001\n\020NodeConfigStatus\0226\n\010assigned\030\001" +
      " \001(\0132$.k8s.io.api.core.v1.NodeConfigSour" +
      "ce\0224\n\006active\030\002 \001(\0132$.k8s.io.api.core.v1." +
      "NodeConfigSource\022;\n\rlastKnownGood\030\003 \001(\0132" +
      "$.k8s.io.api.core.v1.NodeConfigSource\022\r\n" +
      "\005error\030\004 \001(\t\"R\n\023NodeDaemonEndpoints\022;\n\017k" +
      "ubeletEndpoint\030\001 \001(\0132\".k8s.io.api.core.v" +
      "1.DaemonEndpoint\"u\n\010NodeList\022@\n\010metadata" +
      "\030\001 \001(\0132..k8s.io.apimachinery.pkg.apis.me" +
      "ta.v1.ListMeta\022\'\n\005items\030\002 \003(\0132\030.k8s.io.a" +
      "pi.core.v1.Node\" \n\020NodeProxyOptions\022\014\n\004p" +
      "ath\030\001 \001(\t\"d\n\022NodeRuntimeHandler\022\014\n\004name\030" +
      "\001 \001(\t\022@\n\010features\030\002 \001(\0132..k8s.io.api.cor" +
      "e.v1.NodeRuntimeHandlerFeatures\"=\n\032NodeR" +
      "untimeHandlerFeatures\022\037\n\027recursiveReadOn" +
      "lyMounts\030\001 \001(\010\"O\n\014NodeSelector\022?\n\021nodeSe" +
      "lectorTerms\030\001 \003(\0132$.k8s.io.api.core.v1.N" +
      "odeSelectorTerm\"H\n\027NodeSelectorRequireme" +
      "nt\022\013\n\003key\030\001 \001(\t\022\020\n\010operator\030\002 \001(\t\022\016\n\006val" +
      "ues\030\003 \003(\t\"\233\001\n\020NodeSelectorTerm\022E\n\020matchE" +
      "xpressions\030\001 \003(\0132+.k8s.io.api.core.v1.No" +
      "deSelectorRequirement\022@\n\013matchFields\030\002 \003" +
      "(\0132+.k8s.io.api.core.v1.NodeSelectorRequ" +
      "irement\"\323\001\n\010NodeSpec\022\017\n\007podCIDR\030\001 \001(\t\022\020\n" +
      "\010podCIDRs\030\007 \003(\t\022\022\n\nproviderID\030\003 \001(\t\022\025\n\ru" +
      "nschedulable\030\004 \001(\010\022)\n\006taints\030\005 \003(\0132\031.k8s" +
      ".io.api.core.v1.Taint\022:\n\014configSource\030\006 " +
      "\001(\0132$.k8s.io.api.core.v1.NodeConfigSourc" +
      "e\022\022\n\nexternalID\030\002 \001(\t\"\307\006\n\nNodeStatus\022>\n\010" +
      "capacity\030\001 \003(\0132,.k8s.io.api.core.v1.Node" +
      "Status.CapacityEntry\022D\n\013allocatable\030\002 \003(" +
      "\0132/.k8s.io.api.core.v1.NodeStatus.Alloca" +
      "tableEntry\022\r\n\005phase\030\003 \001(\t\0225\n\nconditions\030" +
      "\004 \003(\0132!.k8s.io.api.core.v1.NodeCondition" +
      "\0222\n\taddresses\030\005 \003(\0132\037.k8s.io.api.core.v1" +
      ".NodeAddress\022@\n\017daemonEndpoints\030\006 \001(\0132\'." +
      "k8s.io.api.core.v1.NodeDaemonEndpoints\0224" +
      "\n\010nodeInfo\030\007 \001(\0132\".k8s.io.api.core.v1.No" +
      "deSystemInfo\0222\n\006images\030\010 \003(\0132\".k8s.io.ap" +
      "i.core.v1.ContainerImage\022\024\n\014volumesInUse" +
      "\030\t \003(\t\022;\n\017volumesAttached\030\n \003(\0132\".k8s.io" +
      ".api.core.v1.AttachedVolume\0224\n\006config\030\013 " +
      "\001(\0132$.k8s.io.api.core.v1.NodeConfigStatu" +
      "s\022?\n\017runtimeHandlers\030\014 \003(\0132&.k8s.io.api." +
      "core.v1.NodeRuntimeHandler\032_\n\rCapacityEn" +
      "try\022\013\n\003key\030\001 \001(\t\022=\n\005value\030\002 \001(\0132..k8s.io" +
      ".apimachinery.pkg.api.resource.Quantity:" +
      "\0028\001\032b\n\020AllocatableEntry\022\013\n\003key\030\001 \001(\t\022=\n\005" +
      "value\030\002 \001(\0132..k8s.io.apimachinery.pkg.ap" +
      "i.resource.Quantity:\0028\001\"\361\001\n\016NodeSystemIn" +
      "fo\022\021\n\tmachineID\030\001 \001(\t\022\022\n\nsystemUUID\030\002 \001(" +
      "\t\022\016\n\006bootID\030\003 \001(\t\022\025\n\rkernelVersion\030\004 \001(\t" +
      "\022\017\n\007osImage\030\005 \001(\t\022\037\n\027containerRuntimeVer" +
      "sion\030\006 \001(\t\022\026\n\016kubeletVersion\030\007 \001(\t\022\030\n\020ku" +
      "beProxyVersion\030\010 \001(\t\022\027\n\017operatingSystem\030" +
      "\t \001(\t\022\024\n\014architecture\030\n \001(\t\"<\n\023ObjectFie" +
      "ldSelector\022\022\n\napiVersion\030\001 \001(\t\022\021\n\tfieldP" +
      "ath\030\002 \001(\t\"\215\001\n\017ObjectReference\022\014\n\004kind\030\001 " +
      "\001(\t\022\021\n\tnamespace\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022\013\n\003" +
      "uid\030\004 \001(\t\022\022\n\napiVersion\030\005 \001(\t\022\027\n\017resourc" +
      "eVersion\030\006 \001(\t\022\021\n\tfieldPath\030\007 \001(\t\"\312\001\n\020Pe" +
      "rsistentVolume\022B\n\010metadata\030\001 \001(\01320.k8s.i" +
      "o.apimachinery.pkg.apis.meta.v1.ObjectMe" +
      "ta\0226\n\004spec\030\002 \001(\0132(.k8s.io.api.core.v1.Pe" +
      "rsistentVolumeSpec\022:\n\006status\030\003 \001(\0132*.k8s" +
      ".io.api.core.v1.PersistentVolumeStatus\"\331" +
      "\001\n\025PersistentVolumeClaim\022B\n\010metadata\030\001 \001" +
      "(\01320.k8s.io.apimachinery.pkg.apis.meta.v" +
      "1.ObjectMeta\022;\n\004spec\030\002 \001(\0132-.k8s.io.api." +
      "core.v1.PersistentVolumeClaimSpec\022?\n\006sta" +
      "tus\030\003 \001(\0132/.k8s.io.api.core.v1.Persisten" +
      "tVolumeClaimStatus\"\352\001\n\036PersistentVolumeC" +
      "laimCondition\022\014\n\004type\030\001 \001(\t\022\016\n\006status\030\002 " +
      "\001(\t\022A\n\rlastProbeTime\030\003 \001(\0132*.k8s.io.apim" +
      "achinery.pkg.apis.meta.v1.Time\022F\n\022lastTr" +
      "ansitionTime\030\004 \001(\0132*.k8s.io.apimachinery" +
      ".pkg.apis.meta.v1.Time\022\016\n\006reason\030\005 \001(\t\022\017" +
      "\n\007message\030\006 \001(\t\"\227\001\n\031PersistentVolumeClai" +
      "mList\022@\n\010metadata\030\001 \001(\0132..k8s.io.apimach" +
      "inery.pkg.apis.meta.v1.ListMeta\0228\n\005items" +
      "\030\002 \003(\0132).k8s.io.api.core.v1.PersistentVo" +
      "lumeClaim\"\243\003\n\031PersistentVolumeClaimSpec\022" +
      "\023\n\013accessModes\030\001 \003(\t\022E\n\010selector\030\004 \001(\01323" +
      ".k8s.io.apimachinery.pkg.apis.meta.v1.La" +
      "belSelector\022A\n\tresources\030\002 \001(\0132..k8s.io." +
      "api.core.v1.VolumeResourceRequirements\022\022" +
      "\n\nvolumeName\030\003 \001(\t\022\030\n\020storageClassName\030\005" +
      " \001(\t\022\022\n\nvolumeMode\030\006 \001(\t\022A\n\ndataSource\030\007" +
      " \001(\0132-.k8s.io.api.core.v1.TypedLocalObje" +
      "ctReference\022?\n\rdataSourceRef\030\010 \001(\0132(.k8s" +
      ".io.api.core.v1.TypedObjectReference\022!\n\031" +
      "volumeAttributesClassName\030\t \001(\t\"\256\006\n\033Pers" +
      "istentVolumeClaimStatus\022\r\n\005phase\030\001 \001(\t\022\023" +
      "\n\013accessModes\030\002 \003(\t\022O\n\010capacity\030\003 \003(\0132=." +
      "k8s.io.api.core.v1.PersistentVolumeClaim" +
      "Status.CapacityEntry\022F\n\nconditions\030\004 \003(\013" +
      "22.k8s.io.api.core.v1.PersistentVolumeCl" +
      "aimCondition\022c\n\022allocatedResources\030\005 \003(\013" +
      "2G.k8s.io.api.core.v1.PersistentVolumeCl" +
      "aimStatus.AllocatedResourcesEntry\022q\n\031all" +
      "ocatedResourceStatuses\030\007 \003(\0132N.k8s.io.ap" +
      "i.core.v1.PersistentVolumeClaimStatus.Al" +
      "locatedResourceStatusesEntry\022(\n currentV" +
      "olumeAttributesClassName\030\010 \001(\t\022B\n\022modify" +
      "VolumeStatus\030\t \001(\0132&.k8s.io.api.core.v1." +
      "ModifyVolumeStatus\032_\n\rCapacityEntry\022\013\n\003k" +
      "ey\030\001 \001(\t\022=\n\005value\030\002 \001(\0132..k8s.io.apimach" +
      "inery.pkg.api.resource.Quantity:\0028\001\032i\n\027A" +
      "llocatedResourcesEntry\022\013\n\003key\030\001 \001(\t\022=\n\005v" +
      "alue\030\002 \001(\0132..k8s.io.apimachinery.pkg.api" +
      ".resource.Quantity:\0028\001\032@\n\036AllocatedResou" +
      "rceStatusesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002" +
      " \001(\t:\0028\001\"\240\001\n\035PersistentVolumeClaimTempla" +
      "te\022B\n\010metadata\030\001 \001(\01320.k8s.io.apimachine" +
      "ry.pkg.apis.meta.v1.ObjectMeta\022;\n\004spec\030\002" +
      " \001(\0132-.k8s.io.api.core.v1.PersistentVolu" +
      "meClaimSpec\"H\n!PersistentVolumeClaimVolu" +
      "meSource\022\021\n\tclaimName\030\001 \001(\t\022\020\n\010readOnly\030" +
      "\002 \001(\010\"\215\001\n\024PersistentVolumeList\022@\n\010metada" +
      "ta\030\001 \001(\0132..k8s.io.apimachinery.pkg.apis." +
      "meta.v1.ListMeta\0223\n\005items\030\002 \003(\0132$.k8s.io" +
      ".api.core.v1.PersistentVolume\"\275\013\n\026Persis" +
      "tentVolumeSource\022L\n\021gcePersistentDisk\030\001 " +
      "\001(\01321.k8s.io.api.core.v1.GCEPersistentDi" +
      "skVolumeSource\022R\n\024awsElasticBlockStore\030\002" +
      " \001(\01324.k8s.io.api.core.v1.AWSElasticBloc" +
      "kStoreVolumeSource\022:\n\010hostPath\030\003 \001(\0132(.k" +
      "8s.io.api.core.v1.HostPathVolumeSource\022F" +
      "\n\tglusterfs\030\004 \001(\01323.k8s.io.api.core.v1.G" +
      "lusterfsPersistentVolumeSource\0220\n\003nfs\030\005 " +
      "\001(\0132#.k8s.io.api.core.v1.NFSVolumeSource" +
      "\022:\n\003rbd\030\006 \001(\0132-.k8s.io.api.core.v1.RBDPe" +
      "rsistentVolumeSource\022>\n\005iscsi\030\007 \001(\0132/.k8" +
      "s.io.api.core.v1.ISCSIPersistentVolumeSo" +
      "urce\022@\n\006cinder\030\010 \001(\01320.k8s.io.api.core.v" +
      "1.CinderPersistentVolumeSource\022@\n\006cephfs" +
      "\030\t \001(\01320.k8s.io.api.core.v1.CephFSPersis" +
      "tentVolumeSource\022.\n\002fc\030\n \001(\0132\".k8s.io.ap" +
      "i.core.v1.FCVolumeSource\0228\n\007flocker\030\013 \001(" +
      "\0132\'.k8s.io.api.core.v1.FlockerVolumeSour" +
      "ce\022B\n\nflexVolume\030\014 \001(\0132..k8s.io.api.core" +
      ".v1.FlexPersistentVolumeSource\022F\n\tazureF" +
      "ile\030\r \001(\01323.k8s.io.api.core.v1.AzureFile" +
      "PersistentVolumeSource\022I\n\rvsphereVolume\030" +
      "\016 \001(\01322.k8s.io.api.core.v1.VsphereVirtua" +
      "lDiskVolumeSource\0228\n\007quobyte\030\017 \001(\0132\'.k8s" +
      ".io.api.core.v1.QuobyteVolumeSource\022<\n\ta" +
      "zureDisk\030\020 \001(\0132).k8s.io.api.core.v1.Azur" +
      "eDiskVolumeSource\022R\n\024photonPersistentDis" +
      "k\030\021 \001(\01324.k8s.io.api.core.v1.PhotonPersi" +
      "stentDiskVolumeSource\022@\n\016portworxVolume\030" +
      "\022 \001(\0132(.k8s.io.api.core.v1.PortworxVolum" +
      "eSource\022B\n\007scaleIO\030\023 \001(\01321.k8s.io.api.co" +
      "re.v1.ScaleIOPersistentVolumeSource\0224\n\005l" +
      "ocal\030\024 \001(\0132%.k8s.io.api.core.v1.LocalVol" +
      "umeSource\022F\n\tstorageos\030\025 \001(\01323.k8s.io.ap" +
      "i.core.v1.StorageOSPersistentVolumeSourc" +
      "e\022:\n\003csi\030\026 \001(\0132-.k8s.io.api.core.v1.CSIP" +
      "ersistentVolumeSource\"\245\004\n\024PersistentVolu" +
      "meSpec\022H\n\010capacity\030\001 \003(\01326.k8s.io.api.co" +
      "re.v1.PersistentVolumeSpec.CapacityEntry" +
      "\022J\n\026persistentVolumeSource\030\002 \001(\0132*.k8s.i" +
      "o.api.core.v1.PersistentVolumeSource\022\023\n\013" +
      "accessModes\030\003 \003(\t\0225\n\010claimRef\030\004 \001(\0132#.k8" +
      "s.io.api.core.v1.ObjectReference\022%\n\035pers" +
      "istentVolumeReclaimPolicy\030\005 \001(\t\022\030\n\020stora" +
      "geClassName\030\006 \001(\t\022\024\n\014mountOptions\030\007 \003(\t\022" +
      "\022\n\nvolumeMode\030\010 \001(\t\022<\n\014nodeAffinity\030\t \001(" +
      "\0132&.k8s.io.api.core.v1.VolumeNodeAffinit" +
      "y\022!\n\031volumeAttributesClassName\030\n \001(\t\032_\n\r" +
      "CapacityEntry\022\013\n\003key\030\001 \001(\t\022=\n\005value\030\002 \001(" +
      "\0132..k8s.io.apimachinery.pkg.api.resource" +
      ".Quantity:\0028\001\"\225\001\n\026PersistentVolumeStatus" +
      "\022\r\n\005phase\030\001 \001(\t\022\017\n\007message\030\002 \001(\t\022\016\n\006reas" +
      "on\030\003 \001(\t\022K\n\027lastPhaseTransitionTime\030\004 \001(" +
      "\0132*.k8s.io.apimachinery.pkg.apis.meta.v1" +
      ".Time\"@\n PhotonPersistentDiskVolumeSourc" +
      "e\022\014\n\004pdID\030\001 \001(\t\022\016\n\006fsType\030\002 \001(\t\"\243\001\n\003Pod\022" +
      "B\n\010metadata\030\001 \001(\01320.k8s.io.apimachinery." +
      "pkg.apis.meta.v1.ObjectMeta\022)\n\004spec\030\002 \001(" +
      "\0132\033.k8s.io.api.core.v1.PodSpec\022-\n\006status" +
      "\030\003 \001(\0132\035.k8s.io.api.core.v1.PodStatus\"\320\001" +
      "\n\013PodAffinity\022[\n.requiredDuringSchedulin" +
      "gIgnoredDuringExecution\030\001 \003(\0132#.k8s.io.a" +
      "pi.core.v1.PodAffinityTerm\022d\n/preferredD" +
      "uringSchedulingIgnoredDuringExecution\030\002 " +
      "\003(\0132+.k8s.io.api.core.v1.WeightedPodAffi" +
      "nityTerm\"\211\002\n\017PodAffinityTerm\022J\n\rlabelSel" +
      "ector\030\001 \001(\01323.k8s.io.apimachinery.pkg.ap" +
      "is.meta.v1.LabelSelector\022\022\n\nnamespaces\030\002" +
      " \003(\t\022\023\n\013topologyKey\030\003 \001(\t\022N\n\021namespaceSe" +
      "lector\030\004 \001(\01323.k8s.io.apimachinery.pkg.a" +
      "pis.meta.v1.LabelSelector\022\026\n\016matchLabelK" +
      "eys\030\005 \003(\t\022\031\n\021mismatchLabelKeys\030\006 \003(\t\"\324\001\n" +
      "\017PodAntiAffinity\022[\n.requiredDuringSchedu" +
      "lingIgnoredDuringExecution\030\001 \003(\0132#.k8s.i" +
      "o.api.core.v1.PodAffinityTerm\022d\n/preferr" +
      "edDuringSchedulingIgnoredDuringExecution" +
      "\030\002 \003(\0132+.k8s.io.api.core.v1.WeightedPodA" +
      "ffinityTerm\"a\n\020PodAttachOptions\022\r\n\005stdin" +
      "\030\001 \001(\010\022\016\n\006stdout\030\002 \001(\010\022\016\n\006stderr\030\003 \001(\010\022\013" +
      "\n\003tty\030\004 \001(\010\022\021\n\tcontainer\030\005 \001(\t\"\330\001\n\014PodCo" +
      "ndition\022\014\n\004type\030\001 \001(\t\022\016\n\006status\030\002 \001(\t\022A\n" +
      "\rlastProbeTime\030\003 \001(\0132*.k8s.io.apimachine" +
      "ry.pkg.apis.meta.v1.Time\022F\n\022lastTransiti" +
      "onTime\030\004 \001(\0132*.k8s.io.apimachinery.pkg.a" +
      "pis.meta.v1.Time\022\016\n\006reason\030\005 \001(\t\022\017\n\007mess" +
      "age\030\006 \001(\t\"n\n\014PodDNSConfig\022\023\n\013nameservers" +
      "\030\001 \003(\t\022\020\n\010searches\030\002 \003(\t\0227\n\007options\030\003 \003(" +
      "\0132&.k8s.io.api.core.v1.PodDNSConfigOptio" +
      "n\"1\n\022PodDNSConfigOption\022\014\n\004name\030\001 \001(\t\022\r\n" +
      "\005value\030\002 \001(\t\"p\n\016PodExecOptions\022\r\n\005stdin\030" +
      "\001 \001(\010\022\016\n\006stdout\030\002 \001(\010\022\016\n\006stderr\030\003 \001(\010\022\013\n" +
      "\003tty\030\004 \001(\010\022\021\n\tcontainer\030\005 \001(\t\022\017\n\007command" +
      "\030\006 \003(\t\"\023\n\005PodIP\022\n\n\002ip\030\001 \001(\t\"s\n\007PodList\022@" +
      "\n\010metadata\030\001 \001(\0132..k8s.io.apimachinery.p" +
      "kg.apis.meta.v1.ListMeta\022&\n\005items\030\002 \003(\0132" +
      "\027.k8s.io.api.core.v1.Pod\"\372\001\n\rPodLogOptio" +
      "ns\022\021\n\tcontainer\030\001 \001(\t\022\016\n\006follow\030\002 \001(\010\022\020\n" +
      "\010previous\030\003 \001(\010\022\024\n\014sinceSeconds\030\004 \001(\003\022=\n" +
      "\tsinceTime\030\005 \001(\0132*.k8s.io.apimachinery.p" +
      "kg.apis.meta.v1.Time\022\022\n\ntimestamps\030\006 \001(\010" +
      "\022\021\n\ttailLines\030\007 \001(\003\022\022\n\nlimitBytes\030\010 \001(\003\022" +
      "$\n\034insecureSkipTLSVerifyBackend\030\t \001(\010\"\025\n" +
      "\005PodOS\022\014\n\004name\030\001 \001(\t\"&\n\025PodPortForwardOp" +
      "tions\022\r\n\005ports\030\001 \003(\005\"\037\n\017PodProxyOptions\022" +
      "\014\n\004path\030\001 \001(\t\")\n\020PodReadinessGate\022\025\n\rcon" +
      "ditionType\030\001 \001(\t\"Q\n\020PodResourceClaim\022\014\n\004" +
      "name\030\001 \001(\t\022/\n\006source\030\002 \001(\0132\037.k8s.io.api." +
      "core.v1.ClaimSource\"A\n\026PodResourceClaimS" +
      "tatus\022\014\n\004name\030\001 \001(\t\022\031\n\021resourceClaimName" +
      "\030\002 \001(\t\"!\n\021PodSchedulingGate\022\014\n\004name\030\001 \001(" +
      "\t\"\311\003\n\022PodSecurityContext\022:\n\016seLinuxOptio" +
      "ns\030\001 \001(\0132\".k8s.io.api.core.v1.SELinuxOpt" +
      "ions\022I\n\016windowsOptions\030\010 \001(\01321.k8s.io.ap" +
      "i.core.v1.WindowsSecurityContextOptions\022" +
      "\021\n\trunAsUser\030\002 \001(\003\022\022\n\nrunAsGroup\030\006 \001(\003\022\024" +
      "\n\014runAsNonRoot\030\003 \001(\010\022\032\n\022supplementalGrou" +
      "ps\030\004 \003(\003\022\017\n\007fsGroup\030\005 \001(\003\022+\n\007sysctls\030\007 \003" +
      "(\0132\032.k8s.io.api.core.v1.Sysctl\022\033\n\023fsGrou" +
      "pChangePolicy\030\t \001(\t\022:\n\016seccompProfile\030\n " +
      "\001(\0132\".k8s.io.api.core.v1.SeccompProfile\022" +
      "<\n\017appArmorProfile\030\013 \001(\0132#.k8s.io.api.co" +
      "re.v1.AppArmorProfile\"[\n\014PodSignature\022K\n" +
      "\rpodController\030\001 \001(\01324.k8s.io.apimachine" +
      "ry.pkg.apis.meta.v1.OwnerReference\"\235\r\n\007P" +
      "odSpec\022+\n\007volumes\030\001 \003(\0132\032.k8s.io.api.cor" +
      "e.v1.Volume\0225\n\016initContainers\030\024 \003(\0132\035.k8" +
      "s.io.api.core.v1.Container\0221\n\ncontainers" +
      "\030\002 \003(\0132\035.k8s.io.api.core.v1.Container\022C\n" +
      "\023ephemeralContainers\030\" \003(\0132&.k8s.io.api." +
      "core.v1.EphemeralContainer\022\025\n\rrestartPol" +
      "icy\030\003 \001(\t\022%\n\035terminationGracePeriodSecon" +
      "ds\030\004 \001(\003\022\035\n\025activeDeadlineSeconds\030\005 \001(\003\022" +
      "\021\n\tdnsPolicy\030\006 \001(\t\022C\n\014nodeSelector\030\007 \003(\013" +
      "2-.k8s.io.api.core.v1.PodSpec.NodeSelect" +
      "orEntry\022\032\n\022serviceAccountName\030\010 \001(\t\022\026\n\016s" +
      "erviceAccount\030\t \001(\t\022$\n\034automountServiceA" +
      "ccountToken\030\025 \001(\010\022\020\n\010nodeName\030\n \001(\t\022\023\n\013h" +
      "ostNetwork\030\013 \001(\010\022\017\n\007hostPID\030\014 \001(\010\022\017\n\007hos" +
      "tIPC\030\r \001(\010\022\035\n\025shareProcessNamespace\030\033 \001(" +
      "\010\022?\n\017securityContext\030\016 \001(\0132&.k8s.io.api." +
      "core.v1.PodSecurityContext\022B\n\020imagePullS" +
      "ecrets\030\017 \003(\0132(.k8s.io.api.core.v1.LocalO" +
      "bjectReference\022\020\n\010hostname\030\020 \001(\t\022\021\n\tsubd" +
      "omain\030\021 \001(\t\022.\n\010affinity\030\022 \001(\0132\034.k8s.io.a" +
      "pi.core.v1.Affinity\022\025\n\rschedulerName\030\023 \001" +
      "(\t\0223\n\013tolerations\030\026 \003(\0132\036.k8s.io.api.cor" +
      "e.v1.Toleration\0222\n\013hostAliases\030\027 \003(\0132\035.k" +
      "8s.io.api.core.v1.HostAlias\022\031\n\021priorityC" +
      "lassName\030\030 \001(\t\022\020\n\010priority\030\031 \001(\005\0223\n\tdnsC" +
      "onfig\030\032 \001(\0132 .k8s.io.api.core.v1.PodDNSC" +
      "onfig\022<\n\016readinessGates\030\034 \003(\0132$.k8s.io.a" +
      "pi.core.v1.PodReadinessGate\022\030\n\020runtimeCl" +
      "assName\030\035 \001(\t\022\032\n\022enableServiceLinks\030\036 \001(" +
      "\010\022\030\n\020preemptionPolicy\030\037 \001(\t\022;\n\010overhead\030" +
      "  \003(\0132).k8s.io.api.core.v1.PodSpec.Overh" +
      "eadEntry\022O\n\031topologySpreadConstraints\030! " +
      "\003(\0132,.k8s.io.api.core.v1.TopologySpreadC" +
      "onstraint\022\031\n\021setHostnameAsFQDN\030# \001(\010\022%\n\002" +
      "os\030$ \001(\0132\031.k8s.io.api.core.v1.PodOS\022\021\n\th" +
      "ostUsers\030% \001(\010\022>\n\017schedulingGates\030& \003(\0132" +
      "%.k8s.io.api.core.v1.PodSchedulingGate\022<" +
      "\n\016resourceClaims\030\' \003(\0132$.k8s.io.api.core" +
      ".v1.PodResourceClaim\0323\n\021NodeSelectorEntr" +
      "y\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\032_\n\rOve" +
      "rheadEntry\022\013\n\003key\030\001 \001(\t\022=\n\005value\030\002 \001(\0132." +
      ".k8s.io.apimachinery.pkg.api.resource.Qu" +
      "antity:\0028\001\"\374\004\n\tPodStatus\022\r\n\005phase\030\001 \001(\t\022" +
      "4\n\nconditions\030\002 \003(\0132 .k8s.io.api.core.v1" +
      ".PodCondition\022\017\n\007message\030\003 \001(\t\022\016\n\006reason" +
      "\030\004 \001(\t\022\031\n\021nominatedNodeName\030\013 \001(\t\022\016\n\006hos" +
      "tIP\030\005 \001(\t\022+\n\007hostIPs\030\020 \003(\0132\032.k8s.io.api." +
      "core.v1.HostIP\022\r\n\005podIP\030\006 \001(\t\022)\n\006podIPs\030" +
      "\014 \003(\0132\031.k8s.io.api.core.v1.PodIP\022=\n\tstar" +
      "tTime\030\007 \001(\0132*.k8s.io.apimachinery.pkg.ap" +
      "is.meta.v1.Time\022B\n\025initContainerStatuses" +
      "\030\n \003(\0132#.k8s.io.api.core.v1.ContainerSta" +
      "tus\022>\n\021containerStatuses\030\010 \003(\0132#.k8s.io." +
      "api.core.v1.ContainerStatus\022\020\n\010qosClass\030" +
      "\t \001(\t\022G\n\032ephemeralContainerStatuses\030\r \003(" +
      "\0132#.k8s.io.api.core.v1.ContainerStatus\022\016" +
      "\n\006resize\030\016 \001(\t\022I\n\025resourceClaimStatuses\030" +
      "\017 \003(\0132*.k8s.io.api.core.v1.PodResourceCl" +
      "aimStatus\"\204\001\n\017PodStatusResult\022B\n\010metadat" +
      "a\030\001 \001(\01320.k8s.io.apimachinery.pkg.apis.m" +
      "eta.v1.ObjectMeta\022-\n\006status\030\002 \001(\0132\035.k8s." +
      "io.api.core.v1.PodStatus\"\210\001\n\013PodTemplate" +
      "\022B\n\010metadata\030\001 \001(\01320.k8s.io.apimachinery" +
      ".pkg.apis.meta.v1.ObjectMeta\0225\n\010template" +
      "\030\002 \001(\0132#.k8s.io.api.core.v1.PodTemplateS" +
      "pec\"\203\001\n\017PodTemplateList\022@\n\010metadata\030\001 \001(" +
      "\0132..k8s.io.apimachinery.pkg.apis.meta.v1" +
      ".ListMeta\022.\n\005items\030\002 \003(\0132\037.k8s.io.api.co" +
      "re.v1.PodTemplate\"\200\001\n\017PodTemplateSpec\022B\n" +
      "\010metadata\030\001 \001(\01320.k8s.io.apimachinery.pk" +
      "g.apis.meta.v1.ObjectMeta\022)\n\004spec\030\002 \001(\0132" +
      "\033.k8s.io.api.core.v1.PodSpec\";\n\nPortStat" +
      "us\022\014\n\004port\030\001 \001(\005\022\020\n\010protocol\030\002 \001(\t\022\r\n\005er" +
      "ror\030\003 \001(\t\"J\n\024PortworxVolumeSource\022\020\n\010vol" +
      "umeID\030\001 \001(\t\022\016\n\006fsType\030\002 \001(\t\022\020\n\010readOnly\030" +
      "\003 \001(\010\"\034\n\rPreconditions\022\013\n\003uid\030\001 \001(\t\"\261\001\n\024" +
      "PreferAvoidPodsEntry\0226\n\014podSignature\030\001 \001" +
      "(\0132 .k8s.io.api.core.v1.PodSignature\022@\n\014" +
      "evictionTime\030\002 \001(\0132*.k8s.io.apimachinery" +
      ".pkg.apis.meta.v1.Time\022\016\n\006reason\030\003 \001(\t\022\017" +
      "\n\007message\030\004 \001(\t\"c\n\027PreferredSchedulingTe" +
      "rm\022\016\n\006weight\030\001 \001(\005\0228\n\npreference\030\002 \001(\0132$" +
      ".k8s.io.api.core.v1.NodeSelectorTerm\"\341\001\n" +
      "\005Probe\0221\n\007handler\030\001 \001(\0132 .k8s.io.api.cor" +
      "e.v1.ProbeHandler\022\033\n\023initialDelaySeconds" +
      "\030\002 \001(\005\022\026\n\016timeoutSeconds\030\003 \001(\005\022\025\n\rperiod" +
      "Seconds\030\004 \001(\005\022\030\n\020successThreshold\030\005 \001(\005\022" +
      "\030\n\020failureThreshold\030\006 \001(\005\022%\n\035termination" +
      "GracePeriodSeconds\030\007 \001(\003\"\326\001\n\014ProbeHandle" +
      "r\022,\n\004exec\030\001 \001(\0132\036.k8s.io.api.core.v1.Exe" +
      "cAction\0222\n\007httpGet\030\002 \001(\0132!.k8s.io.api.co" +
      "re.v1.HTTPGetAction\0226\n\ttcpSocket\030\003 \001(\0132#" +
      ".k8s.io.api.core.v1.TCPSocketAction\022,\n\004g" +
      "rpc\030\004 \001(\0132\036.k8s.io.api.core.v1.GRPCActio" +
      "n\"c\n\025ProjectedVolumeSource\0225\n\007sources\030\001 " +
      "\003(\0132$.k8s.io.api.core.v1.VolumeProjectio" +
      "n\022\023\n\013defaultMode\030\002 \001(\005\"v\n\023QuobyteVolumeS" +
      "ource\022\020\n\010registry\030\001 \001(\t\022\016\n\006volume\030\002 \001(\t\022" +
      "\020\n\010readOnly\030\003 \001(\010\022\014\n\004user\030\004 \001(\t\022\r\n\005group" +
      "\030\005 \001(\t\022\016\n\006tenant\030\006 \001(\t\"\303\001\n\031RBDPersistent" +
      "VolumeSource\022\020\n\010monitors\030\001 \003(\t\022\r\n\005image\030" +
      "\002 \001(\t\022\016\n\006fsType\030\003 \001(\t\022\014\n\004pool\030\004 \001(\t\022\014\n\004u" +
      "ser\030\005 \001(\t\022\017\n\007keyring\030\006 \001(\t\0226\n\tsecretRef\030" +
      "\007 \001(\0132#.k8s.io.api.core.v1.SecretReferen" +
      "ce\022\020\n\010readOnly\030\010 \001(\010\"\276\001\n\017RBDVolumeSource" +
      "\022\020\n\010monitors\030\001 \003(\t\022\r\n\005image\030\002 \001(\t\022\016\n\006fsT" +
      "ype\030\003 \001(\t\022\014\n\004pool\030\004 \001(\t\022\014\n\004user\030\005 \001(\t\022\017\n" +
      "\007keyring\030\006 \001(\t\022;\n\tsecretRef\030\007 \001(\0132(.k8s." +
      "io.api.core.v1.LocalObjectReference\022\020\n\010r" +
      "eadOnly\030\010 \001(\010\"r\n\017RangeAllocation\022B\n\010meta" +
      "data\030\001 \001(\01320.k8s.io.apimachinery.pkg.api" +
      "s.meta.v1.ObjectMeta\022\r\n\005range\030\002 \001(\t\022\014\n\004d" +
      "ata\030\003 \001(\014\"\331\001\n\025ReplicationController\022B\n\010m" +
      "etadata\030\001 \001(\01320.k8s.io.apimachinery.pkg." +
      "apis.meta.v1.ObjectMeta\022;\n\004spec\030\002 \001(\0132-." +
      "k8s.io.api.core.v1.ReplicationController" +
      "Spec\022?\n\006status\030\003 \001(\0132/.k8s.io.api.core.v" +
      "1.ReplicationControllerStatus\"\247\001\n\036Replic" +
      "ationControllerCondition\022\014\n\004type\030\001 \001(\t\022\016" +
      "\n\006status\030\002 \001(\t\022F\n\022lastTransitionTime\030\003 \001" +
      "(\0132*.k8s.io.apimachinery.pkg.apis.meta.v" +
      "1.Time\022\016\n\006reason\030\004 \001(\t\022\017\n\007message\030\005 \001(\t\"" +
      "\227\001\n\031ReplicationControllerList\022@\n\010metadat" +
      "a\030\001 \001(\0132..k8s.io.apimachinery.pkg.apis.m" +
      "eta.v1.ListMeta\0228\n\005items\030\002 \003(\0132).k8s.io." +
      "api.core.v1.ReplicationController\"\375\001\n\031Re" +
      "plicationControllerSpec\022\020\n\010replicas\030\001 \001(" +
      "\005\022\027\n\017minReadySeconds\030\004 \001(\005\022M\n\010selector\030\002" +
      " \003(\0132;.k8s.io.api.core.v1.ReplicationCon" +
      "trollerSpec.SelectorEntry\0225\n\010template\030\003 " +
      "\001(\0132#.k8s.io.api.core.v1.PodTemplateSpec" +
      "\032/\n\rSelectorEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030" +
      "\002 \001(\t:\0028\001\"\343\001\n\033ReplicationControllerStatu" +
      "s\022\020\n\010replicas\030\001 \001(\005\022\034\n\024fullyLabeledRepli" +
      "cas\030\002 \001(\005\022\025\n\rreadyReplicas\030\004 \001(\005\022\031\n\021avai" +
      "lableReplicas\030\005 \001(\005\022\032\n\022observedGeneratio" +
      "n\030\003 \001(\003\022F\n\nconditions\030\006 \003(\01322.k8s.io.api" +
      ".core.v1.ReplicationControllerCondition\"" +
      "\035\n\rResourceClaim\022\014\n\004name\030\001 \001(\t\"\201\001\n\025Resou" +
      "rceFieldSelector\022\025\n\rcontainerName\030\001 \001(\t\022" +
      "\020\n\010resource\030\002 \001(\t\022?\n\007divisor\030\003 \001(\0132..k8s" +
      ".io.apimachinery.pkg.api.resource.Quanti" +
      "ty\"\301\001\n\rResourceQuota\022B\n\010metadata\030\001 \001(\01320" +
      ".k8s.io.apimachinery.pkg.apis.meta.v1.Ob" +
      "jectMeta\0223\n\004spec\030\002 \001(\0132%.k8s.io.api.core" +
      ".v1.ResourceQuotaSpec\0227\n\006status\030\003 \001(\0132\'." +
      "k8s.io.api.core.v1.ResourceQuotaStatus\"\207" +
      "\001\n\021ResourceQuotaList\022@\n\010metadata\030\001 \001(\0132." +
      ".k8s.io.apimachinery.pkg.apis.meta.v1.Li",
      "stMeta\0220\n\005items\030\002 \003(\0132!.k8s.io.api.core." +
      "v1.ResourceQuota\"\371\001\n\021ResourceQuotaSpec\022=" +
      "\n\004hard\030\001 \003(\0132/.k8s.io.api.core.v1.Resour" +
      "ceQuotaSpec.HardEntry\022\016\n\006scopes\030\002 \003(\t\0228\n" +
      "\rscopeSelector\030\003 \001(\0132!.k8s.io.api.core.v" +
      "1.ScopeSelector\032[\n\tHardEntry\022\013\n\003key\030\001 \001(" +
      "\t\022=\n\005value\030\002 \001(\0132..k8s.io.apimachinery.p" +
      "kg.api.resource.Quantity:\0028\001\"\321\002\n\023Resourc" +
      "eQuotaStatus\022?\n\004hard\030\001 \003(\01321.k8s.io.api." +
      "core.v1.ResourceQuotaStatus.HardEntry\022?\n" +
      "\004used\030\002 \003(\01321.k8s.io.api.core.v1.Resourc" +
      "eQuotaStatus.UsedEntry\032[\n\tHardEntry\022\013\n\003k" +
      "ey\030\001 \001(\t\022=\n\005value\030\002 \001(\0132..k8s.io.apimach" +
      "inery.pkg.api.resource.Quantity:\0028\001\032[\n\tU" +
      "sedEntry\022\013\n\003key\030\001 \001(\t\022=\n\005value\030\002 \001(\0132..k" +
      "8s.io.apimachinery.pkg.api.resource.Quan" +
      "tity:\0028\001\"\231\003\n\024ResourceRequirements\022D\n\006lim" +
      "its\030\001 \003(\01324.k8s.io.api.core.v1.ResourceR" +
      "equirements.LimitsEntry\022H\n\010requests\030\002 \003(" +
      "\01326.k8s.io.api.core.v1.ResourceRequireme" +
      "nts.RequestsEntry\0221\n\006claims\030\003 \003(\0132!.k8s." +
      "io.api.core.v1.ResourceClaim\032]\n\013LimitsEn" +
      "try\022\013\n\003key\030\001 \001(\t\022=\n\005value\030\002 \001(\0132..k8s.io" +
      ".apimachinery.pkg.api.resource.Quantity:" +
      "\0028\001\032_\n\rRequestsEntry\022\013\n\003key\030\001 \001(\t\022=\n\005val" +
      "ue\030\002 \001(\0132..k8s.io.apimachinery.pkg.api.r" +
      "esource.Quantity:\0028\001\"I\n\016SELinuxOptions\022\014" +
      "\n\004user\030\001 \001(\t\022\014\n\004role\030\002 \001(\t\022\014\n\004type\030\003 \001(\t" +
      "\022\r\n\005level\030\004 \001(\t\"\206\002\n\035ScaleIOPersistentVol" +
      "umeSource\022\017\n\007gateway\030\001 \001(\t\022\016\n\006system\030\002 \001" +
      "(\t\0226\n\tsecretRef\030\003 \001(\0132#.k8s.io.api.core." +
      "v1.SecretReference\022\022\n\nsslEnabled\030\004 \001(\010\022\030" +
      "\n\020protectionDomain\030\005 \001(\t\022\023\n\013storagePool\030" +
      "\006 \001(\t\022\023\n\013storageMode\030\007 \001(\t\022\022\n\nvolumeName" +
      "\030\010 \001(\t\022\016\n\006fsType\030\t \001(\t\022\020\n\010readOnly\030\n \001(\010" +
      "\"\201\002\n\023ScaleIOVolumeSource\022\017\n\007gateway\030\001 \001(" +
      "\t\022\016\n\006system\030\002 \001(\t\022;\n\tsecretRef\030\003 \001(\0132(.k" +
      "8s.io.api.core.v1.LocalObjectReference\022\022" +
      "\n\nsslEnabled\030\004 \001(\010\022\030\n\020protectionDomain\030\005" +
      " \001(\t\022\023\n\013storagePool\030\006 \001(\t\022\023\n\013storageMode" +
      "\030\007 \001(\t\022\022\n\nvolumeName\030\010 \001(\t\022\016\n\006fsType\030\t \001" +
      "(\t\022\020\n\010readOnly\030\n \001(\010\"`\n\rScopeSelector\022O\n" +
      "\020matchExpressions\030\001 \003(\01325.k8s.io.api.cor" +
      "e.v1.ScopedResourceSelectorRequirement\"X" +
      "\n!ScopedResourceSelectorRequirement\022\021\n\ts" +
      "copeName\030\001 \001(\t\022\020\n\010operator\030\002 \001(\t\022\016\n\006valu" +
      "es\030\003 \003(\t\"8\n\016SeccompProfile\022\014\n\004type\030\001 \001(\t" +
      "\022\030\n\020localhostProfile\030\002 \001(\t\"\301\002\n\006Secret\022B\n" +
      "\010metadata\030\001 \001(\01320.k8s.io.apimachinery.pk" +
      "g.apis.meta.v1.ObjectMeta\022\021\n\timmutable\030\005" +
      " \001(\010\0222\n\004data\030\002 \003(\0132$.k8s.io.api.core.v1." +
      "Secret.DataEntry\022>\n\nstringData\030\004 \003(\0132*.k" +
      "8s.io.api.core.v1.Secret.StringDataEntry" +
      "\022\014\n\004type\030\003 \001(\t\032+\n\tDataEntry\022\013\n\003key\030\001 \001(\t" +
      "\022\r\n\005value\030\002 \001(\014:\0028\001\0321\n\017StringDataEntry\022\013" +
      "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"k\n\017Secret" +
      "EnvSource\022F\n\024localObjectReference\030\001 \001(\0132" +
      "(.k8s.io.api.core.v1.LocalObjectReferenc" +
      "e\022\020\n\010optional\030\002 \001(\010\"z\n\021SecretKeySelector" +
      "\022F\n\024localObjectReference\030\001 \001(\0132(.k8s.io." +
      "api.core.v1.LocalObjectReference\022\013\n\003key\030" +
      "\002 \001(\t\022\020\n\010optional\030\003 \001(\010\"y\n\nSecretList\022@\n" +
      "\010metadata\030\001 \001(\0132..k8s.io.apimachinery.pk" +
      "g.apis.meta.v1.ListMeta\022)\n\005items\030\002 \003(\0132\032" +
      ".k8s.io.api.core.v1.Secret\"\232\001\n\020SecretPro" +
      "jection\022F\n\024localObjectReference\030\001 \001(\0132(." +
      "k8s.io.api.core.v1.LocalObjectReference\022" +
      ",\n\005items\030\002 \003(\0132\035.k8s.io.api.core.v1.KeyT" +
      "oPath\022\020\n\010optional\030\004 \001(\010\"2\n\017SecretReferen" +
      "ce\022\014\n\004name\030\001 \001(\t\022\021\n\tnamespace\030\002 \001(\t\"}\n\022S" +
      "ecretVolumeSource\022\022\n\nsecretName\030\001 \001(\t\022,\n" +
      "\005items\030\002 \003(\0132\035.k8s.io.api.core.v1.KeyToP" +
      "ath\022\023\n\013defaultMode\030\003 \001(\005\022\020\n\010optional\030\004 \001" +
      "(\010\"\360\003\n\017SecurityContext\0226\n\014capabilities\030\001" +
      " \001(\0132 .k8s.io.api.core.v1.Capabilities\022\022" +
      "\n\nprivileged\030\002 \001(\010\022:\n\016seLinuxOptions\030\003 \001" +
      "(\0132\".k8s.io.api.core.v1.SELinuxOptions\022I" +
      "\n\016windowsOptions\030\n \001(\01321.k8s.io.api.core" +
      ".v1.WindowsSecurityContextOptions\022\021\n\trun" +
      "AsUser\030\004 \001(\003\022\022\n\nrunAsGroup\030\010 \001(\003\022\024\n\014runA" +
      "sNonRoot\030\005 \001(\010\022\036\n\026readOnlyRootFilesystem" +
      "\030\006 \001(\010\022 \n\030allowPrivilegeEscalation\030\007 \001(\010" +
      "\022\021\n\tprocMount\030\t \001(\t\022:\n\016seccompProfile\030\013 " +
      "\001(\0132\".k8s.io.api.core.v1.SeccompProfile\022" +
      "<\n\017appArmorProfile\030\014 \001(\0132#.k8s.io.api.co" +
      "re.v1.AppArmorProfile\"M\n\023SerializedRefer" +
      "ence\0226\n\treference\030\001 \001(\0132#.k8s.io.api.cor" +
      "e.v1.ObjectReference\"\257\001\n\007Service\022B\n\010meta" +
      "data\030\001 \001(\01320.k8s.io.apimachinery.pkg.api" +
      "s.meta.v1.ObjectMeta\022-\n\004spec\030\002 \001(\0132\037.k8s" +
      ".io.api.core.v1.ServiceSpec\0221\n\006status\030\003 " +
      "\001(\0132!.k8s.io.api.core.v1.ServiceStatus\"\364" +
      "\001\n\016ServiceAccount\022B\n\010metadata\030\001 \001(\01320.k8" +
      "s.io.apimachinery.pkg.apis.meta.v1.Objec" +
      "tMeta\0224\n\007secrets\030\002 \003(\0132#.k8s.io.api.core" +
      ".v1.ObjectReference\022B\n\020imagePullSecrets\030" +
      "\003 \003(\0132(.k8s.io.api.core.v1.LocalObjectRe" +
      "ference\022$\n\034automountServiceAccountToken\030" +
      "\004 \001(\010\"\211\001\n\022ServiceAccountList\022@\n\010metadata" +
      "\030\001 \001(\0132..k8s.io.apimachinery.pkg.apis.me" +
      "ta.v1.ListMeta\0221\n\005items\030\002 \003(\0132\".k8s.io.a" +
      "pi.core.v1.ServiceAccount\"Z\n\035ServiceAcco" +
      "untTokenProjection\022\020\n\010audience\030\001 \001(\t\022\031\n\021" +
      "expirationSeconds\030\002 \001(\003\022\014\n\004path\030\003 \001(\t\"{\n" +
      "\013ServiceList\022@\n\010metadata\030\001 \001(\0132..k8s.io." +
      "apimachinery.pkg.apis.meta.v1.ListMeta\022*" +
      "\n\005items\030\002 \003(\0132\033.k8s.io.api.core.v1.Servi" +
      "ce\"\250\001\n\013ServicePort\022\014\n\004name\030\001 \001(\t\022\020\n\010prot" +
      "ocol\030\002 \001(\t\022\023\n\013appProtocol\030\006 \001(\t\022\014\n\004port\030" +
      "\003 \001(\005\022D\n\ntargetPort\030\004 \001(\01320.k8s.io.apima" +
      "chinery.pkg.util.intstr.IntOrString\022\020\n\010n" +
      "odePort\030\005 \001(\005\"#\n\023ServiceProxyOptions\022\014\n\004" +
      "path\030\001 \001(\t\"\264\005\n\013ServiceSpec\022.\n\005ports\030\001 \003(" +
      "\0132\037.k8s.io.api.core.v1.ServicePort\022?\n\010se" +
      "lector\030\002 \003(\0132-.k8s.io.api.core.v1.Servic" +
      "eSpec.SelectorEntry\022\021\n\tclusterIP\030\003 \001(\t\022\022" +
      "\n\nclusterIPs\030\022 \003(\t\022\014\n\004type\030\004 \001(\t\022\023\n\013exte" +
      "rnalIPs\030\005 \003(\t\022\027\n\017sessionAffinity\030\007 \001(\t\022\026" +
      "\n\016loadBalancerIP\030\010 \001(\t\022 \n\030loadBalancerSo" +
      "urceRanges\030\t \003(\t\022\024\n\014externalName\030\n \001(\t\022\035" +
      "\n\025externalTrafficPolicy\030\013 \001(\t\022\033\n\023healthC" +
      "heckNodePort\030\014 \001(\005\022 \n\030publishNotReadyAdd" +
      "resses\030\r \001(\010\022H\n\025sessionAffinityConfig\030\016 " +
      "\001(\0132).k8s.io.api.core.v1.SessionAffinity" +
      "Config\022\022\n\nipFamilies\030\023 \003(\t\022\026\n\016ipFamilyPo" +
      "licy\030\021 \001(\t\022%\n\035allocateLoadBalancerNodePo" +
      "rts\030\024 \001(\010\022\031\n\021loadBalancerClass\030\025 \001(\t\022\035\n\025" +
      "internalTrafficPolicy\030\026 \001(\t\022\033\n\023trafficDi" +
      "stribution\030\027 \001(\t\032/\n\rSelectorEntry\022\013\n\003key" +
      "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\222\001\n\rServiceSta" +
      "tus\022<\n\014loadBalancer\030\001 \001(\0132&.k8s.io.api.c" +
      "ore.v1.LoadBalancerStatus\022C\n\nconditions\030" +
      "\002 \003(\0132/.k8s.io.apimachinery.pkg.apis.met" +
      "a.v1.Condition\"M\n\025SessionAffinityConfig\022" +
      "4\n\010clientIP\030\001 \001(\0132\".k8s.io.api.core.v1.C" +
      "lientIPConfig\"\036\n\013SleepAction\022\017\n\007seconds\030" +
      "\001 \001(\003\"\250\001\n\037StorageOSPersistentVolumeSourc" +
      "e\022\022\n\nvolumeName\030\001 \001(\t\022\027\n\017volumeNamespace" +
      "\030\002 \001(\t\022\016\n\006fsType\030\003 \001(\t\022\020\n\010readOnly\030\004 \001(\010" +
      "\0226\n\tsecretRef\030\005 \001(\0132#.k8s.io.api.core.v1" +
      ".ObjectReference\"\243\001\n\025StorageOSVolumeSour" +
      "ce\022\022\n\nvolumeName\030\001 \001(\t\022\027\n\017volumeNamespac" +
      "e\030\002 \001(\t\022\016\n\006fsType\030\003 \001(\t\022\020\n\010readOnly\030\004 \001(" +
      "\010\022;\n\tsecretRef\030\005 \001(\0132(.k8s.io.api.core.v" +
      "1.LocalObjectReference\"%\n\006Sysctl\022\014\n\004name" +
      "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"_\n\017TCPSocketAction" +
      "\022>\n\004port\030\001 \001(\01320.k8s.io.apimachinery.pkg" +
      ".util.intstr.IntOrString\022\014\n\004host\030\002 \001(\t\"r" +
      "\n\005Taint\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\022\016\n\006e" +
      "ffect\030\003 \001(\t\022=\n\ttimeAdded\030\004 \001(\0132*.k8s.io." +
      "apimachinery.pkg.apis.meta.v1.Time\"e\n\nTo" +
      "leration\022\013\n\003key\030\001 \001(\t\022\020\n\010operator\030\002 \001(\t\022" +
      "\r\n\005value\030\003 \001(\t\022\016\n\006effect\030\004 \001(\t\022\031\n\021tolera" +
      "tionSeconds\030\005 \001(\003\"?\n TopologySelectorLab" +
      "elRequirement\022\013\n\003key\030\001 \001(\t\022\016\n\006values\030\002 \003" +
      "(\t\"k\n\024TopologySelectorTerm\022S\n\025matchLabel" +
      "Expressions\030\001 \003(\01324.k8s.io.api.core.v1.T" +
      "opologySelectorLabelRequirement\"\211\002\n\030Topo" +
      "logySpreadConstraint\022\017\n\007maxSkew\030\001 \001(\005\022\023\n" +
      "\013topologyKey\030\002 \001(\t\022\031\n\021whenUnsatisfiable\030" +
      "\003 \001(\t\022J\n\rlabelSelector\030\004 \001(\01323.k8s.io.ap" +
      "imachinery.pkg.apis.meta.v1.LabelSelecto" +
      "r\022\022\n\nminDomains\030\005 \001(\005\022\032\n\022nodeAffinityPol" +
      "icy\030\006 \001(\t\022\030\n\020nodeTaintsPolicy\030\007 \001(\t\022\026\n\016m" +
      "atchLabelKeys\030\010 \003(\t\"I\n\031TypedLocalObjectR" +
      "eference\022\020\n\010apiGroup\030\001 \001(\t\022\014\n\004kind\030\002 \001(\t" +
      "\022\014\n\004name\030\003 \001(\t\"W\n\024TypedObjectReference\022\020" +
      "\n\010apiGroup\030\001 \001(\t\022\014\n\004kind\030\002 \001(\t\022\014\n\004name\030\003" +
      " \001(\t\022\021\n\tnamespace\030\004 \001(\t\"N\n\006Volume\022\014\n\004nam" +
      "e\030\001 \001(\t\0226\n\014volumeSource\030\002 \001(\0132 .k8s.io.a" +
      "pi.core.v1.VolumeSource\"0\n\014VolumeDevice\022" +
      "\014\n\004name\030\001 \001(\t\022\022\n\ndevicePath\030\002 \001(\t\"\233\001\n\013Vo" +
      "lumeMount\022\014\n\004name\030\001 \001(\t\022\020\n\010readOnly\030\002 \001(" +
      "\010\022\031\n\021recursiveReadOnly\030\007 \001(\t\022\021\n\tmountPat" +
      "h\030\003 \001(\t\022\017\n\007subPath\030\004 \001(\t\022\030\n\020mountPropaga" +
      "tion\030\005 \001(\t\022\023\n\013subPathExpr\030\006 \001(\t\"a\n\021Volum" +
      "eMountStatus\022\014\n\004name\030\001 \001(\t\022\021\n\tmountPath\030" +
      "\002 \001(\t\022\020\n\010readOnly\030\003 \001(\010\022\031\n\021recursiveRead" +
      "Only\030\004 \001(\t\"H\n\022VolumeNodeAffinity\0222\n\010requ" +
      "ired\030\001 \001(\0132 .k8s.io.api.core.v1.NodeSele" +
      "ctor\"\342\002\n\020VolumeProjection\0224\n\006secret\030\001 \001(" +
      "\0132$.k8s.io.api.core.v1.SecretProjection\022" +
      ">\n\013downwardAPI\030\002 \001(\0132).k8s.io.api.core.v" +
      "1.DownwardAPIProjection\022:\n\tconfigMap\030\003 \001" +
      "(\0132\'.k8s.io.api.core.v1.ConfigMapProject" +
      "ion\022N\n\023serviceAccountToken\030\004 \001(\01321.k8s.i" +
      "o.api.core.v1.ServiceAccountTokenProject" +
      "ion\022L\n\022clusterTrustBundle\030\005 \001(\01320.k8s.io" +
      ".api.core.v1.ClusterTrustBundleProjectio" +
      "n\"\370\002\n\032VolumeResourceRequirements\022J\n\006limi" +
      "ts\030\001 \003(\0132:.k8s.io.api.core.v1.VolumeReso" +
      "urceRequirements.LimitsEntry\022N\n\010requests" +
      "\030\002 \003(\0132<.k8s.io.api.core.v1.VolumeResour" +
      "ceRequirements.RequestsEntry\032]\n\013LimitsEn" +
      "try\022\013\n\003key\030\001 \001(\t\022=\n\005value\030\002 \001(\0132..k8s.io" +
      ".apimachinery.pkg.api.resource.Quantity:" +
      "\0028\001\032_\n\rRequestsEntry\022\013\n\003key\030\001 \001(\t\022=\n\005val" +
      "ue\030\002 \001(\0132..k8s.io.apimachinery.pkg.api.r" +
      "esource.Quantity:\0028\001\"\231\016\n\014VolumeSource\022:\n" +
      "\010hostPath\030\001 \001(\0132(.k8s.io.api.core.v1.Hos" +
      "tPathVolumeSource\022:\n\010emptyDir\030\002 \001(\0132(.k8" +
      "s.io.api.core.v1.EmptyDirVolumeSource\022L\n" +
      "\021gcePersistentDisk\030\003 \001(\01321.k8s.io.api.co" +
      "re.v1.GCEPersistentDiskVolumeSource\022R\n\024a" +
      "wsElasticBlockStore\030\004 \001(\01324.k8s.io.api.c" +
      "ore.v1.AWSElasticBlockStoreVolumeSource\022" +
      "8\n\007gitRepo\030\005 \001(\0132\'.k8s.io.api.core.v1.Gi" +
      "tRepoVolumeSource\0226\n\006secret\030\006 \001(\0132&.k8s." +
      "io.api.core.v1.SecretVolumeSource\0220\n\003nfs" +
      "\030\007 \001(\0132#.k8s.io.api.core.v1.NFSVolumeSou" +
      "rce\0224\n\005iscsi\030\010 \001(\0132%.k8s.io.api.core.v1." +
      "ISCSIVolumeSource\022<\n\tglusterfs\030\t \001(\0132).k" +
      "8s.io.api.core.v1.GlusterfsVolumeSource\022" +
      "T\n\025persistentVolumeClaim\030\n \001(\01325.k8s.io." +
      "api.core.v1.PersistentVolumeClaimVolumeS" +
      "ource\0220\n\003rbd\030\013 \001(\0132#.k8s.io.api.core.v1." +
      "RBDVolumeSource\0228\n\nflexVolume\030\014 \001(\0132$.k8" +
      "s.io.api.core.v1.FlexVolumeSource\0226\n\006cin" +
      "der\030\r \001(\0132&.k8s.io.api.core.v1.CinderVol" +
      "umeSource\0226\n\006cephfs\030\016 \001(\0132&.k8s.io.api.c" +
      "ore.v1.CephFSVolumeSource\0228\n\007flocker\030\017 \001" +
      "(\0132\'.k8s.io.api.core.v1.FlockerVolumeSou" +
      "rce\022@\n\013downwardAPI\030\020 \001(\0132+.k8s.io.api.co" +
      "re.v1.DownwardAPIVolumeSource\022.\n\002fc\030\021 \001(" +
      "\0132\".k8s.io.api.core.v1.FCVolumeSource\022<\n" +
      "\tazureFile\030\022 \001(\0132).k8s.io.api.core.v1.Az" +
      "ureFileVolumeSource\022<\n\tconfigMap\030\023 \001(\0132)" +
      ".k8s.io.api.core.v1.ConfigMapVolumeSourc" +
      "e\022I\n\rvsphereVolume\030\024 \001(\01322.k8s.io.api.co" +
      "re.v1.VsphereVirtualDiskVolumeSource\0228\n\007" +
      "quobyte\030\025 \001(\0132\'.k8s.io.api.core.v1.Quoby" +
      "teVolumeSource\022<\n\tazureDisk\030\026 \001(\0132).k8s." +
      "io.api.core.v1.AzureDiskVolumeSource\022R\n\024" +
      "photonPersistentDisk\030\027 \001(\01324.k8s.io.api." +
      "core.v1.PhotonPersistentDiskVolumeSource" +
      "\022<\n\tprojected\030\032 \001(\0132).k8s.io.api.core.v1" +
      ".ProjectedVolumeSource\022@\n\016portworxVolume" +
      "\030\030 \001(\0132(.k8s.io.api.core.v1.PortworxVolu" +
      "meSource\0228\n\007scaleIO\030\031 \001(\0132\'.k8s.io.api.c" +
      "ore.v1.ScaleIOVolumeSource\022<\n\tstorageos\030" +
      "\033 \001(\0132).k8s.io.api.core.v1.StorageOSVolu" +
      "meSource\0220\n\003csi\030\034 \001(\0132#.k8s.io.api.core." +
      "v1.CSIVolumeSource\022<\n\tephemeral\030\035 \001(\0132)." +
      "k8s.io.api.core.v1.EphemeralVolumeSource" +
      "\"x\n\036VsphereVirtualDiskVolumeSource\022\022\n\nvo" +
      "lumePath\030\001 \001(\t\022\016\n\006fsType\030\002 \001(\t\022\031\n\021storag" +
      "ePolicyName\030\003 \001(\t\022\027\n\017storagePolicyID\030\004 \001" +
      "(\t\"g\n\027WeightedPodAffinityTerm\022\016\n\006weight\030" +
      "\001 \001(\005\022<\n\017podAffinityTerm\030\002 \001(\0132#.k8s.io." +
      "api.core.v1.PodAffinityTerm\"\207\001\n\035WindowsS" +
      "ecurityContextOptions\022\036\n\026gmsaCredentialS" +
      "pecName\030\001 \001(\t\022\032\n\022gmsaCredentialSpec\030\002 \001(" +
      "\t\022\025\n\rrunAsUserName\030\003 \001(\t\022\023\n\013hostProcess\030" +
      "\004 \001(\010B4\n\032io.kubernetes.client.protoB\002V1Z" +
      "\022k8s.io/api/core/v1"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          io.kubernetes.client.proto.Resource.getDescriptor(),
          io.kubernetes.client.proto.Meta.getDescriptor(),
          io.kubernetes.client.proto.Runtime.getDescriptor(),
          io.kubernetes.client.proto.RuntimeSchema.getDescriptor(),
          io.kubernetes.client.proto.IntStr.getDescriptor(),
        });
    internal_static_k8s_io_api_core_v1_AWSElasticBlockStoreVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_k8s_io_api_core_v1_AWSElasticBlockStoreVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_AWSElasticBlockStoreVolumeSource_descriptor,
        new java.lang.String[] { "VolumeID", "FsType", "Partition", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_Affinity_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_k8s_io_api_core_v1_Affinity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Affinity_descriptor,
        new java.lang.String[] { "NodeAffinity", "PodAffinity", "PodAntiAffinity", });
    internal_static_k8s_io_api_core_v1_AppArmorProfile_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_k8s_io_api_core_v1_AppArmorProfile_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_AppArmorProfile_descriptor,
        new java.lang.String[] { "Type", "LocalhostProfile", });
    internal_static_k8s_io_api_core_v1_AttachedVolume_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_k8s_io_api_core_v1_AttachedVolume_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_AttachedVolume_descriptor,
        new java.lang.String[] { "Name", "DevicePath", });
    internal_static_k8s_io_api_core_v1_AvoidPods_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_k8s_io_api_core_v1_AvoidPods_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_AvoidPods_descriptor,
        new java.lang.String[] { "PreferAvoidPods", });
    internal_static_k8s_io_api_core_v1_AzureDiskVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_k8s_io_api_core_v1_AzureDiskVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_AzureDiskVolumeSource_descriptor,
        new java.lang.String[] { "DiskName", "DiskURI", "CachingMode", "FsType", "ReadOnly", "Kind", });
    internal_static_k8s_io_api_core_v1_AzureFilePersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_k8s_io_api_core_v1_AzureFilePersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_AzureFilePersistentVolumeSource_descriptor,
        new java.lang.String[] { "SecretName", "ShareName", "ReadOnly", "SecretNamespace", });
    internal_static_k8s_io_api_core_v1_AzureFileVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_k8s_io_api_core_v1_AzureFileVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_AzureFileVolumeSource_descriptor,
        new java.lang.String[] { "SecretName", "ShareName", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_Binding_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_k8s_io_api_core_v1_Binding_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Binding_descriptor,
        new java.lang.String[] { "Metadata", "Target", });
    internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_descriptor,
        new java.lang.String[] { "Driver", "VolumeHandle", "ReadOnly", "FsType", "VolumeAttributes", "ControllerPublishSecretRef", "NodeStageSecretRef", "NodePublishSecretRef", "ControllerExpandSecretRef", "NodeExpandSecretRef", });
    internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_VolumeAttributesEntry_descriptor =
      internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_VolumeAttributesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_CSIPersistentVolumeSource_VolumeAttributesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_CSIVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_k8s_io_api_core_v1_CSIVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_CSIVolumeSource_descriptor,
        new java.lang.String[] { "Driver", "ReadOnly", "FsType", "VolumeAttributes", "NodePublishSecretRef", });
    internal_static_k8s_io_api_core_v1_CSIVolumeSource_VolumeAttributesEntry_descriptor =
      internal_static_k8s_io_api_core_v1_CSIVolumeSource_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_CSIVolumeSource_VolumeAttributesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_CSIVolumeSource_VolumeAttributesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_Capabilities_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_k8s_io_api_core_v1_Capabilities_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Capabilities_descriptor,
        new java.lang.String[] { "Add", "Drop", });
    internal_static_k8s_io_api_core_v1_CephFSPersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_k8s_io_api_core_v1_CephFSPersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_CephFSPersistentVolumeSource_descriptor,
        new java.lang.String[] { "Monitors", "Path", "User", "SecretFile", "SecretRef", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_CephFSVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_k8s_io_api_core_v1_CephFSVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_CephFSVolumeSource_descriptor,
        new java.lang.String[] { "Monitors", "Path", "User", "SecretFile", "SecretRef", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_CinderPersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_k8s_io_api_core_v1_CinderPersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_CinderPersistentVolumeSource_descriptor,
        new java.lang.String[] { "VolumeID", "FsType", "ReadOnly", "SecretRef", });
    internal_static_k8s_io_api_core_v1_CinderVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_k8s_io_api_core_v1_CinderVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_CinderVolumeSource_descriptor,
        new java.lang.String[] { "VolumeID", "FsType", "ReadOnly", "SecretRef", });
    internal_static_k8s_io_api_core_v1_ClaimSource_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_k8s_io_api_core_v1_ClaimSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ClaimSource_descriptor,
        new java.lang.String[] { "ResourceClaimName", "ResourceClaimTemplateName", });
    internal_static_k8s_io_api_core_v1_ClientIPConfig_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_k8s_io_api_core_v1_ClientIPConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ClientIPConfig_descriptor,
        new java.lang.String[] { "TimeoutSeconds", });
    internal_static_k8s_io_api_core_v1_ClusterTrustBundleProjection_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_k8s_io_api_core_v1_ClusterTrustBundleProjection_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ClusterTrustBundleProjection_descriptor,
        new java.lang.String[] { "Name", "SignerName", "LabelSelector", "Optional", "Path", });
    internal_static_k8s_io_api_core_v1_ComponentCondition_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_k8s_io_api_core_v1_ComponentCondition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ComponentCondition_descriptor,
        new java.lang.String[] { "Type", "Status", "Message", "Error", });
    internal_static_k8s_io_api_core_v1_ComponentStatus_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_k8s_io_api_core_v1_ComponentStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ComponentStatus_descriptor,
        new java.lang.String[] { "Metadata", "Conditions", });
    internal_static_k8s_io_api_core_v1_ComponentStatusList_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_k8s_io_api_core_v1_ComponentStatusList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ComponentStatusList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_ConfigMap_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_k8s_io_api_core_v1_ConfigMap_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ConfigMap_descriptor,
        new java.lang.String[] { "Metadata", "Immutable", "Data", "BinaryData", });
    internal_static_k8s_io_api_core_v1_ConfigMap_DataEntry_descriptor =
      internal_static_k8s_io_api_core_v1_ConfigMap_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_ConfigMap_DataEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ConfigMap_DataEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_ConfigMap_BinaryDataEntry_descriptor =
      internal_static_k8s_io_api_core_v1_ConfigMap_descriptor.getNestedTypes().get(1);
    internal_static_k8s_io_api_core_v1_ConfigMap_BinaryDataEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ConfigMap_BinaryDataEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_ConfigMapEnvSource_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_k8s_io_api_core_v1_ConfigMapEnvSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ConfigMapEnvSource_descriptor,
        new java.lang.String[] { "LocalObjectReference", "Optional", });
    internal_static_k8s_io_api_core_v1_ConfigMapKeySelector_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_k8s_io_api_core_v1_ConfigMapKeySelector_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ConfigMapKeySelector_descriptor,
        new java.lang.String[] { "LocalObjectReference", "Key", "Optional", });
    internal_static_k8s_io_api_core_v1_ConfigMapList_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_k8s_io_api_core_v1_ConfigMapList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ConfigMapList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_ConfigMapNodeConfigSource_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_k8s_io_api_core_v1_ConfigMapNodeConfigSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ConfigMapNodeConfigSource_descriptor,
        new java.lang.String[] { "Namespace", "Name", "Uid", "ResourceVersion", "KubeletConfigKey", });
    internal_static_k8s_io_api_core_v1_ConfigMapProjection_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_k8s_io_api_core_v1_ConfigMapProjection_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ConfigMapProjection_descriptor,
        new java.lang.String[] { "LocalObjectReference", "Items", "Optional", });
    internal_static_k8s_io_api_core_v1_ConfigMapVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_k8s_io_api_core_v1_ConfigMapVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ConfigMapVolumeSource_descriptor,
        new java.lang.String[] { "LocalObjectReference", "Items", "DefaultMode", "Optional", });
    internal_static_k8s_io_api_core_v1_Container_descriptor =
      getDescriptor().getMessageTypes().get(29);
    internal_static_k8s_io_api_core_v1_Container_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Container_descriptor,
        new java.lang.String[] { "Name", "Image", "Command", "Args", "WorkingDir", "Ports", "EnvFrom", "Env", "Resources", "ResizePolicy", "RestartPolicy", "VolumeMounts", "VolumeDevices", "LivenessProbe", "ReadinessProbe", "StartupProbe", "Lifecycle", "TerminationMessagePath", "TerminationMessagePolicy", "ImagePullPolicy", "SecurityContext", "Stdin", "StdinOnce", "Tty", });
    internal_static_k8s_io_api_core_v1_ContainerImage_descriptor =
      getDescriptor().getMessageTypes().get(30);
    internal_static_k8s_io_api_core_v1_ContainerImage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ContainerImage_descriptor,
        new java.lang.String[] { "Names", "SizeBytes", });
    internal_static_k8s_io_api_core_v1_ContainerPort_descriptor =
      getDescriptor().getMessageTypes().get(31);
    internal_static_k8s_io_api_core_v1_ContainerPort_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ContainerPort_descriptor,
        new java.lang.String[] { "Name", "HostPort", "ContainerPort", "Protocol", "HostIP", });
    internal_static_k8s_io_api_core_v1_ContainerResizePolicy_descriptor =
      getDescriptor().getMessageTypes().get(32);
    internal_static_k8s_io_api_core_v1_ContainerResizePolicy_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ContainerResizePolicy_descriptor,
        new java.lang.String[] { "ResourceName", "RestartPolicy", });
    internal_static_k8s_io_api_core_v1_ContainerState_descriptor =
      getDescriptor().getMessageTypes().get(33);
    internal_static_k8s_io_api_core_v1_ContainerState_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ContainerState_descriptor,
        new java.lang.String[] { "Waiting", "Running", "Terminated", });
    internal_static_k8s_io_api_core_v1_ContainerStateRunning_descriptor =
      getDescriptor().getMessageTypes().get(34);
    internal_static_k8s_io_api_core_v1_ContainerStateRunning_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ContainerStateRunning_descriptor,
        new java.lang.String[] { "StartedAt", });
    internal_static_k8s_io_api_core_v1_ContainerStateTerminated_descriptor =
      getDescriptor().getMessageTypes().get(35);
    internal_static_k8s_io_api_core_v1_ContainerStateTerminated_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ContainerStateTerminated_descriptor,
        new java.lang.String[] { "ExitCode", "Signal", "Reason", "Message", "StartedAt", "FinishedAt", "ContainerID", });
    internal_static_k8s_io_api_core_v1_ContainerStateWaiting_descriptor =
      getDescriptor().getMessageTypes().get(36);
    internal_static_k8s_io_api_core_v1_ContainerStateWaiting_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ContainerStateWaiting_descriptor,
        new java.lang.String[] { "Reason", "Message", });
    internal_static_k8s_io_api_core_v1_ContainerStatus_descriptor =
      getDescriptor().getMessageTypes().get(37);
    internal_static_k8s_io_api_core_v1_ContainerStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ContainerStatus_descriptor,
        new java.lang.String[] { "Name", "State", "LastState", "Ready", "RestartCount", "Image", "ImageID", "ContainerID", "Started", "AllocatedResources", "Resources", "VolumeMounts", });
    internal_static_k8s_io_api_core_v1_ContainerStatus_AllocatedResourcesEntry_descriptor =
      internal_static_k8s_io_api_core_v1_ContainerStatus_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_ContainerStatus_AllocatedResourcesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ContainerStatus_AllocatedResourcesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_DaemonEndpoint_descriptor =
      getDescriptor().getMessageTypes().get(38);
    internal_static_k8s_io_api_core_v1_DaemonEndpoint_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_DaemonEndpoint_descriptor,
        new java.lang.String[] { "Port", });
    internal_static_k8s_io_api_core_v1_DownwardAPIProjection_descriptor =
      getDescriptor().getMessageTypes().get(39);
    internal_static_k8s_io_api_core_v1_DownwardAPIProjection_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_DownwardAPIProjection_descriptor,
        new java.lang.String[] { "Items", });
    internal_static_k8s_io_api_core_v1_DownwardAPIVolumeFile_descriptor =
      getDescriptor().getMessageTypes().get(40);
    internal_static_k8s_io_api_core_v1_DownwardAPIVolumeFile_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_DownwardAPIVolumeFile_descriptor,
        new java.lang.String[] { "Path", "FieldRef", "ResourceFieldRef", "Mode", });
    internal_static_k8s_io_api_core_v1_DownwardAPIVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(41);
    internal_static_k8s_io_api_core_v1_DownwardAPIVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_DownwardAPIVolumeSource_descriptor,
        new java.lang.String[] { "Items", "DefaultMode", });
    internal_static_k8s_io_api_core_v1_EmptyDirVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(42);
    internal_static_k8s_io_api_core_v1_EmptyDirVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EmptyDirVolumeSource_descriptor,
        new java.lang.String[] { "Medium", "SizeLimit", });
    internal_static_k8s_io_api_core_v1_EndpointAddress_descriptor =
      getDescriptor().getMessageTypes().get(43);
    internal_static_k8s_io_api_core_v1_EndpointAddress_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EndpointAddress_descriptor,
        new java.lang.String[] { "Ip", "Hostname", "NodeName", "TargetRef", });
    internal_static_k8s_io_api_core_v1_EndpointPort_descriptor =
      getDescriptor().getMessageTypes().get(44);
    internal_static_k8s_io_api_core_v1_EndpointPort_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EndpointPort_descriptor,
        new java.lang.String[] { "Name", "Port", "Protocol", "AppProtocol", });
    internal_static_k8s_io_api_core_v1_EndpointSubset_descriptor =
      getDescriptor().getMessageTypes().get(45);
    internal_static_k8s_io_api_core_v1_EndpointSubset_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EndpointSubset_descriptor,
        new java.lang.String[] { "Addresses", "NotReadyAddresses", "Ports", });
    internal_static_k8s_io_api_core_v1_Endpoints_descriptor =
      getDescriptor().getMessageTypes().get(46);
    internal_static_k8s_io_api_core_v1_Endpoints_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Endpoints_descriptor,
        new java.lang.String[] { "Metadata", "Subsets", });
    internal_static_k8s_io_api_core_v1_EndpointsList_descriptor =
      getDescriptor().getMessageTypes().get(47);
    internal_static_k8s_io_api_core_v1_EndpointsList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EndpointsList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_EnvFromSource_descriptor =
      getDescriptor().getMessageTypes().get(48);
    internal_static_k8s_io_api_core_v1_EnvFromSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EnvFromSource_descriptor,
        new java.lang.String[] { "Prefix", "ConfigMapRef", "SecretRef", });
    internal_static_k8s_io_api_core_v1_EnvVar_descriptor =
      getDescriptor().getMessageTypes().get(49);
    internal_static_k8s_io_api_core_v1_EnvVar_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EnvVar_descriptor,
        new java.lang.String[] { "Name", "Value", "ValueFrom", });
    internal_static_k8s_io_api_core_v1_EnvVarSource_descriptor =
      getDescriptor().getMessageTypes().get(50);
    internal_static_k8s_io_api_core_v1_EnvVarSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EnvVarSource_descriptor,
        new java.lang.String[] { "FieldRef", "ResourceFieldRef", "ConfigMapKeyRef", "SecretKeyRef", });
    internal_static_k8s_io_api_core_v1_EphemeralContainer_descriptor =
      getDescriptor().getMessageTypes().get(51);
    internal_static_k8s_io_api_core_v1_EphemeralContainer_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EphemeralContainer_descriptor,
        new java.lang.String[] { "EphemeralContainerCommon", "TargetContainerName", });
    internal_static_k8s_io_api_core_v1_EphemeralContainerCommon_descriptor =
      getDescriptor().getMessageTypes().get(52);
    internal_static_k8s_io_api_core_v1_EphemeralContainerCommon_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EphemeralContainerCommon_descriptor,
        new java.lang.String[] { "Name", "Image", "Command", "Args", "WorkingDir", "Ports", "EnvFrom", "Env", "Resources", "ResizePolicy", "RestartPolicy", "VolumeMounts", "VolumeDevices", "LivenessProbe", "ReadinessProbe", "StartupProbe", "Lifecycle", "TerminationMessagePath", "TerminationMessagePolicy", "ImagePullPolicy", "SecurityContext", "Stdin", "StdinOnce", "Tty", });
    internal_static_k8s_io_api_core_v1_EphemeralVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(53);
    internal_static_k8s_io_api_core_v1_EphemeralVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EphemeralVolumeSource_descriptor,
        new java.lang.String[] { "VolumeClaimTemplate", });
    internal_static_k8s_io_api_core_v1_Event_descriptor =
      getDescriptor().getMessageTypes().get(54);
    internal_static_k8s_io_api_core_v1_Event_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Event_descriptor,
        new java.lang.String[] { "Metadata", "InvolvedObject", "Reason", "Message", "Source", "FirstTimestamp", "LastTimestamp", "Count", "Type", "EventTime", "Series", "Action", "Related", "ReportingComponent", "ReportingInstance", });
    internal_static_k8s_io_api_core_v1_EventList_descriptor =
      getDescriptor().getMessageTypes().get(55);
    internal_static_k8s_io_api_core_v1_EventList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EventList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_EventSeries_descriptor =
      getDescriptor().getMessageTypes().get(56);
    internal_static_k8s_io_api_core_v1_EventSeries_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EventSeries_descriptor,
        new java.lang.String[] { "Count", "LastObservedTime", });
    internal_static_k8s_io_api_core_v1_EventSource_descriptor =
      getDescriptor().getMessageTypes().get(57);
    internal_static_k8s_io_api_core_v1_EventSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_EventSource_descriptor,
        new java.lang.String[] { "Component", "Host", });
    internal_static_k8s_io_api_core_v1_ExecAction_descriptor =
      getDescriptor().getMessageTypes().get(58);
    internal_static_k8s_io_api_core_v1_ExecAction_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ExecAction_descriptor,
        new java.lang.String[] { "Command", });
    internal_static_k8s_io_api_core_v1_FCVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(59);
    internal_static_k8s_io_api_core_v1_FCVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_FCVolumeSource_descriptor,
        new java.lang.String[] { "TargetWWNs", "Lun", "FsType", "ReadOnly", "Wwids", });
    internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(60);
    internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_descriptor,
        new java.lang.String[] { "Driver", "FsType", "SecretRef", "ReadOnly", "Options", });
    internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_OptionsEntry_descriptor =
      internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_OptionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_FlexPersistentVolumeSource_OptionsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_FlexVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(61);
    internal_static_k8s_io_api_core_v1_FlexVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_FlexVolumeSource_descriptor,
        new java.lang.String[] { "Driver", "FsType", "SecretRef", "ReadOnly", "Options", });
    internal_static_k8s_io_api_core_v1_FlexVolumeSource_OptionsEntry_descriptor =
      internal_static_k8s_io_api_core_v1_FlexVolumeSource_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_FlexVolumeSource_OptionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_FlexVolumeSource_OptionsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_FlockerVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(62);
    internal_static_k8s_io_api_core_v1_FlockerVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_FlockerVolumeSource_descriptor,
        new java.lang.String[] { "DatasetName", "DatasetUUID", });
    internal_static_k8s_io_api_core_v1_GCEPersistentDiskVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(63);
    internal_static_k8s_io_api_core_v1_GCEPersistentDiskVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_GCEPersistentDiskVolumeSource_descriptor,
        new java.lang.String[] { "PdName", "FsType", "Partition", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_GRPCAction_descriptor =
      getDescriptor().getMessageTypes().get(64);
    internal_static_k8s_io_api_core_v1_GRPCAction_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_GRPCAction_descriptor,
        new java.lang.String[] { "Port", "Service", });
    internal_static_k8s_io_api_core_v1_GitRepoVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(65);
    internal_static_k8s_io_api_core_v1_GitRepoVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_GitRepoVolumeSource_descriptor,
        new java.lang.String[] { "Repository", "Revision", "Directory", });
    internal_static_k8s_io_api_core_v1_GlusterfsPersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(66);
    internal_static_k8s_io_api_core_v1_GlusterfsPersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_GlusterfsPersistentVolumeSource_descriptor,
        new java.lang.String[] { "Endpoints", "Path", "ReadOnly", "EndpointsNamespace", });
    internal_static_k8s_io_api_core_v1_GlusterfsVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(67);
    internal_static_k8s_io_api_core_v1_GlusterfsVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_GlusterfsVolumeSource_descriptor,
        new java.lang.String[] { "Endpoints", "Path", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_HTTPGetAction_descriptor =
      getDescriptor().getMessageTypes().get(68);
    internal_static_k8s_io_api_core_v1_HTTPGetAction_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_HTTPGetAction_descriptor,
        new java.lang.String[] { "Path", "Port", "Host", "Scheme", "HttpHeaders", });
    internal_static_k8s_io_api_core_v1_HTTPHeader_descriptor =
      getDescriptor().getMessageTypes().get(69);
    internal_static_k8s_io_api_core_v1_HTTPHeader_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_HTTPHeader_descriptor,
        new java.lang.String[] { "Name", "Value", });
    internal_static_k8s_io_api_core_v1_HostAlias_descriptor =
      getDescriptor().getMessageTypes().get(70);
    internal_static_k8s_io_api_core_v1_HostAlias_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_HostAlias_descriptor,
        new java.lang.String[] { "Ip", "Hostnames", });
    internal_static_k8s_io_api_core_v1_HostIP_descriptor =
      getDescriptor().getMessageTypes().get(71);
    internal_static_k8s_io_api_core_v1_HostIP_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_HostIP_descriptor,
        new java.lang.String[] { "Ip", });
    internal_static_k8s_io_api_core_v1_HostPathVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(72);
    internal_static_k8s_io_api_core_v1_HostPathVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_HostPathVolumeSource_descriptor,
        new java.lang.String[] { "Path", "Type", });
    internal_static_k8s_io_api_core_v1_ISCSIPersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(73);
    internal_static_k8s_io_api_core_v1_ISCSIPersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ISCSIPersistentVolumeSource_descriptor,
        new java.lang.String[] { "TargetPortal", "Iqn", "Lun", "IscsiInterface", "FsType", "ReadOnly", "Portals", "ChapAuthDiscovery", "ChapAuthSession", "SecretRef", "InitiatorName", });
    internal_static_k8s_io_api_core_v1_ISCSIVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(74);
    internal_static_k8s_io_api_core_v1_ISCSIVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ISCSIVolumeSource_descriptor,
        new java.lang.String[] { "TargetPortal", "Iqn", "Lun", "IscsiInterface", "FsType", "ReadOnly", "Portals", "ChapAuthDiscovery", "ChapAuthSession", "SecretRef", "InitiatorName", });
    internal_static_k8s_io_api_core_v1_KeyToPath_descriptor =
      getDescriptor().getMessageTypes().get(75);
    internal_static_k8s_io_api_core_v1_KeyToPath_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_KeyToPath_descriptor,
        new java.lang.String[] { "Key", "Path", "Mode", });
    internal_static_k8s_io_api_core_v1_Lifecycle_descriptor =
      getDescriptor().getMessageTypes().get(76);
    internal_static_k8s_io_api_core_v1_Lifecycle_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Lifecycle_descriptor,
        new java.lang.String[] { "PostStart", "PreStop", });
    internal_static_k8s_io_api_core_v1_LifecycleHandler_descriptor =
      getDescriptor().getMessageTypes().get(77);
    internal_static_k8s_io_api_core_v1_LifecycleHandler_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LifecycleHandler_descriptor,
        new java.lang.String[] { "Exec", "HttpGet", "TcpSocket", "Sleep", });
    internal_static_k8s_io_api_core_v1_LimitRange_descriptor =
      getDescriptor().getMessageTypes().get(78);
    internal_static_k8s_io_api_core_v1_LimitRange_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LimitRange_descriptor,
        new java.lang.String[] { "Metadata", "Spec", });
    internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor =
      getDescriptor().getMessageTypes().get(79);
    internal_static_k8s_io_api_core_v1_LimitRangeItem_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor,
        new java.lang.String[] { "Type", "Max", "Min", "Default", "DefaultRequest", "MaxLimitRequestRatio", });
    internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxEntry_descriptor =
      internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_LimitRangeItem_MinEntry_descriptor =
      internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor.getNestedTypes().get(1);
    internal_static_k8s_io_api_core_v1_LimitRangeItem_MinEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LimitRangeItem_MinEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultEntry_descriptor =
      internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor.getNestedTypes().get(2);
    internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultRequestEntry_descriptor =
      internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor.getNestedTypes().get(3);
    internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultRequestEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LimitRangeItem_DefaultRequestEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxLimitRequestRatioEntry_descriptor =
      internal_static_k8s_io_api_core_v1_LimitRangeItem_descriptor.getNestedTypes().get(4);
    internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxLimitRequestRatioEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LimitRangeItem_MaxLimitRequestRatioEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_LimitRangeList_descriptor =
      getDescriptor().getMessageTypes().get(80);
    internal_static_k8s_io_api_core_v1_LimitRangeList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LimitRangeList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_LimitRangeSpec_descriptor =
      getDescriptor().getMessageTypes().get(81);
    internal_static_k8s_io_api_core_v1_LimitRangeSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LimitRangeSpec_descriptor,
        new java.lang.String[] { "Limits", });
    internal_static_k8s_io_api_core_v1_List_descriptor =
      getDescriptor().getMessageTypes().get(82);
    internal_static_k8s_io_api_core_v1_List_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_List_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_LoadBalancerIngress_descriptor =
      getDescriptor().getMessageTypes().get(83);
    internal_static_k8s_io_api_core_v1_LoadBalancerIngress_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LoadBalancerIngress_descriptor,
        new java.lang.String[] { "Ip", "Hostname", "IpMode", "Ports", });
    internal_static_k8s_io_api_core_v1_LoadBalancerStatus_descriptor =
      getDescriptor().getMessageTypes().get(84);
    internal_static_k8s_io_api_core_v1_LoadBalancerStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LoadBalancerStatus_descriptor,
        new java.lang.String[] { "Ingress", });
    internal_static_k8s_io_api_core_v1_LocalObjectReference_descriptor =
      getDescriptor().getMessageTypes().get(85);
    internal_static_k8s_io_api_core_v1_LocalObjectReference_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LocalObjectReference_descriptor,
        new java.lang.String[] { "Name", });
    internal_static_k8s_io_api_core_v1_LocalVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(86);
    internal_static_k8s_io_api_core_v1_LocalVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_LocalVolumeSource_descriptor,
        new java.lang.String[] { "Path", "FsType", });
    internal_static_k8s_io_api_core_v1_ModifyVolumeStatus_descriptor =
      getDescriptor().getMessageTypes().get(87);
    internal_static_k8s_io_api_core_v1_ModifyVolumeStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ModifyVolumeStatus_descriptor,
        new java.lang.String[] { "TargetVolumeAttributesClassName", "Status", });
    internal_static_k8s_io_api_core_v1_NFSVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(88);
    internal_static_k8s_io_api_core_v1_NFSVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NFSVolumeSource_descriptor,
        new java.lang.String[] { "Server", "Path", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_Namespace_descriptor =
      getDescriptor().getMessageTypes().get(89);
    internal_static_k8s_io_api_core_v1_Namespace_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Namespace_descriptor,
        new java.lang.String[] { "Metadata", "Spec", "Status", });
    internal_static_k8s_io_api_core_v1_NamespaceCondition_descriptor =
      getDescriptor().getMessageTypes().get(90);
    internal_static_k8s_io_api_core_v1_NamespaceCondition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NamespaceCondition_descriptor,
        new java.lang.String[] { "Type", "Status", "LastTransitionTime", "Reason", "Message", });
    internal_static_k8s_io_api_core_v1_NamespaceList_descriptor =
      getDescriptor().getMessageTypes().get(91);
    internal_static_k8s_io_api_core_v1_NamespaceList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NamespaceList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_NamespaceSpec_descriptor =
      getDescriptor().getMessageTypes().get(92);
    internal_static_k8s_io_api_core_v1_NamespaceSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NamespaceSpec_descriptor,
        new java.lang.String[] { "Finalizers", });
    internal_static_k8s_io_api_core_v1_NamespaceStatus_descriptor =
      getDescriptor().getMessageTypes().get(93);
    internal_static_k8s_io_api_core_v1_NamespaceStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NamespaceStatus_descriptor,
        new java.lang.String[] { "Phase", "Conditions", });
    internal_static_k8s_io_api_core_v1_Node_descriptor =
      getDescriptor().getMessageTypes().get(94);
    internal_static_k8s_io_api_core_v1_Node_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Node_descriptor,
        new java.lang.String[] { "Metadata", "Spec", "Status", });
    internal_static_k8s_io_api_core_v1_NodeAddress_descriptor =
      getDescriptor().getMessageTypes().get(95);
    internal_static_k8s_io_api_core_v1_NodeAddress_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeAddress_descriptor,
        new java.lang.String[] { "Type", "Address", });
    internal_static_k8s_io_api_core_v1_NodeAffinity_descriptor =
      getDescriptor().getMessageTypes().get(96);
    internal_static_k8s_io_api_core_v1_NodeAffinity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeAffinity_descriptor,
        new java.lang.String[] { "RequiredDuringSchedulingIgnoredDuringExecution", "PreferredDuringSchedulingIgnoredDuringExecution", });
    internal_static_k8s_io_api_core_v1_NodeCondition_descriptor =
      getDescriptor().getMessageTypes().get(97);
    internal_static_k8s_io_api_core_v1_NodeCondition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeCondition_descriptor,
        new java.lang.String[] { "Type", "Status", "LastHeartbeatTime", "LastTransitionTime", "Reason", "Message", });
    internal_static_k8s_io_api_core_v1_NodeConfigSource_descriptor =
      getDescriptor().getMessageTypes().get(98);
    internal_static_k8s_io_api_core_v1_NodeConfigSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeConfigSource_descriptor,
        new java.lang.String[] { "ConfigMap", });
    internal_static_k8s_io_api_core_v1_NodeConfigStatus_descriptor =
      getDescriptor().getMessageTypes().get(99);
    internal_static_k8s_io_api_core_v1_NodeConfigStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeConfigStatus_descriptor,
        new java.lang.String[] { "Assigned", "Active", "LastKnownGood", "Error", });
    internal_static_k8s_io_api_core_v1_NodeDaemonEndpoints_descriptor =
      getDescriptor().getMessageTypes().get(100);
    internal_static_k8s_io_api_core_v1_NodeDaemonEndpoints_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeDaemonEndpoints_descriptor,
        new java.lang.String[] { "KubeletEndpoint", });
    internal_static_k8s_io_api_core_v1_NodeList_descriptor =
      getDescriptor().getMessageTypes().get(101);
    internal_static_k8s_io_api_core_v1_NodeList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_NodeProxyOptions_descriptor =
      getDescriptor().getMessageTypes().get(102);
    internal_static_k8s_io_api_core_v1_NodeProxyOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeProxyOptions_descriptor,
        new java.lang.String[] { "Path", });
    internal_static_k8s_io_api_core_v1_NodeRuntimeHandler_descriptor =
      getDescriptor().getMessageTypes().get(103);
    internal_static_k8s_io_api_core_v1_NodeRuntimeHandler_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeRuntimeHandler_descriptor,
        new java.lang.String[] { "Name", "Features", });
    internal_static_k8s_io_api_core_v1_NodeRuntimeHandlerFeatures_descriptor =
      getDescriptor().getMessageTypes().get(104);
    internal_static_k8s_io_api_core_v1_NodeRuntimeHandlerFeatures_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeRuntimeHandlerFeatures_descriptor,
        new java.lang.String[] { "RecursiveReadOnlyMounts", });
    internal_static_k8s_io_api_core_v1_NodeSelector_descriptor =
      getDescriptor().getMessageTypes().get(105);
    internal_static_k8s_io_api_core_v1_NodeSelector_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeSelector_descriptor,
        new java.lang.String[] { "NodeSelectorTerms", });
    internal_static_k8s_io_api_core_v1_NodeSelectorRequirement_descriptor =
      getDescriptor().getMessageTypes().get(106);
    internal_static_k8s_io_api_core_v1_NodeSelectorRequirement_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeSelectorRequirement_descriptor,
        new java.lang.String[] { "Key", "Operator", "Values", });
    internal_static_k8s_io_api_core_v1_NodeSelectorTerm_descriptor =
      getDescriptor().getMessageTypes().get(107);
    internal_static_k8s_io_api_core_v1_NodeSelectorTerm_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeSelectorTerm_descriptor,
        new java.lang.String[] { "MatchExpressions", "MatchFields", });
    internal_static_k8s_io_api_core_v1_NodeSpec_descriptor =
      getDescriptor().getMessageTypes().get(108);
    internal_static_k8s_io_api_core_v1_NodeSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeSpec_descriptor,
        new java.lang.String[] { "PodCIDR", "PodCIDRs", "ProviderID", "Unschedulable", "Taints", "ConfigSource", "ExternalID", });
    internal_static_k8s_io_api_core_v1_NodeStatus_descriptor =
      getDescriptor().getMessageTypes().get(109);
    internal_static_k8s_io_api_core_v1_NodeStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeStatus_descriptor,
        new java.lang.String[] { "Capacity", "Allocatable", "Phase", "Conditions", "Addresses", "DaemonEndpoints", "NodeInfo", "Images", "VolumesInUse", "VolumesAttached", "Config", "RuntimeHandlers", });
    internal_static_k8s_io_api_core_v1_NodeStatus_CapacityEntry_descriptor =
      internal_static_k8s_io_api_core_v1_NodeStatus_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_NodeStatus_CapacityEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeStatus_CapacityEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_NodeStatus_AllocatableEntry_descriptor =
      internal_static_k8s_io_api_core_v1_NodeStatus_descriptor.getNestedTypes().get(1);
    internal_static_k8s_io_api_core_v1_NodeStatus_AllocatableEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeStatus_AllocatableEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_NodeSystemInfo_descriptor =
      getDescriptor().getMessageTypes().get(110);
    internal_static_k8s_io_api_core_v1_NodeSystemInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_NodeSystemInfo_descriptor,
        new java.lang.String[] { "MachineID", "SystemUUID", "BootID", "KernelVersion", "OsImage", "ContainerRuntimeVersion", "KubeletVersion", "KubeProxyVersion", "OperatingSystem", "Architecture", });
    internal_static_k8s_io_api_core_v1_ObjectFieldSelector_descriptor =
      getDescriptor().getMessageTypes().get(111);
    internal_static_k8s_io_api_core_v1_ObjectFieldSelector_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ObjectFieldSelector_descriptor,
        new java.lang.String[] { "ApiVersion", "FieldPath", });
    internal_static_k8s_io_api_core_v1_ObjectReference_descriptor =
      getDescriptor().getMessageTypes().get(112);
    internal_static_k8s_io_api_core_v1_ObjectReference_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ObjectReference_descriptor,
        new java.lang.String[] { "Kind", "Namespace", "Name", "Uid", "ApiVersion", "ResourceVersion", "FieldPath", });
    internal_static_k8s_io_api_core_v1_PersistentVolume_descriptor =
      getDescriptor().getMessageTypes().get(113);
    internal_static_k8s_io_api_core_v1_PersistentVolume_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolume_descriptor,
        new java.lang.String[] { "Metadata", "Spec", "Status", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaim_descriptor =
      getDescriptor().getMessageTypes().get(114);
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaim_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeClaim_descriptor,
        new java.lang.String[] { "Metadata", "Spec", "Status", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimCondition_descriptor =
      getDescriptor().getMessageTypes().get(115);
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimCondition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeClaimCondition_descriptor,
        new java.lang.String[] { "Type", "Status", "LastProbeTime", "LastTransitionTime", "Reason", "Message", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimList_descriptor =
      getDescriptor().getMessageTypes().get(116);
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeClaimList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimSpec_descriptor =
      getDescriptor().getMessageTypes().get(117);
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeClaimSpec_descriptor,
        new java.lang.String[] { "AccessModes", "Selector", "Resources", "VolumeName", "StorageClassName", "VolumeMode", "DataSource", "DataSourceRef", "VolumeAttributesClassName", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_descriptor =
      getDescriptor().getMessageTypes().get(118);
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_descriptor,
        new java.lang.String[] { "Phase", "AccessModes", "Capacity", "Conditions", "AllocatedResources", "AllocatedResourceStatuses", "CurrentVolumeAttributesClassName", "ModifyVolumeStatus", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_CapacityEntry_descriptor =
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_CapacityEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_CapacityEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourcesEntry_descriptor =
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_descriptor.getNestedTypes().get(1);
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourcesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourcesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourceStatusesEntry_descriptor =
      internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_descriptor.getNestedTypes().get(2);
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourceStatusesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeClaimStatus_AllocatedResourceStatusesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimTemplate_descriptor =
      getDescriptor().getMessageTypes().get(119);
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimTemplate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeClaimTemplate_descriptor,
        new java.lang.String[] { "Metadata", "Spec", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(120);
    internal_static_k8s_io_api_core_v1_PersistentVolumeClaimVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeClaimVolumeSource_descriptor,
        new java.lang.String[] { "ClaimName", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeList_descriptor =
      getDescriptor().getMessageTypes().get(121);
    internal_static_k8s_io_api_core_v1_PersistentVolumeList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(122);
    internal_static_k8s_io_api_core_v1_PersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeSource_descriptor,
        new java.lang.String[] { "GcePersistentDisk", "AwsElasticBlockStore", "HostPath", "Glusterfs", "Nfs", "Rbd", "Iscsi", "Cinder", "Cephfs", "Fc", "Flocker", "FlexVolume", "AzureFile", "VsphereVolume", "Quobyte", "AzureDisk", "PhotonPersistentDisk", "PortworxVolume", "ScaleIO", "Local", "Storageos", "Csi", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_descriptor =
      getDescriptor().getMessageTypes().get(123);
    internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_descriptor,
        new java.lang.String[] { "Capacity", "PersistentVolumeSource", "AccessModes", "ClaimRef", "PersistentVolumeReclaimPolicy", "StorageClassName", "MountOptions", "VolumeMode", "NodeAffinity", "VolumeAttributesClassName", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_CapacityEntry_descriptor =
      internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_CapacityEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeSpec_CapacityEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_PersistentVolumeStatus_descriptor =
      getDescriptor().getMessageTypes().get(124);
    internal_static_k8s_io_api_core_v1_PersistentVolumeStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PersistentVolumeStatus_descriptor,
        new java.lang.String[] { "Phase", "Message", "Reason", "LastPhaseTransitionTime", });
    internal_static_k8s_io_api_core_v1_PhotonPersistentDiskVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(125);
    internal_static_k8s_io_api_core_v1_PhotonPersistentDiskVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PhotonPersistentDiskVolumeSource_descriptor,
        new java.lang.String[] { "PdID", "FsType", });
    internal_static_k8s_io_api_core_v1_Pod_descriptor =
      getDescriptor().getMessageTypes().get(126);
    internal_static_k8s_io_api_core_v1_Pod_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Pod_descriptor,
        new java.lang.String[] { "Metadata", "Spec", "Status", });
    internal_static_k8s_io_api_core_v1_PodAffinity_descriptor =
      getDescriptor().getMessageTypes().get(127);
    internal_static_k8s_io_api_core_v1_PodAffinity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodAffinity_descriptor,
        new java.lang.String[] { "RequiredDuringSchedulingIgnoredDuringExecution", "PreferredDuringSchedulingIgnoredDuringExecution", });
    internal_static_k8s_io_api_core_v1_PodAffinityTerm_descriptor =
      getDescriptor().getMessageTypes().get(128);
    internal_static_k8s_io_api_core_v1_PodAffinityTerm_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodAffinityTerm_descriptor,
        new java.lang.String[] { "LabelSelector", "Namespaces", "TopologyKey", "NamespaceSelector", "MatchLabelKeys", "MismatchLabelKeys", });
    internal_static_k8s_io_api_core_v1_PodAntiAffinity_descriptor =
      getDescriptor().getMessageTypes().get(129);
    internal_static_k8s_io_api_core_v1_PodAntiAffinity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodAntiAffinity_descriptor,
        new java.lang.String[] { "RequiredDuringSchedulingIgnoredDuringExecution", "PreferredDuringSchedulingIgnoredDuringExecution", });
    internal_static_k8s_io_api_core_v1_PodAttachOptions_descriptor =
      getDescriptor().getMessageTypes().get(130);
    internal_static_k8s_io_api_core_v1_PodAttachOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodAttachOptions_descriptor,
        new java.lang.String[] { "Stdin", "Stdout", "Stderr", "Tty", "Container", });
    internal_static_k8s_io_api_core_v1_PodCondition_descriptor =
      getDescriptor().getMessageTypes().get(131);
    internal_static_k8s_io_api_core_v1_PodCondition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodCondition_descriptor,
        new java.lang.String[] { "Type", "Status", "LastProbeTime", "LastTransitionTime", "Reason", "Message", });
    internal_static_k8s_io_api_core_v1_PodDNSConfig_descriptor =
      getDescriptor().getMessageTypes().get(132);
    internal_static_k8s_io_api_core_v1_PodDNSConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodDNSConfig_descriptor,
        new java.lang.String[] { "Nameservers", "Searches", "Options", });
    internal_static_k8s_io_api_core_v1_PodDNSConfigOption_descriptor =
      getDescriptor().getMessageTypes().get(133);
    internal_static_k8s_io_api_core_v1_PodDNSConfigOption_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodDNSConfigOption_descriptor,
        new java.lang.String[] { "Name", "Value", });
    internal_static_k8s_io_api_core_v1_PodExecOptions_descriptor =
      getDescriptor().getMessageTypes().get(134);
    internal_static_k8s_io_api_core_v1_PodExecOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodExecOptions_descriptor,
        new java.lang.String[] { "Stdin", "Stdout", "Stderr", "Tty", "Container", "Command", });
    internal_static_k8s_io_api_core_v1_PodIP_descriptor =
      getDescriptor().getMessageTypes().get(135);
    internal_static_k8s_io_api_core_v1_PodIP_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodIP_descriptor,
        new java.lang.String[] { "Ip", });
    internal_static_k8s_io_api_core_v1_PodList_descriptor =
      getDescriptor().getMessageTypes().get(136);
    internal_static_k8s_io_api_core_v1_PodList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_PodLogOptions_descriptor =
      getDescriptor().getMessageTypes().get(137);
    internal_static_k8s_io_api_core_v1_PodLogOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodLogOptions_descriptor,
        new java.lang.String[] { "Container", "Follow", "Previous", "SinceSeconds", "SinceTime", "Timestamps", "TailLines", "LimitBytes", "InsecureSkipTLSVerifyBackend", });
    internal_static_k8s_io_api_core_v1_PodOS_descriptor =
      getDescriptor().getMessageTypes().get(138);
    internal_static_k8s_io_api_core_v1_PodOS_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodOS_descriptor,
        new java.lang.String[] { "Name", });
    internal_static_k8s_io_api_core_v1_PodPortForwardOptions_descriptor =
      getDescriptor().getMessageTypes().get(139);
    internal_static_k8s_io_api_core_v1_PodPortForwardOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodPortForwardOptions_descriptor,
        new java.lang.String[] { "Ports", });
    internal_static_k8s_io_api_core_v1_PodProxyOptions_descriptor =
      getDescriptor().getMessageTypes().get(140);
    internal_static_k8s_io_api_core_v1_PodProxyOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodProxyOptions_descriptor,
        new java.lang.String[] { "Path", });
    internal_static_k8s_io_api_core_v1_PodReadinessGate_descriptor =
      getDescriptor().getMessageTypes().get(141);
    internal_static_k8s_io_api_core_v1_PodReadinessGate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodReadinessGate_descriptor,
        new java.lang.String[] { "ConditionType", });
    internal_static_k8s_io_api_core_v1_PodResourceClaim_descriptor =
      getDescriptor().getMessageTypes().get(142);
    internal_static_k8s_io_api_core_v1_PodResourceClaim_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodResourceClaim_descriptor,
        new java.lang.String[] { "Name", "Source", });
    internal_static_k8s_io_api_core_v1_PodResourceClaimStatus_descriptor =
      getDescriptor().getMessageTypes().get(143);
    internal_static_k8s_io_api_core_v1_PodResourceClaimStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodResourceClaimStatus_descriptor,
        new java.lang.String[] { "Name", "ResourceClaimName", });
    internal_static_k8s_io_api_core_v1_PodSchedulingGate_descriptor =
      getDescriptor().getMessageTypes().get(144);
    internal_static_k8s_io_api_core_v1_PodSchedulingGate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodSchedulingGate_descriptor,
        new java.lang.String[] { "Name", });
    internal_static_k8s_io_api_core_v1_PodSecurityContext_descriptor =
      getDescriptor().getMessageTypes().get(145);
    internal_static_k8s_io_api_core_v1_PodSecurityContext_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodSecurityContext_descriptor,
        new java.lang.String[] { "SeLinuxOptions", "WindowsOptions", "RunAsUser", "RunAsGroup", "RunAsNonRoot", "SupplementalGroups", "FsGroup", "Sysctls", "FsGroupChangePolicy", "SeccompProfile", "AppArmorProfile", });
    internal_static_k8s_io_api_core_v1_PodSignature_descriptor =
      getDescriptor().getMessageTypes().get(146);
    internal_static_k8s_io_api_core_v1_PodSignature_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodSignature_descriptor,
        new java.lang.String[] { "PodController", });
    internal_static_k8s_io_api_core_v1_PodSpec_descriptor =
      getDescriptor().getMessageTypes().get(147);
    internal_static_k8s_io_api_core_v1_PodSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodSpec_descriptor,
        new java.lang.String[] { "Volumes", "InitContainers", "Containers", "EphemeralContainers", "RestartPolicy", "TerminationGracePeriodSeconds", "ActiveDeadlineSeconds", "DnsPolicy", "NodeSelector", "ServiceAccountName", "ServiceAccount", "AutomountServiceAccountToken", "NodeName", "HostNetwork", "HostPID", "HostIPC", "ShareProcessNamespace", "SecurityContext", "ImagePullSecrets", "Hostname", "Subdomain", "Affinity", "SchedulerName", "Tolerations", "HostAliases", "PriorityClassName", "Priority", "DnsConfig", "ReadinessGates", "RuntimeClassName", "EnableServiceLinks", "PreemptionPolicy", "Overhead", "TopologySpreadConstraints", "SetHostnameAsFQDN", "Os", "HostUsers", "SchedulingGates", "ResourceClaims", });
    internal_static_k8s_io_api_core_v1_PodSpec_NodeSelectorEntry_descriptor =
      internal_static_k8s_io_api_core_v1_PodSpec_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_PodSpec_NodeSelectorEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodSpec_NodeSelectorEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_PodSpec_OverheadEntry_descriptor =
      internal_static_k8s_io_api_core_v1_PodSpec_descriptor.getNestedTypes().get(1);
    internal_static_k8s_io_api_core_v1_PodSpec_OverheadEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodSpec_OverheadEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_PodStatus_descriptor =
      getDescriptor().getMessageTypes().get(148);
    internal_static_k8s_io_api_core_v1_PodStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodStatus_descriptor,
        new java.lang.String[] { "Phase", "Conditions", "Message", "Reason", "NominatedNodeName", "HostIP", "HostIPs", "PodIP", "PodIPs", "StartTime", "InitContainerStatuses", "ContainerStatuses", "QosClass", "EphemeralContainerStatuses", "Resize", "ResourceClaimStatuses", });
    internal_static_k8s_io_api_core_v1_PodStatusResult_descriptor =
      getDescriptor().getMessageTypes().get(149);
    internal_static_k8s_io_api_core_v1_PodStatusResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodStatusResult_descriptor,
        new java.lang.String[] { "Metadata", "Status", });
    internal_static_k8s_io_api_core_v1_PodTemplate_descriptor =
      getDescriptor().getMessageTypes().get(150);
    internal_static_k8s_io_api_core_v1_PodTemplate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodTemplate_descriptor,
        new java.lang.String[] { "Metadata", "Template", });
    internal_static_k8s_io_api_core_v1_PodTemplateList_descriptor =
      getDescriptor().getMessageTypes().get(151);
    internal_static_k8s_io_api_core_v1_PodTemplateList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodTemplateList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_PodTemplateSpec_descriptor =
      getDescriptor().getMessageTypes().get(152);
    internal_static_k8s_io_api_core_v1_PodTemplateSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PodTemplateSpec_descriptor,
        new java.lang.String[] { "Metadata", "Spec", });
    internal_static_k8s_io_api_core_v1_PortStatus_descriptor =
      getDescriptor().getMessageTypes().get(153);
    internal_static_k8s_io_api_core_v1_PortStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PortStatus_descriptor,
        new java.lang.String[] { "Port", "Protocol", "Error", });
    internal_static_k8s_io_api_core_v1_PortworxVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(154);
    internal_static_k8s_io_api_core_v1_PortworxVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PortworxVolumeSource_descriptor,
        new java.lang.String[] { "VolumeID", "FsType", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_Preconditions_descriptor =
      getDescriptor().getMessageTypes().get(155);
    internal_static_k8s_io_api_core_v1_Preconditions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Preconditions_descriptor,
        new java.lang.String[] { "Uid", });
    internal_static_k8s_io_api_core_v1_PreferAvoidPodsEntry_descriptor =
      getDescriptor().getMessageTypes().get(156);
    internal_static_k8s_io_api_core_v1_PreferAvoidPodsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PreferAvoidPodsEntry_descriptor,
        new java.lang.String[] { "PodSignature", "EvictionTime", "Reason", "Message", });
    internal_static_k8s_io_api_core_v1_PreferredSchedulingTerm_descriptor =
      getDescriptor().getMessageTypes().get(157);
    internal_static_k8s_io_api_core_v1_PreferredSchedulingTerm_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_PreferredSchedulingTerm_descriptor,
        new java.lang.String[] { "Weight", "Preference", });
    internal_static_k8s_io_api_core_v1_Probe_descriptor =
      getDescriptor().getMessageTypes().get(158);
    internal_static_k8s_io_api_core_v1_Probe_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Probe_descriptor,
        new java.lang.String[] { "Handler", "InitialDelaySeconds", "TimeoutSeconds", "PeriodSeconds", "SuccessThreshold", "FailureThreshold", "TerminationGracePeriodSeconds", });
    internal_static_k8s_io_api_core_v1_ProbeHandler_descriptor =
      getDescriptor().getMessageTypes().get(159);
    internal_static_k8s_io_api_core_v1_ProbeHandler_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ProbeHandler_descriptor,
        new java.lang.String[] { "Exec", "HttpGet", "TcpSocket", "Grpc", });
    internal_static_k8s_io_api_core_v1_ProjectedVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(160);
    internal_static_k8s_io_api_core_v1_ProjectedVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ProjectedVolumeSource_descriptor,
        new java.lang.String[] { "Sources", "DefaultMode", });
    internal_static_k8s_io_api_core_v1_QuobyteVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(161);
    internal_static_k8s_io_api_core_v1_QuobyteVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_QuobyteVolumeSource_descriptor,
        new java.lang.String[] { "Registry", "Volume", "ReadOnly", "User", "Group", "Tenant", });
    internal_static_k8s_io_api_core_v1_RBDPersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(162);
    internal_static_k8s_io_api_core_v1_RBDPersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_RBDPersistentVolumeSource_descriptor,
        new java.lang.String[] { "Monitors", "Image", "FsType", "Pool", "User", "Keyring", "SecretRef", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_RBDVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(163);
    internal_static_k8s_io_api_core_v1_RBDVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_RBDVolumeSource_descriptor,
        new java.lang.String[] { "Monitors", "Image", "FsType", "Pool", "User", "Keyring", "SecretRef", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_RangeAllocation_descriptor =
      getDescriptor().getMessageTypes().get(164);
    internal_static_k8s_io_api_core_v1_RangeAllocation_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_RangeAllocation_descriptor,
        new java.lang.String[] { "Metadata", "Range", "Data", });
    internal_static_k8s_io_api_core_v1_ReplicationController_descriptor =
      getDescriptor().getMessageTypes().get(165);
    internal_static_k8s_io_api_core_v1_ReplicationController_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ReplicationController_descriptor,
        new java.lang.String[] { "Metadata", "Spec", "Status", });
    internal_static_k8s_io_api_core_v1_ReplicationControllerCondition_descriptor =
      getDescriptor().getMessageTypes().get(166);
    internal_static_k8s_io_api_core_v1_ReplicationControllerCondition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ReplicationControllerCondition_descriptor,
        new java.lang.String[] { "Type", "Status", "LastTransitionTime", "Reason", "Message", });
    internal_static_k8s_io_api_core_v1_ReplicationControllerList_descriptor =
      getDescriptor().getMessageTypes().get(167);
    internal_static_k8s_io_api_core_v1_ReplicationControllerList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ReplicationControllerList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_descriptor =
      getDescriptor().getMessageTypes().get(168);
    internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_descriptor,
        new java.lang.String[] { "Replicas", "MinReadySeconds", "Selector", "Template", });
    internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_SelectorEntry_descriptor =
      internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_SelectorEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ReplicationControllerSpec_SelectorEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_ReplicationControllerStatus_descriptor =
      getDescriptor().getMessageTypes().get(169);
    internal_static_k8s_io_api_core_v1_ReplicationControllerStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ReplicationControllerStatus_descriptor,
        new java.lang.String[] { "Replicas", "FullyLabeledReplicas", "ReadyReplicas", "AvailableReplicas", "ObservedGeneration", "Conditions", });
    internal_static_k8s_io_api_core_v1_ResourceClaim_descriptor =
      getDescriptor().getMessageTypes().get(170);
    internal_static_k8s_io_api_core_v1_ResourceClaim_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceClaim_descriptor,
        new java.lang.String[] { "Name", });
    internal_static_k8s_io_api_core_v1_ResourceFieldSelector_descriptor =
      getDescriptor().getMessageTypes().get(171);
    internal_static_k8s_io_api_core_v1_ResourceFieldSelector_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceFieldSelector_descriptor,
        new java.lang.String[] { "ContainerName", "Resource", "Divisor", });
    internal_static_k8s_io_api_core_v1_ResourceQuota_descriptor =
      getDescriptor().getMessageTypes().get(172);
    internal_static_k8s_io_api_core_v1_ResourceQuota_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceQuota_descriptor,
        new java.lang.String[] { "Metadata", "Spec", "Status", });
    internal_static_k8s_io_api_core_v1_ResourceQuotaList_descriptor =
      getDescriptor().getMessageTypes().get(173);
    internal_static_k8s_io_api_core_v1_ResourceQuotaList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceQuotaList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_descriptor =
      getDescriptor().getMessageTypes().get(174);
    internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_descriptor,
        new java.lang.String[] { "Hard", "Scopes", "ScopeSelector", });
    internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_HardEntry_descriptor =
      internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_HardEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceQuotaSpec_HardEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_descriptor =
      getDescriptor().getMessageTypes().get(175);
    internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_descriptor,
        new java.lang.String[] { "Hard", "Used", });
    internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_HardEntry_descriptor =
      internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_HardEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_HardEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_UsedEntry_descriptor =
      internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_descriptor.getNestedTypes().get(1);
    internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_UsedEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceQuotaStatus_UsedEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_ResourceRequirements_descriptor =
      getDescriptor().getMessageTypes().get(176);
    internal_static_k8s_io_api_core_v1_ResourceRequirements_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceRequirements_descriptor,
        new java.lang.String[] { "Limits", "Requests", "Claims", });
    internal_static_k8s_io_api_core_v1_ResourceRequirements_LimitsEntry_descriptor =
      internal_static_k8s_io_api_core_v1_ResourceRequirements_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_ResourceRequirements_LimitsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceRequirements_LimitsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_ResourceRequirements_RequestsEntry_descriptor =
      internal_static_k8s_io_api_core_v1_ResourceRequirements_descriptor.getNestedTypes().get(1);
    internal_static_k8s_io_api_core_v1_ResourceRequirements_RequestsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ResourceRequirements_RequestsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_SELinuxOptions_descriptor =
      getDescriptor().getMessageTypes().get(177);
    internal_static_k8s_io_api_core_v1_SELinuxOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SELinuxOptions_descriptor,
        new java.lang.String[] { "User", "Role", "Type", "Level", });
    internal_static_k8s_io_api_core_v1_ScaleIOPersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(178);
    internal_static_k8s_io_api_core_v1_ScaleIOPersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ScaleIOPersistentVolumeSource_descriptor,
        new java.lang.String[] { "Gateway", "System", "SecretRef", "SslEnabled", "ProtectionDomain", "StoragePool", "StorageMode", "VolumeName", "FsType", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_ScaleIOVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(179);
    internal_static_k8s_io_api_core_v1_ScaleIOVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ScaleIOVolumeSource_descriptor,
        new java.lang.String[] { "Gateway", "System", "SecretRef", "SslEnabled", "ProtectionDomain", "StoragePool", "StorageMode", "VolumeName", "FsType", "ReadOnly", });
    internal_static_k8s_io_api_core_v1_ScopeSelector_descriptor =
      getDescriptor().getMessageTypes().get(180);
    internal_static_k8s_io_api_core_v1_ScopeSelector_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ScopeSelector_descriptor,
        new java.lang.String[] { "MatchExpressions", });
    internal_static_k8s_io_api_core_v1_ScopedResourceSelectorRequirement_descriptor =
      getDescriptor().getMessageTypes().get(181);
    internal_static_k8s_io_api_core_v1_ScopedResourceSelectorRequirement_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ScopedResourceSelectorRequirement_descriptor,
        new java.lang.String[] { "ScopeName", "Operator", "Values", });
    internal_static_k8s_io_api_core_v1_SeccompProfile_descriptor =
      getDescriptor().getMessageTypes().get(182);
    internal_static_k8s_io_api_core_v1_SeccompProfile_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SeccompProfile_descriptor,
        new java.lang.String[] { "Type", "LocalhostProfile", });
    internal_static_k8s_io_api_core_v1_Secret_descriptor =
      getDescriptor().getMessageTypes().get(183);
    internal_static_k8s_io_api_core_v1_Secret_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Secret_descriptor,
        new java.lang.String[] { "Metadata", "Immutable", "Data", "StringData", "Type", });
    internal_static_k8s_io_api_core_v1_Secret_DataEntry_descriptor =
      internal_static_k8s_io_api_core_v1_Secret_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_Secret_DataEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Secret_DataEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_Secret_StringDataEntry_descriptor =
      internal_static_k8s_io_api_core_v1_Secret_descriptor.getNestedTypes().get(1);
    internal_static_k8s_io_api_core_v1_Secret_StringDataEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Secret_StringDataEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_SecretEnvSource_descriptor =
      getDescriptor().getMessageTypes().get(184);
    internal_static_k8s_io_api_core_v1_SecretEnvSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SecretEnvSource_descriptor,
        new java.lang.String[] { "LocalObjectReference", "Optional", });
    internal_static_k8s_io_api_core_v1_SecretKeySelector_descriptor =
      getDescriptor().getMessageTypes().get(185);
    internal_static_k8s_io_api_core_v1_SecretKeySelector_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SecretKeySelector_descriptor,
        new java.lang.String[] { "LocalObjectReference", "Key", "Optional", });
    internal_static_k8s_io_api_core_v1_SecretList_descriptor =
      getDescriptor().getMessageTypes().get(186);
    internal_static_k8s_io_api_core_v1_SecretList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SecretList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_SecretProjection_descriptor =
      getDescriptor().getMessageTypes().get(187);
    internal_static_k8s_io_api_core_v1_SecretProjection_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SecretProjection_descriptor,
        new java.lang.String[] { "LocalObjectReference", "Items", "Optional", });
    internal_static_k8s_io_api_core_v1_SecretReference_descriptor =
      getDescriptor().getMessageTypes().get(188);
    internal_static_k8s_io_api_core_v1_SecretReference_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SecretReference_descriptor,
        new java.lang.String[] { "Name", "Namespace", });
    internal_static_k8s_io_api_core_v1_SecretVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(189);
    internal_static_k8s_io_api_core_v1_SecretVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SecretVolumeSource_descriptor,
        new java.lang.String[] { "SecretName", "Items", "DefaultMode", "Optional", });
    internal_static_k8s_io_api_core_v1_SecurityContext_descriptor =
      getDescriptor().getMessageTypes().get(190);
    internal_static_k8s_io_api_core_v1_SecurityContext_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SecurityContext_descriptor,
        new java.lang.String[] { "Capabilities", "Privileged", "SeLinuxOptions", "WindowsOptions", "RunAsUser", "RunAsGroup", "RunAsNonRoot", "ReadOnlyRootFilesystem", "AllowPrivilegeEscalation", "ProcMount", "SeccompProfile", "AppArmorProfile", });
    internal_static_k8s_io_api_core_v1_SerializedReference_descriptor =
      getDescriptor().getMessageTypes().get(191);
    internal_static_k8s_io_api_core_v1_SerializedReference_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SerializedReference_descriptor,
        new java.lang.String[] { "Reference", });
    internal_static_k8s_io_api_core_v1_Service_descriptor =
      getDescriptor().getMessageTypes().get(192);
    internal_static_k8s_io_api_core_v1_Service_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Service_descriptor,
        new java.lang.String[] { "Metadata", "Spec", "Status", });
    internal_static_k8s_io_api_core_v1_ServiceAccount_descriptor =
      getDescriptor().getMessageTypes().get(193);
    internal_static_k8s_io_api_core_v1_ServiceAccount_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ServiceAccount_descriptor,
        new java.lang.String[] { "Metadata", "Secrets", "ImagePullSecrets", "AutomountServiceAccountToken", });
    internal_static_k8s_io_api_core_v1_ServiceAccountList_descriptor =
      getDescriptor().getMessageTypes().get(194);
    internal_static_k8s_io_api_core_v1_ServiceAccountList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ServiceAccountList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_ServiceAccountTokenProjection_descriptor =
      getDescriptor().getMessageTypes().get(195);
    internal_static_k8s_io_api_core_v1_ServiceAccountTokenProjection_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ServiceAccountTokenProjection_descriptor,
        new java.lang.String[] { "Audience", "ExpirationSeconds", "Path", });
    internal_static_k8s_io_api_core_v1_ServiceList_descriptor =
      getDescriptor().getMessageTypes().get(196);
    internal_static_k8s_io_api_core_v1_ServiceList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ServiceList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_core_v1_ServicePort_descriptor =
      getDescriptor().getMessageTypes().get(197);
    internal_static_k8s_io_api_core_v1_ServicePort_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ServicePort_descriptor,
        new java.lang.String[] { "Name", "Protocol", "AppProtocol", "Port", "TargetPort", "NodePort", });
    internal_static_k8s_io_api_core_v1_ServiceProxyOptions_descriptor =
      getDescriptor().getMessageTypes().get(198);
    internal_static_k8s_io_api_core_v1_ServiceProxyOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ServiceProxyOptions_descriptor,
        new java.lang.String[] { "Path", });
    internal_static_k8s_io_api_core_v1_ServiceSpec_descriptor =
      getDescriptor().getMessageTypes().get(199);
    internal_static_k8s_io_api_core_v1_ServiceSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ServiceSpec_descriptor,
        new java.lang.String[] { "Ports", "Selector", "ClusterIP", "ClusterIPs", "Type", "ExternalIPs", "SessionAffinity", "LoadBalancerIP", "LoadBalancerSourceRanges", "ExternalName", "ExternalTrafficPolicy", "HealthCheckNodePort", "PublishNotReadyAddresses", "SessionAffinityConfig", "IpFamilies", "IpFamilyPolicy", "AllocateLoadBalancerNodePorts", "LoadBalancerClass", "InternalTrafficPolicy", "TrafficDistribution", });
    internal_static_k8s_io_api_core_v1_ServiceSpec_SelectorEntry_descriptor =
      internal_static_k8s_io_api_core_v1_ServiceSpec_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_ServiceSpec_SelectorEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ServiceSpec_SelectorEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_ServiceStatus_descriptor =
      getDescriptor().getMessageTypes().get(200);
    internal_static_k8s_io_api_core_v1_ServiceStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_ServiceStatus_descriptor,
        new java.lang.String[] { "LoadBalancer", "Conditions", });
    internal_static_k8s_io_api_core_v1_SessionAffinityConfig_descriptor =
      getDescriptor().getMessageTypes().get(201);
    internal_static_k8s_io_api_core_v1_SessionAffinityConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SessionAffinityConfig_descriptor,
        new java.lang.String[] { "ClientIP", });
    internal_static_k8s_io_api_core_v1_SleepAction_descriptor =
      getDescriptor().getMessageTypes().get(202);
    internal_static_k8s_io_api_core_v1_SleepAction_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_SleepAction_descriptor,
        new java.lang.String[] { "Seconds", });
    internal_static_k8s_io_api_core_v1_StorageOSPersistentVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(203);
    internal_static_k8s_io_api_core_v1_StorageOSPersistentVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_StorageOSPersistentVolumeSource_descriptor,
        new java.lang.String[] { "VolumeName", "VolumeNamespace", "FsType", "ReadOnly", "SecretRef", });
    internal_static_k8s_io_api_core_v1_StorageOSVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(204);
    internal_static_k8s_io_api_core_v1_StorageOSVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_StorageOSVolumeSource_descriptor,
        new java.lang.String[] { "VolumeName", "VolumeNamespace", "FsType", "ReadOnly", "SecretRef", });
    internal_static_k8s_io_api_core_v1_Sysctl_descriptor =
      getDescriptor().getMessageTypes().get(205);
    internal_static_k8s_io_api_core_v1_Sysctl_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Sysctl_descriptor,
        new java.lang.String[] { "Name", "Value", });
    internal_static_k8s_io_api_core_v1_TCPSocketAction_descriptor =
      getDescriptor().getMessageTypes().get(206);
    internal_static_k8s_io_api_core_v1_TCPSocketAction_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_TCPSocketAction_descriptor,
        new java.lang.String[] { "Port", "Host", });
    internal_static_k8s_io_api_core_v1_Taint_descriptor =
      getDescriptor().getMessageTypes().get(207);
    internal_static_k8s_io_api_core_v1_Taint_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Taint_descriptor,
        new java.lang.String[] { "Key", "Value", "Effect", "TimeAdded", });
    internal_static_k8s_io_api_core_v1_Toleration_descriptor =
      getDescriptor().getMessageTypes().get(208);
    internal_static_k8s_io_api_core_v1_Toleration_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Toleration_descriptor,
        new java.lang.String[] { "Key", "Operator", "Value", "Effect", "TolerationSeconds", });
    internal_static_k8s_io_api_core_v1_TopologySelectorLabelRequirement_descriptor =
      getDescriptor().getMessageTypes().get(209);
    internal_static_k8s_io_api_core_v1_TopologySelectorLabelRequirement_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_TopologySelectorLabelRequirement_descriptor,
        new java.lang.String[] { "Key", "Values", });
    internal_static_k8s_io_api_core_v1_TopologySelectorTerm_descriptor =
      getDescriptor().getMessageTypes().get(210);
    internal_static_k8s_io_api_core_v1_TopologySelectorTerm_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_TopologySelectorTerm_descriptor,
        new java.lang.String[] { "MatchLabelExpressions", });
    internal_static_k8s_io_api_core_v1_TopologySpreadConstraint_descriptor =
      getDescriptor().getMessageTypes().get(211);
    internal_static_k8s_io_api_core_v1_TopologySpreadConstraint_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_TopologySpreadConstraint_descriptor,
        new java.lang.String[] { "MaxSkew", "TopologyKey", "WhenUnsatisfiable", "LabelSelector", "MinDomains", "NodeAffinityPolicy", "NodeTaintsPolicy", "MatchLabelKeys", });
    internal_static_k8s_io_api_core_v1_TypedLocalObjectReference_descriptor =
      getDescriptor().getMessageTypes().get(212);
    internal_static_k8s_io_api_core_v1_TypedLocalObjectReference_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_TypedLocalObjectReference_descriptor,
        new java.lang.String[] { "ApiGroup", "Kind", "Name", });
    internal_static_k8s_io_api_core_v1_TypedObjectReference_descriptor =
      getDescriptor().getMessageTypes().get(213);
    internal_static_k8s_io_api_core_v1_TypedObjectReference_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_TypedObjectReference_descriptor,
        new java.lang.String[] { "ApiGroup", "Kind", "Name", "Namespace", });
    internal_static_k8s_io_api_core_v1_Volume_descriptor =
      getDescriptor().getMessageTypes().get(214);
    internal_static_k8s_io_api_core_v1_Volume_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_Volume_descriptor,
        new java.lang.String[] { "Name", "VolumeSource", });
    internal_static_k8s_io_api_core_v1_VolumeDevice_descriptor =
      getDescriptor().getMessageTypes().get(215);
    internal_static_k8s_io_api_core_v1_VolumeDevice_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_VolumeDevice_descriptor,
        new java.lang.String[] { "Name", "DevicePath", });
    internal_static_k8s_io_api_core_v1_VolumeMount_descriptor =
      getDescriptor().getMessageTypes().get(216);
    internal_static_k8s_io_api_core_v1_VolumeMount_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_VolumeMount_descriptor,
        new java.lang.String[] { "Name", "ReadOnly", "RecursiveReadOnly", "MountPath", "SubPath", "MountPropagation", "SubPathExpr", });
    internal_static_k8s_io_api_core_v1_VolumeMountStatus_descriptor =
      getDescriptor().getMessageTypes().get(217);
    internal_static_k8s_io_api_core_v1_VolumeMountStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_VolumeMountStatus_descriptor,
        new java.lang.String[] { "Name", "MountPath", "ReadOnly", "RecursiveReadOnly", });
    internal_static_k8s_io_api_core_v1_VolumeNodeAffinity_descriptor =
      getDescriptor().getMessageTypes().get(218);
    internal_static_k8s_io_api_core_v1_VolumeNodeAffinity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_VolumeNodeAffinity_descriptor,
        new java.lang.String[] { "Required", });
    internal_static_k8s_io_api_core_v1_VolumeProjection_descriptor =
      getDescriptor().getMessageTypes().get(219);
    internal_static_k8s_io_api_core_v1_VolumeProjection_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_VolumeProjection_descriptor,
        new java.lang.String[] { "Secret", "DownwardAPI", "ConfigMap", "ServiceAccountToken", "ClusterTrustBundle", });
    internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_descriptor =
      getDescriptor().getMessageTypes().get(220);
    internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_descriptor,
        new java.lang.String[] { "Limits", "Requests", });
    internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_LimitsEntry_descriptor =
      internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_LimitsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_LimitsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_RequestsEntry_descriptor =
      internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_descriptor.getNestedTypes().get(1);
    internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_RequestsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_VolumeResourceRequirements_RequestsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_core_v1_VolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(221);
    internal_static_k8s_io_api_core_v1_VolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_VolumeSource_descriptor,
        new java.lang.String[] { "HostPath", "EmptyDir", "GcePersistentDisk", "AwsElasticBlockStore", "GitRepo", "Secret", "Nfs", "Iscsi", "Glusterfs", "PersistentVolumeClaim", "Rbd", "FlexVolume", "Cinder", "Cephfs", "Flocker", "DownwardAPI", "Fc", "AzureFile", "ConfigMap", "VsphereVolume", "Quobyte", "AzureDisk", "PhotonPersistentDisk", "Projected", "PortworxVolume", "ScaleIO", "Storageos", "Csi", "Ephemeral", });
    internal_static_k8s_io_api_core_v1_VsphereVirtualDiskVolumeSource_descriptor =
      getDescriptor().getMessageTypes().get(222);
    internal_static_k8s_io_api_core_v1_VsphereVirtualDiskVolumeSource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_VsphereVirtualDiskVolumeSource_descriptor,
        new java.lang.String[] { "VolumePath", "FsType", "StoragePolicyName", "StoragePolicyID", });
    internal_static_k8s_io_api_core_v1_WeightedPodAffinityTerm_descriptor =
      getDescriptor().getMessageTypes().get(223);
    internal_static_k8s_io_api_core_v1_WeightedPodAffinityTerm_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_WeightedPodAffinityTerm_descriptor,
        new java.lang.String[] { "Weight", "PodAffinityTerm", });
    internal_static_k8s_io_api_core_v1_WindowsSecurityContextOptions_descriptor =
      getDescriptor().getMessageTypes().get(224);
    internal_static_k8s_io_api_core_v1_WindowsSecurityContextOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_core_v1_WindowsSecurityContextOptions_descriptor,
        new java.lang.String[] { "GmsaCredentialSpecName", "GmsaCredentialSpec", "RunAsUserName", "HostProcess", });
    descriptor.resolveAllFeaturesImmutable();
    io.kubernetes.client.proto.Resource.getDescriptor();
    io.kubernetes.client.proto.Meta.getDescriptor();
    io.kubernetes.client.proto.Runtime.getDescriptor();
    io.kubernetes.client.proto.RuntimeSchema.getDescriptor();
    io.kubernetes.client.proto.IntStr.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
